Criar Cobrança PIX

O PIX é um método de pagamento instantâneo que permite receber pagamentos em segundos.

Endpoint

POST /v1/charges

Parâmetros

Parâmetro Tipo Obrigatório Descrição
amount integer Sim Valor em centavos (ex: 10000 = R$ 100,00)
currency string Não Moeda (padrão: BRL)
payment_method string Sim Método de pagamento: "pix"
customer object Não Dados do cliente (opcional - name, email, document, phone)
items array Não Itens da transação (name, quantity, unit_price em centavos)
metadata object Não Metadados customizados (chave-valor)
external_id string Não ID externo para rastreamento
store_id integer Não ID da operação (store) do dashboard. Se não informado, usa a operação padrão do seller.
product_id integer Não ID do produto do dashboard. Opcional, para associar a cobrança a um produto específico.
pix.expires_in integer Não Segundos até expiração (min: 60, max: 86400, padrão: 1800 = 30min)
pix.description string Não Descrição do pagamento (máx: 255 caracteres)
checkout object Não Configuração de checkout redirect (mode: "redirect", success_url, cancel_url)
callback_url string Não URL para receber notificações pontuais desta cobrança (além dos webhooks configurados no dashboard)

Exemplo de Requisição

curl -X POST https://api.apexpy.com.br/v1/charges \
  -H "Authorization: Bearer YOUR_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 10000,
    "currency": "BRL",
    "payment_method": "pix",
    "customer": {
      "name": "João Silva",
      "email": "[email protected]",
      "document": "12345678909",
      "phone": "47999999999"
    },
    "items": [
      {
        "name": "Produto Exemplo",
        "quantity": 1,
        "unit_price": 10000
      }
    ],
    "metadata": {
      "order_id": "12345",
      "source": "api"
    },
    "store_id": 1,
    "product_id": 5,
    "pix": {
      "expires_in": 1800,
      "description": "Pagamento de exemplo"
    },
    "callback_url": "https://seusite.com.br/webhook/order-12345"
  }'

Exemplo de Resposta

{
  "success": true,
  "data": {
    "id": "ci_123",
    "status": "pending",
    "amount": 10000,
    "currency": "BRL",
    "payment_method": "pix",
    "pix": {
      "txid": "E12345678202511281234567890123456",
      "emv": "00020126580014br.gov.bcb.pix0136123e4567-e12b-12d1-a456-4266554400005204000053039865802BR5913FULANO DE TAL6008BRASILIA62070503***63041D3D",
      "qr_code_image_url": "https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=00020126580014br.gov.bcb.pix...",
      "expires_at": "2025-11-28T21:00:00Z"
    },
    "created_at": "2025-11-28T20:30:00Z"
  }
}

Campos da Resposta PIX

Campo Tipo Descrição
txid string Transaction ID (TXID) retornado pela adquirente. Identificador único da transação PIX no sistema bancário.
emv string Código PIX copia e cola retornado pela adquirente. Este é o código completo que o cliente pode copiar e colar no app do banco para pagar. Sempre presente.
qr_code_image_url string (opcional) URL da imagem do QR Code. Pode vir da adquirente ou ser gerada automaticamente pela ApexPy usando o código EMV. Opcional - você pode gerar o QR Code localmente usando o campo emv.
expires_at string Data e hora de expiração do código PIX (ISO 8601).

Como Usar o Código PIX

Você tem duas opções para exibir o QR Code ao cliente:

Opção 1: Usar a URL da Imagem (se disponível)

Se o campo qr_code_image_url estiver presente na resposta, você pode exibir diretamente:

<img src="{qr_code_image_url}" alt="QR Code PIX" />

Opção 2: Gerar QR Code Localmente (Recomendado)

Use o campo emv para gerar o QR Code no seu frontend usando uma biblioteca JavaScript:

// Exemplo com qrcode.js
import QRCode from 'qrcode';

const qrCodeDataUrl = await QRCode.toDataURL(charge.pix.emv);
// Exibir a imagem gerada

Vantagens de gerar localmente:

Opção 3: Copiar e Colar

O campo emv contém o código completo que pode ser copiado e colado diretamente no app do banco. Sempre forneça esta opção ao cliente.

Status da Cobrança

Consultar Status

GET /v1/charges/{id}

Split de Pagamento

Você pode dividir o recebimento entre múltiplos sellers usando o campo split na requisição. A taxa de Cash In é calculada uma vez e cobrada do seller principal, enquanto os sellers no split recebem o valor líquido proporcional.

Saiba mais sobre Split de Pagamento →