Pagamentos
Confirmar um pagamento
Confirma um Payment Intent com cartão ou Pix, cria a charge e explica o evento updated, o expires_at e a expiração automática do Pix.
Cobranças positivas precisam satisfazer o mínimo do plano efetivo e do método.
Um valor insuficiente retorna
amount_too_small antes do processamento e não
autoriza repetição automática. Veja mínimos e tratamento do erro.payment_intent e inicia a cobrança. A confirmação cria uma
charge, que representa a tentativa de pagamento dentro do intent. Para cartão, use um
payment_method salvo. Para Pix, informe payment_method_type: "pix" ou crie
o intent apenas com payment_method_types: ["pix"]; a resposta traz o QR code
em next_action.pix_display_qr_code e o status fica requires_action até a
confirmação assíncrona. O código tem validade curta
(next_action.pix_display_qr_code.expires_at); sem pagamento nesse prazo, o
intent volta a requires_payment_method — use
/regenerate_pix para
emitir um código novo no mesmo intent.
O endpoint de confirmação direta aceita cartão e Pix. Payment intents de
boleto são criados e processados pelos fluxos de checkout hospedado ou
invoice; não envie
payment_method_type: "boleto" aqui.pi_*. Quando o intent foi criado por outro
fluxo, esse fluxo é só a origem — não use ele como chave da tentativa de
pagamento. O estado financeiro mora no payment_intent e nos webhooks de
payment.intent.*. Não crie charges diretamente: para cobrar alguém, crie e
confirme um payment_intent.
Quando capture_method é manual, a confirmação de cartão autoriza o valor e
retorna o intent em requires_capture com amount_capturable preenchido. Use
POST /v1/payment-intents/:id/capture para capturar.
Evento emitido na confirmação do Pix
Quando a confirmação muda o intent derequires_confirmation para requires_action,
ela sempre emite
payment.intent.updated.
O evento contém o Payment Intent completo em data.object, inclusive
latest_charge e next_action, e informa o status anterior em
data.previous_attributes.status.
Se a confirmação terminar em succeeded, é emitido payment.intent.succeeded
em vez de um payment.intent.updated adicional. Uma recusa não encerra o
intent: ele volta a requires_payment_method com o motivo em
last_payment_error, o detalhe da tentativa sai em
charge.failed e a transição chega
por payment.intent.updated.
string
obrigatório
ID do payment intent (
pi_*).string
Customer associado. Obrigatório se o intent foi criado sem customer.
string
Payment method salvo para cartão. Obrigatório para cobrança de cartão se o
intent ainda não tem método.
string
Método a confirmar quando o intent permite mais de um método.
cURL
200
Confirmar Pix
Erros comuns
Uma recusa é erro HTTP. A resposta é402 com type: "card_error", o code
estável da recusa (o mesmo gravado em last_payment_error.code),
advice_code, a evidência bruta da rede em network_*, a charge da
tentativa e o intent completo em error.payment_intent, já em
requires_payment_method: não é preciso consultar o intent de novo para tratar
a recusa. Falha técnica na tentativa usa o mesmo shape com 502 e
type: "api_error"; estado incompatível, 409. Os códigos estão em
Códigos de falha.
Depois da confirmação
A resposta é útil para atualizar a tela imediatamente, mas o backend deve processar também os webhooks:payment.intent.succeededpara confirmar o pagamento;charge.failedpara registrar o detalhe de uma tentativa recusada;payment.intent.canceledquando o intent for cancelado de forma deliberada (cancelamento direto ou expiração do checkout);payment.intent.updatedquando a confirmação do Pix mudar o intent pararequires_action, quando uma recusa ou um código vencido devolver o intent arequires_payment_method, ou em outra transição intermediária.
Objeto Payment Intent
Todos os estados, campos e transições possíveis.
Implementar Payment Intents
Fluxo seguro para Pix, cartão, webhook e atualização do estado local.

