Skip to main content
Quando um pagamento falha, o Dodo Payments fornece um error_code padronizado e uma mensagem error_message legível. Este guia mostra como ler esses campos, decidir se deve tentar novamente e recuperar o pagamento com segurança.

Como o Dodo Payments Relata uma Falha

Todo pagamento com falha contém estes campos no objeto de pagamento:
error_code e error_message são null até que um pagamento falhe. Sempre verifique status primeiro.
error_message é voltado ao comerciante e pode revelar motivos relacionados a fraude. Nunca o exiba aos clientes. Em vez disso, mapeie error_code para uma mensagem segura para o cliente (consulte Exibir erros aos clientes com segurança).

O webhook payment.failed

O webhook payment.failed é a maneira mais confiável de detectar uma falha. O evento encapsula o objeto de pagamento completo em data:
payment.failed payload
Um handler mínimo lê error_code e direciona o fluxo com base nele:
Sempre verifique a assinatura do webhook antes de processá-lo. Consulte o guia de Webhooks para ver a configuração completa, incluindo a verificação de assinatura e a idempotência.

Decida se deve tentar novamente: recusas temporárias vs. permanentes

O error_code informa se vale a pena tentar novamente com o mesmo método de pagamento. Consulte Transaction Failures para ver a lista completa de tipos de recusa e ações recomendadas.

Como lidar com falhas no checkout e na renovação

A forma de recuperação depende de o cliente estar presente.
O cliente está finalizando a compra. Exiba uma mensagem clara e permita que ele tente novamente ou use outro cartão.
  • requires_payment_method — o cliente nunca forneceu um método de pagamento. Geralmente isso indica abandono durante o checkout, não uma recusa. Incentive o cliente a concluir o pagamento (consulte Recuperação de carrinho abandonado).
  • requires_customer_action — é necessária autenticação adicional (como 3DS). Peça ao cliente que a conclua. Consulte 3D Secure.

Tentar novamente um pagamento com falha

Assinaturas: ative Subscription Payment Retries para recuperar recusas temporárias automaticamente. Para tentar novamente imediatamente, em vez de aguardar o agendamento, use Manual Payment Retry no dashboard ou na API. Você também pode iniciar a recuperação fazendo com que o cliente atualize o método de pagamento pela Update Payment Method API, que cobra quaisquer valores pendentes. Pagamentos avulsos: reenvie o checkout ou payment_link para que o cliente possa tentar novamente com um método diferente. Não há novas tentativas automáticas para pagamentos avulsos.
Não tente novamente recusas permanentes usando o mesmo cartão. As bandeiras de cartão sinalizam recusas repetidas como abusivas, o que prejudica sua taxa de autorização.

Exibir erros aos clientes com segurança

Mostre uma mensagem amigável aos clientes, nunca o error_code bruto nem o error_message voltado ao comerciante.
Nas interfaces controladas pelo Dodo Payments (checkout, Customer Portal, e-mails de cobrança), esse mapeamento já é feito para você, incluindo o fallback para uma mensagem genérica em recusas relacionadas a fraude. Você só precisa usar o mapeamento abaixo quando exibir falhas no seu próprio produto.
Customer-facing messaging
Nunca revele o motivo real de STOLEN_CARD, LOST_CARD, PICKUP_CARD ou FRAUDULENT. Exibir esses motivos pode alertar um agente fraudulento. Mostre uma mensagem genérica de recusa e registre o error_code específico apenas internamente.

Relacionados

Transaction Failures

Cada código de recusa, seu tipo e a ação recomendada.

Error Codes

Erros de API e de lógica de negócio que não são recusas de cartão.

Subscription Payment Retries

Recuperação automática de recusas temporárias em renovações de assinaturas.

Subscription Dunning

Sequências de e-mails que recuperam recusas permanentes.

Payment Webhooks

Esquema completo do payload para eventos de pagamento.

Testing Failures

Cartões de teste que simulam recusas e falhas de renovação.
Última modificação em 26 de setembro de 2026