> ## 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 Charge

> Cria uma cobrança PIX avulsa com valor customizado, sem produto vinculado. Retorna o BR Code (copia-e-cola) e a imagem do QR code para pagamento. Se `callbackUrl` for informado, um webhook `charge.paid` assinado com HMAC-SHA256 (header `X-Webhook-Signature`) é enviado quando o pagamento for confirmado. Para dividir a cobrança entre contas PurinCash, use o recurso Split Charges (POST /v1/split-charges).



## OpenAPI

````yaml /api-reference/openapi.yaml post /v1/charges
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/charges:
    post:
      tags:
        - Cobrancas
      summary: Create Charge
      description: >-
        Cria uma cobrança PIX avulsa com valor customizado, sem produto
        vinculado. Retorna o BR Code (copia-e-cola) e a imagem do QR code para
        pagamento. Se `callbackUrl` for informado, um webhook `charge.paid`
        assinado com HMAC-SHA256 (header `X-Webhook-Signature`) é enviado quando
        o pagamento for confirmado. Para dividir a cobrança entre contas
        PurinCash, use o recurso Split Charges (POST /v1/split-charges).
      operationId: createCharge
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - valueCents
              properties:
                valueCents:
                  type: integer
                  minimum: 80
                  description: >-
                    Valor da cobrança em centavos (inteiro maior ou igual a 80,
                    ou seja, R$ 0,80).
                description:
                  type: string
                  maxLength: 200
                  description: >-
                    Descrição da cobrança (máx. 200 caracteres). Padrão
                    "Pagamento PIX".
                callbackUrl:
                  type: string
                  format: uri
                  maxLength: 500
                  description: >-
                    URL HTTPS pública (máx. 500 caracteres) que recebe um POST
                    com o evento charge.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.
                  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: 1200
              description: Pagamento PIX
              callbackUrl: https://seu-site.com/webhook
              customer:
                name: Joao Silva
                email: joao@email.com
                externalId: user_123
              metadata: '{"orderId": "abc-123"}'
      responses:
        '201':
          description: Cobrança criada com sucesso.
          content:
            application/json:
              schema:
                type: object
                properties:
                  paymentId:
                    type: string
                    description: Identificador único da cobrança (prefixo psc_).
                  status:
                    type: string
                    enum:
                      - pending
                      - paid
                      - expired
                      - refunded
                    description: Status da cobrança. Sempre "pending" na criação.
                  amountCents:
                    type: integer
                    description: Valor da cobrança em centavos.
                  currency:
                    type: string
                    description: Moeda da cobrança (sempre BRL).
                  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 da cobrança (30 minutos após a criação).
              example:
                paymentId: psc_a1b2c3d4e5f6...
                status: pending
                amountCents: 1200
                currency: BRL
                environment: live
                pix:
                  brCode: 00020126580014br.gov.bcb.pix0136...
                  qrCodeImage: https://qr.exemplo.com/psa_a1b2c3d4e5f6.png
                expiresAt: '2026-03-18T12:30:00.000Z'
        '400':
          description: >-
            Parâmetro inválido — ex. valueCents menor que 80 ou callbackUrl não
            HTTPS.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: valueCents must be >= 80 (R$ 0.80)
        '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 de fornecedor (supplier.productId) não encontrado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: supplier.productId not found
        '502':
          description: Falha ao criar a cobrança PIX no gateway de pagamento.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
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_).

````