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

# Create Payment

> Cria um pagamento e retorna os dados para o cliente pagar. Suporta PIX (padrão) e LTC (Litecoin) via `paymentMethod`. Envie `productId` (o preço vem do produto) ou `valueCents` (valor avulso em centavos); se ambos forem enviados, o preço do produto prevalece. Pagamentos LTC não estão disponíveis no sandbox. Se `callbackUrl` for informado, um webhook `payment.paid` assinado com HMAC-SHA256 (header `X-Webhook-Signature`) é enviado quando o pagamento for confirmado.



## OpenAPI

````yaml /api-reference/openapi.yaml post /v1/payments
openapi: 3.1.0
info:
  title: PurinCash API
  version: 1.0.0
servers:
  - url: https://api.purincash.com
    description: Produção
security:
  - bearerAuth: []
tags:
  - name: Cartao
    description: Pagamentos no cartao de credito.
  - name: Cobrancas
    description: Cobrancas PIX avulsas com valor livre.
  - name: Entregas
    description: Conteudo entregue automaticamente apos o pagamento.
  - name: Disputas
    description: Contestacoes (MED) e envio de evidencias.
  - name: Pagamentos
    description: Pagamentos PIX e LTC vinculados ou nao a um produto.
  - name: Saques
    description: Saques em PIX, LTC e USDT.
  - name: Produtos
    description: Produtos de cobranca criados pela API.
  - name: Sandbox
    description: Simulacao de pagamentos e saldo de teste.
  - name: Splits
    description: Cobrancas divididas entre varias contas.
  - name: Loja
    description: Produtos da loja do Discord (somente leitura).
  - name: Assinaturas
    description: PIX recorrente.
  - name: Carteira
    description: Saldo, retencoes e valores a liberar.
