Pular para o conteúdo principal
Quando um pagamento falha, o Dodo Payments informa por quê através de um error_code padronizado e um error_message legível para humanos. Este guia mostra como ler esses campos, decidir se vale a pena tentar novamente e recuperar o pagamento sem expor informações sensíveis aos clientes.

Como o Dodo Payments Relata uma Falha

Todo pagamento falho — seja uma compra única ou uma renovação de assinatura — possui os mesmos campos de falha no objeto de pagamento:
error_code e error_message são null até que um pagamento realmente falhe. Sempre verifique primeiro status, depois leia os campos de erro.

O Webhook payment.failed

A maneira mais confiável de detectar uma falha é o webhook payment.failed. O evento encapsula o objeto de pagamento completo em data:
payment.failed payload
Um manipulador mínimo lê error_code e faz o roteamento com base nele:
Sempre verifique a assinatura do webhook antes de processar. Veja o guia de Webhooks para a configuração completa, incluindo verificação de assinatura e idempotência.

Decida Se Deve Tentar Novamente: Soft vs. Hard Declines

O error_code informa se vale a pena tentar novamente o mesmo método de pagamento. A referência Falhas de Transação lista o tipo de declínio e a ação recomendada para cada error_code.

Lidando com Falhas na Compra ou na Renovação

Como você se recupera depende de se o cliente está presente.
O cliente está ativamente efetuando a compra. Apresente uma mensagem clara e permita que ele tente novamente imediatamente ou use outro cartão.
  • requires_payment_method — o cliente nunca forneceu um método de pagamento: não inseriu os dados do cartão ou foi solicitado e não tomou nenhuma ação. Isso geralmente é uma saída de checkout, não um declínio — reengaje o cliente para concluir o pagamento (veja Recuperação de Carrinho Abandonado).
  • requires_customer_action — é necessária autenticação adicional (como 3DS); peça ao cliente para completá-la. Veja manipulação do 3D Secure.

Tentando um Pagamento Falho Novamente

  • Assinaturas: Ative Tentativas de Pagamento de Assinatura para recuperar “declínios suaves” sem trabalho de integração. Você também pode acionar a recuperação fazendo com que o cliente atualize seu método de pagamento via a API Update Payment Method, que cobra quaisquer débitos pendentes.
  • Pagamentos únicos: Reenviar o checkout ou payment_link para que o cliente possa tentar novamente com um método diferente. Não há tentativa automática para pagamentos únicos.
Não tente novamente hard declines no mesmo cartão. As redes de cartões podem marcar declínios repetidos como abusivos, o que prejudica sua taxa de autorização.

Apresentando Erros aos Clientes com Segurança

Mostre uma mensagem amigável aos clientes — nunca o motivo raw error_code.
Customer-facing messaging
Nunca revele o verdadeiro motivo para STOLEN_CARD, LOST_CARD, PICKUP_CARD, ou FRAUDULENT. Mostrar isso pode alertar um ator fraudulento. Mostre uma mensagem de declínio genérica e registre apenas o error_code específico internamente.

Relacionados

Transaction Failures

Cada código de declínio, seu tipo e a ação recomendada.

Error Codes

Erros de lógica de negócios e API que não são declínios de cartões.

Subscription Payment Retries

Recuperação automática de declínios suaves nas renovações de assinaturas.

Subscription Dunning

Sequências de email que recuperam hard declines.

Payment Webhooks

Esquema completo de payload para eventos de pagamento.

Testing Failures

Cartões de teste que simulam declínios e falhas de renovação.
Última modificação em 18 de junho de 2026