Evento payment.intent.canceled
Disparado quando um payment_intent chega ao estado canceled.
data.object usa o mesmo shape de
GET /v1/payment-intents/:id, agora com
status: "canceled", canceled_at preenchido e cancellation_reason quando
houver motivo registrado.
Use este evento para encerrar a tentativa no seu sistema, atualizar a operação
de negócio relacionada e impedir novas tentativas de captura naquele intent.
O cancelamento é uma transição de estado. Quando o payload traz
data.previous_attributes, use esse diff para auditoria; o estado final
continua sendo o objeto completo em data.object.Quando acontece
Um código PIX ou boleto que vence sem pagamento não emite este evento: a
expiração encerra apenas aquela tentativa e o intent volta a
requires_payment_method, comunicado por
payment.intent.updated.
Cancelamento é sempre uma decisão — sua, do checkout que expirou ou de uma
fatura anulada.Como processar
- Registre o
iddo evento (evt_*) para processar o webhook de forma idempotente. - Atualize o pagamento local usando
data.object.id(pi_*) estatus: "canceled". - Trate o cancelamento como estado final para este intent: não libere pedido e não tente capturar depois.
- Use
cancellation_reasonpara auditoria, suporte e mensagens internas. - Use
data.previous_attributespara saber quais campos mudaram sem perder o estado final emdata.object. - Use
metadata,customereinvoicepara localizar o pedido ou fatura correspondente.
Campos importantes
Status possíveis
Neste evento,data.object.status é canceled. O status anterior, quando
incluído, aparece em data.previous_attributes.status.
Motivos possíveis de
data.object.cancellation_reason, quando preenchido.
Informados por você na chamada de cancelamento:
Gerados pela Chargefy, apenas leitura:
Cada motivo afirma exatamente uma coisa, e você pode confiar nisso.
expired
significa que um prazo acabou — não é preciso cruzar com o histórico do seu
sistema para descobrir o que houve. E abandoned só chega até você se
você o enviou: a Chargefy nunca escreve esse valor.O que a expiração de um código não emite
A expiração automática de um PIX ou boleto pendente não passa por este evento:
|
payment.intent.canceled | Não. Cancelamento fica reservado a decisões: cancelamento direto, expiração da sessão de checkout ou fatura anulada. |
Essa é a sequência lógica do lifecycle. A entrega HTTP ainda pode ser
duplicada ou chegar fora de ordem; aplique as regras de
entrega de webhooks.
Exemplo: sessão de checkout expirada com PIX pendente
Páginas relacionadas
Cancelar Payment Intent
Estados canceláveis e motivos aceitos pela API.
Objeto Payment Intent
Semântica completa de cancelamento, status e expiração.
Encerrar uma tentativa
Idempotência, tentativa ativa e proteção contra eventos antigos.
Entrega e ordem
Duplicação, retries e eventos fora de ordem.

