O objeto PaymentIntent
O recurso que representa uma cobrança em todos os métodos, seus estados e o que cada um significa para o seu pedido.
Toda cobrança, seja Pix, cartão ou Pix parcelado, é um PaymentIntent. Ele nasce na criação, guarda o método e o comprador, e passa por estados até um desfecho. Uma integração bem-feita tem um único lugar que traduz o estado do PaymentIntent para o estado do pedido.
Estados
status | Final? | O pedido deve |
|---|---|---|
Processing | Não | Ficar aguardando pagamento. |
RequiresAction | Não | Mostrar o desafio 3DS de nextAction. |
Succeeded | Para o pagamento, sim | Ser concluído. Ainda pode haver estorno ou contestação depois. |
Failed | Sim | Ser marcado como recusado. O motivo está em lastPaymentError. |
Canceled | Quase | Encerrar a oferta, mas aceitar uma confirmação tardia de Pix, até 72 horas depois do vencimento. |
Refund | Sim | Ser marcado como estornado. |
ChargedBack | Sim | Ser marcado como contestado. |
Created | Não | Aguardar. Raro: indica recurso criado sem processamento. |
Failed também volta com HTTP 201. A resposta 201 diz que o recurso foi criado; o resultado está em status.
Campos principais
{
"id": "8b727267-bf39-48a4-91ea-eb0780cb48a9",
"object": "payment_intent",
"amount": 1990,
"currency": "BRL",
"status": "Processing",
"statusDetail": null,
"paymentMethods": [{ "type": "Pix", "amount": 1990, "currency": "BRL", "card": null, "pix": { "pixKeyType": "RANDOM", "expiresInMinutes": 30 } }],
"customer": { "name": "Cliente de Teste", "email": "cliente@example.com", "document": null, "phone": null, "birthDate": null, "address": null },
"split": null,
"metadata": { "orderId": "pedido-pix-1001" },
"lastPaymentError": null,
"nextAction": null,
"pixPayment": { "qrCodeEmv": "00020126...", "qrCodeUrl": "", "pixCopyPaste": "00020126...", "expiresAt": "2026-09-08T15:30:00Z", "endToEndId": "", "status": "PENDING" },
"created": "2026-09-08T15:00:00Z",
"succeededAt": null
}| Campo | Descrição |
|---|---|
id | Identificador da cobrança (UUID). Grave junto com o pedido. |
status | Estado atual. É o único campo que decide se o pedido foi pago. |
statusDetail | Detalhe técnico, como PENDING_CHALLENGE ou AUTHENTICATION_FAILED. Lista aberta. |
amount, currency | Valor em centavos e moeda. |
paymentMethods[] | Método usado. Em cartão, card traz bin, lastFourDigits, brand, cardTokenUid e threeDs. |
lastPaymentError | Motivo de uma falha: code, message e category. null quando não houve falha. |
nextAction | Ação pendente do comprador. Hoje só IFRAME_CHALLENGE, do 3DS. |
pixPayment | Dados do Pix: QR Code, copia e cola, prazo e endToEndId. |
pagalevePayment | Dados do checkout da Pagaleve: checkoutId, checkoutUrl, expiresAt. |
split | Regras de divisão com allocatedAmount calculado. |
metadata | Os pares texto/texto que você enviou. |
created, succeededAt | Momento da criação e da confirmação. |
Os blocos de cada método (pixPayment, pagalevePayment, card) têm um campo status próprio, que registra o estado do provedor no momento em que o bloco foi gerado. Use sempre o status da raiz.
Como o seu código deve ler
- Campos sem valor vêm como
nullexplícito. Campos novos podem aparecer a qualquer momento: ignore o que não conhece. - Os nomes dos campos são
camelCasee os valores de estado sãoPascalCase, exatamente como na tabela. A comparação deve ser exata. - Datas são ISO 8601 em UTC. Algumas respostas podem omitir o
Z; trate datas sem fuso como UTC.
Onde o PaymentIntent aparece
| Onde | Formato |
|---|---|
Resposta de POST /api/v1/paymentintents | O objeto completo. |
Resposta de GET /api/v1/paymentintents/{id} | O objeto completo, no estado atual. |
Webhooks payment_intent.* | Um retrato em data, com campos ligeiramente diferentes. Veja Eventos. |