> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rivoopay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Criar Link de Pagamento

> Cria um link de pagamento para uma cobrança. Suporta idempotência via header Idempotency-Key.



## OpenAPI

````yaml POST /charge/payment-link
openapi: 3.0.0
info:
  title: payera-api
  description: Documentação de endpoints e entidades da payera
  version: '1.0'
  contact: {}
servers:
  - url: https://api.rivoopay.com
security:
  - ApiKeyAuth: []
paths:
  /charge/payment-link:
    post:
      tags:
        - Charges
      summary: Criar link de pagamento
      description: >-
        Cria um link de pagamento para uma cobrança. Suporta idempotência via
        header Idempotency-Key.
      operationId: ChargeController_create
      parameters:
        - name: Idempotency-Key
          in: header
          description: Chave de Idempotência.
          required: false
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateChargeDto'
      responses:
        '200':
          description: Link de pagamento já existe (resposta cacheada via idempotência)
        '201':
          description: Link de pagamento criado com sucesso
          headers:
            Idempotent-Replayed:
              description: Set to "true" when returning a cached response
              schema:
                type: string
                example: 'true'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChargeResponseDto'
        '400':
          description: Requisição inválida
        '404':
          description: Empresa não encontrada
        '409':
          description: Conflito de idempotência - chave já usada com parâmetros diferentes
components:
  schemas:
    CreateChargeDto:
      type: object
      properties:
        total:
          type: number
          example: 100000
          description: >-
            Valor total em centavos. Mínimo: R$ 5,00 (500 centavos). Se não
            informado, será calculado a partir dos produtos
        customerId:
          type: string
          example: customer_123456
          description: ID do cliente existente
        customer:
          description: Dados do cliente para criar nova conta
          allOf:
            - $ref: '#/components/schemas/CustomerDto'
        successUrl:
          type: string
          example: https://example.com/success
          description: URL de redirecionamento em caso de sucesso
        failedUrl:
          type: string
          example: https://example.com/failed
          description: URL de redirecionamento em caso de falha
        needShipping:
          type: boolean
          example: false
          description: Se precisa de envio
        notifyCustomer:
          type: boolean
          example: true
          description: Se deve notificar o cliente
        devMode:
          type: boolean
          example: false
          description: Se está em modo desenvolvimento
        externalId:
          type: string
          example: ext_123456
          description: ID externo para rastreamento da charge
        items:
          description: Itens da cobrança (opcional)
          type: array
          items:
            $ref: '#/components/schemas/CreateChargeItemDto'
    ChargeResponseDto:
      type: object
      properties:
        status:
          type: number
        message:
          type: string
        data:
          $ref: '#/components/schemas/ChargeDto'
      required:
        - status
        - message
        - data
    CustomerDto:
      type: object
      properties:
        taxId:
          type: string
          example: '12345678901'
          description: CPF ou CNPJ do cliente
        name:
          type: string
          example: João Silva
          description: Nome do cliente
        email:
          type: string
          example: joao@example.com
          description: Email do cliente
        phone:
          type: string
          example: '11999999999'
          description: Telefone do cliente
        postalCode:
          type: string
          example: '01234000'
          description: CEP do cliente
        address:
          type: string
          example: Rua ABC
          description: Endereço do cliente
        district:
          type: string
          example: Centro
          description: Bairro do cliente
        number:
          type: string
          example: '123'
          description: Número do endereço
        line1:
          type: string
          example: Apto 101
          description: Complemento do endereço
      required:
        - taxId
        - name
        - email
        - phone
    CreateChargeItemDto:
      type: object
      properties:
        productId:
          type: string
          example: prod_123456
          description: ID do produto
        quantity:
          type: number
          example: 2
          description: Quantidade do item
      required:
        - productId
    ChargeDto:
      type: object
      properties:
        id:
          type: string
          example: charge_123456
          description: ID da cobrança
        externalId:
          type: object
          example: woovi_123456
          description: ID externo (opcional)
          nullable: true
        url:
          type: string
          example: https://pay.rivoopay.com/c/charge_123456
          description: URL de pagamento
        devMode:
          type: boolean
          example: false
          description: Se está em modo desenvolvimento
        total:
          type: number
          example: 100000
          description: Valor total em centavos
      required:
        - id
        - url
        - devMode
        - total
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY

````