Pular para o conteúdo
LeonaPayLeonaPayDevelopers
Primeiros passosReferenciais da APIIntegraçõesv2
Brasil · BRL

PIX

Receba pagamentos com PIX usando o endpoint unificado da LeonaPay.

Visão geral

Use POST /api/v2/payments com method: PIX. O valor deve ser positivo e a moeda deve corresponder ao mercado.
CampoValor
MétodoPIX
MercadoBrasil
MoedasBRL
ConfirmaçãoSíncrona ou por webhook

Criar pagamento PIX

Envie uma referência única do seu pedido. Campos específicos do método aparecem abaixo.
O campo qrCode contém o código PIX copia e cola. A confirmação definitiva do pagamento é enviada por webhook.
curl --request POST \
+  --url https://api.leonapay.com.br/api/v2/payments \
+  --header 'Accept: application/json' \
+  --header 'Content-Type: application/json' \
+  --header 'x-api-key: {your_api_key}' \
+  --header 'idempotency-key: {unique_uuid_per_payment}' \
  --data '{
  "method": "PIX",
  "amount": 125.90,
  "currency": "BRL",
  "reference": "pedido-123",
  "payer": { "name": "Ana Souza", "taxId": "12345678909" },
  "expiresIn": 900
}'

Como simular o resultado no Sandbox

Crie o pagamento usando a chave e a Base URL do Sandbox. PIX, boleto, SPEI, MB WAY, transferências bancárias, PSE, Nequi e Bre-B permanecem aguardando até você enviar o resultado desejado ao endpoint de simulação. Use o ID retornado na criação do pagamento.
Troque PAID por FAILED ou EXPIRED para testar os outros cenários. A simulação aceita somente pagamentos da mesma empresa e do ambiente Sandbox.
StatusResultado simulado
PAIDPagamento confirmado e webhook payment.paid emitido
FAILEDPagamento recusado e webhook payment.failed emitido
EXPIREDCobrança expirada e webhook payment.expired emitido
curl --request POST \
  --url https://sandbox.api.leonapay.com.br/api/v2/simulations/payments/{paymentId} \
  --header 'x-api-key: {sandbox_api_key}' \
  --header 'Content-Type: application/json' \
  --data '{"status":"PAID"}'

Erros e retentativas de PIX

Toda falha inclui error.code, error.retryable, error.requestId e um link direto para a referência. Corrija erros ONP400 antes de criar uma nova tentativa. Para ONP502, ONP503 ou ONP429, repita exatamente a mesma requisição com a mesma chave de idempotência após retryAfter.
No painel, Integrações → Logs da API · 24h mostra a resposta pública e a tratativa pelo requestId, sem expor a liquidante usada.
CódigoInterpretaçãoAção
ONP400_*Campo, moeda ou regra do método inválidaCorrigir o campo indicado em error.field
ONP422_PIX_REJECTEDOperação recusada de forma definitivaRevisar os dados e criar nova tentativa
ONP502_PIX_INVALID_RESPONSEInstruções de pagamento incompletasRetentar com a mesma idempotência
ONP503_PIX_TEMPORARILY_UNAVAILABLEMétodo temporariamente indisponívelBackoff com jitter e mesma idempotência

Resposta

Uma criação aceita retorna HTTP 201. O status inicial pode ser ACTION_REQUIRED, PENDING, AUTHORIZED ou PAID.
{
  "success": true,
  "onpayCode": "ONP201",
  "onpayDescription": "Payment created",
  "data": {
    "id": "pay_01J5VX8M8W8W6Q",
    "reference": "pedido-123",
    "status": "PENDING",
    "method": "PIX",
    "currency": "BRL",
    "amount": 125.90,
    "fee": 1.75,
    "customer": {
      "id": "cus_01J5VY2Q8G4K9D",
      "name": "Ana Souza",
      "email": null,
      "phone": null,
      "taxId": "12345678909"
    },
    "qrCode": "00020101021226880014br.gov.bcb.pix...",
    "paidAt": null,
    "createdAt": "2026-08-25T01:04:23.295Z",
    "updatedAt": "2026-08-25T01:04:24.738Z"
  }
}

Ciclo da transação

Não conclua o pedido apenas pelo retorno do navegador. Consulte a API ou espere o evento assinado payment.paid.
StatusDescrição
ACTION_REQUIREDAguardando confirmação ou autenticação 3DS
PENDINGAguardando ação ou confirmação
AUTHORIZEDAutorizado, aguardando conclusão
PAIDPagamento confirmado
FAILEDFalha no processamento
EXPIREDPrazo encerrado
REFUNDEDValor estornado
LeonaPay Developers · API v2