paths:
  /v1/payments:
    post:
      tags:
        - Pagamentos
      summary: Create Payment
      description: >-
        Cria um pagamento e retorna os dados para o cliente pagar. Suporta PIX
        (padrão) e LTC (Litecoin) via `paymentMethod`. Envie `productId` (o
        preço vem do produto) ou `valueCents` (valor avulso em centavos); se
        ambos forem enviados, o preço do produto prevalece. Pagamentos LTC não
        estão disponíveis no sandbox. Se `callbackUrl` for informado, um webhook
        `payment.paid` assinado com HMAC-SHA256 (header `X-Webhook-Signature`) é
        enviado quando o pagamento for confirmado.
      operationId: createPayment
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: Envie productId ou valueCents — um dos dois é obrigatório.
              properties:
                productId:
                  type: string
                  description: >-
                    ID (ObjectId) de um produto ativo. O valor do pagamento vem
                    do preço do produto. Obrigatório se valueCents não for
                    enviado. Produtos em moeda diferente de BRL são convertidos
                    automaticamente para BRL na cobrança.
                valueCents:
                  type: integer
                  minimum: 80
                  description: >-
                    Valor em centavos (inteiro maior ou igual a 80, ou seja, R$
                    0,80). Obrigatório se productId não for enviado.
                paymentMethod:
                  type: string
                  enum:
                    - pix
                    - ltc
                  default: pix
                  description: >-
                    Método de pagamento. "pix" (padrão) gera um BR Code PIX;
                    "ltc" gera um endereço Litecoin com o valor convertido pela
                    cotação atual. LTC não está disponível no modo sandbox.
                description:
                  type: string
                  maxLength: 200
                  description: >-
                    Descrição do pagamento (máx. 200 caracteres). Usada como
                    nome do pagamento quando não há productId. Padrão
                    "Pagamento".
                callbackUrl:
                  type: string
                  format: uri
                  maxLength: 500
                  description: >-
                    URL HTTPS pública (máx. 500 caracteres) que recebe um POST
                    com o evento payment.paid quando o pagamento é confirmado,
                    assinado com HMAC-SHA256 no header X-Webhook-Signature.
                customer:
                  type: object
                  description: Dados do cliente (opcional).
                  properties:
                    name:
                      type: string
                      maxLength: 100
                      description: Nome do cliente (máx. 100 caracteres).
                    email:
                      type: string
                      maxLength: 255
                      description: E-mail do cliente (máx. 255 caracteres).
                    externalId:
                      type: string
                      maxLength: 200
                      description: >-
                        Identificador do cliente no seu sistema (máx. 200
                        caracteres).
                metadata:
                  type: string
                  maxLength: 2048
                  description: >-
                    String JSON livre (máx. 2048 caracteres), devolvida nas
                    consultas e no webhook.
                supplier:
                  type: object
                  description: >-
                    Vínculo opcional com produto de fornecedor (split). O valor
                    é dividido entre a loja e o fornecedor conforme o split
                    configurado, e o conteúdo é entregue automaticamente após o
                    pagamento.
                  properties:
                    productId:
                      type: string
                      description: ID público do produto no painel (prefixo prod_).
                    variationIndex:
                      type: integer
                      default: 0
                      description: >-
                        Índice da variação do produto (0 = primeira, 1 =
                        segunda, etc.).
            example:
              valueCents: 4990
              paymentMethod: pix
              description: Premium Plan
              callbackUrl: https://seu-site.com/webhook
              customer:
                name: Joao Silva
                email: joao@email.com
                externalId: user_123
              metadata: '{"orderId": "abc-123"}'
      responses:
        '200':
          description: >-
            Pagamento criado com sucesso. A resposta PIX traz o objeto pix (BR
            Code); a resposta LTC traz o objeto ltc (endereço e valor em
            Litecoin).
          content:
            application/json:
              schema:
                oneOf:
                  - title: Pagamento PIX
                    type: object
                    description: Resposta quando paymentMethod é "pix" (padrão).
                    properties:
                      paymentId:
                        type: string
                        description: Identificador único do pagamento (prefixo psa_).
                      status:
                        type: string
                        enum:
                          - pending
                          - paid
                          - expired
                          - refunded
                        description: Status do pagamento. Sempre "pending" na criação.
                      type:
                        type: string
                        enum:
                          - one_time
                          - subscription
                        description: >-
                          Tipo do pagamento ("one_time" para pagamentos
                          avulsos).
                      paymentMethod:
                        type: string
                        enum:
                          - pix
                        description: Método de pagamento utilizado.
                      amountCents:
                        type: integer
                        description: Valor cobrado em centavos (BRL).
                      currency:
                        type: string
                        description: >-
                          Moeda do produto (padrão BRL). A cobrança PIX é sempre
                          em BRL.
                      productName:
                        type: string
                        description: Nome do produto vinculado ou a descrição enviada.
                      environment:
                        type: string
                        enum:
                          - live
                          - sandbox
                        description: Ambiente da chave de API utilizada.
                      pix:
                        type: object
                        description: Dados do PIX gerado.
                        properties:
                          brCode:
                            type: string
                            description: Código PIX copia-e-cola (BR Code).
                          qrCodeImage:
                            type:
                              - string
                              - 'null'
                            description: URL da imagem do QR code, quando disponível.
                      expiresAt:
                        type: string
                        format: date-time
                        description: Expiração do pagamento (30 minutos após a criação).
                  - title: Pagamento LTC
                    type: object
                    description: Resposta quando paymentMethod é "ltc".
                    properties:
                      paymentId:
                        type: string
                        description: Identificador único do pagamento (prefixo psa_).
                      status:
                        type: string
                        enum:
                          - pending
                          - paid
                          - expired
                          - refunded
                        description: Status do pagamento. Sempre "pending" na criação.
                      type:
                        type: string
                        enum:
                          - one_time
                          - subscription
                        description: >-
                          Tipo do pagamento ("one_time" para pagamentos
                          avulsos).
                      paymentMethod:
                        type: string
                        enum:
                          - ltc
                        description: Método de pagamento utilizado.
                      amountCents:
                        type: integer
                        description: Valor cobrado em centavos (BRL).
                      currency:
                        type: string
                        description: Moeda do produto (padrão BRL).
                      productName:
                        type: string
                        description: Nome do produto vinculado ou a descrição enviada.
                      environment:
                        type: string
                        enum:
                          - live
                          - sandbox
                        description: >-
                          Ambiente da chave de API utilizada (LTC disponível
                          apenas em live).
                      ltc:
                        type: object
                        description: Dados do pagamento em Litecoin.
                        properties:
                          address:
                            type: string
                            description: Endereço LTC para envio do pagamento.
                          amount:
                            type: number
                            description: >-
                              Valor exato em LTC a ser enviado (8 casas
                              decimais, inclui sufixo aleatório de
                              identificação).
                          amountBrl:
                            type: number
                            description: Valor equivalente em reais (BRL).
                          ltcPriceBrl:
                            type: number
                            description: Cotação LTC/BRL usada na conversão.
                      expiresAt:
                        type: string
                        format: date-time
                        description: Expiração do pagamento (25 minutos após a criação).
              examples:
                pix:
                  summary: Resposta PIX
                  value:
                    paymentId: psa_a1b2c3d4e5f6...
                    status: pending
                    type: one_time
                    paymentMethod: pix
                    amountCents: 4990
                    currency: BRL
                    productName: Premium Plan
                    environment: live
                    pix:
                      brCode: 00020126580014br.gov.bcb.pix0136...
                      qrCodeImage: https://qr.exemplo.com/psa_a1b2c3d4e5f6.png
                    expiresAt: '2026-03-18T12:30:00.000Z'
                ltc:
                  summary: Resposta LTC
                  value:
                    paymentId: psa_a1b2c3d4e5f6...
                    status: pending
                    type: one_time
                    paymentMethod: ltc
                    amountCents: 4990
                    currency: BRL
                    productName: Premium Plan
                    environment: live
                    ltc:
                      address: LNxziNbcLNFqW6hCv7yeAcQG2iLTdMyG86
                      amount: 0.14054997
                      amountBrl: 49.9
                      ltcPriceBrl: 355.12
                    expiresAt: '2026-03-18T12:55:00.000Z'
        '400':
          description: >-
            Parâmetro inválido — ex. valueCents menor que 80, paymentMethod
            diferente de "pix"/"ltc", callbackUrl não HTTPS ou pagamento LTC em
            sandbox.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: valueCents must be >= 80 (R$ 0.80), or provide productId
        '401':
          description: Chave de API ausente, inválida ou revogada.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: Invalid or revoked API key
        '403':
          description: >-
            Loja não verificada ou sem acesso aprovado ao fornecedor informado
            em supplier.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Produto não encontrado ou inativo.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: Product not found or inactive
        '502':
          description: >-
            Falha no gateway de pagamento (criação da cobrança PIX ou cotação
            LTC indisponível).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: Carteira LTC não configurada para esta loja.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: LTC wallet not configured for this store
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
          description: >-
            Mensagem de erro legivel. Trate pelo codigo HTTP; o texto pode
            mudar.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Chave de API gerada no dashboard da PurinCash (ps_live_ ou ps_test_).

````