Skip to main content
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.
error_message da merchant API é um texto voltado ao merchant. Ele pode indicar o motivo real de uma recusa, inclusive motivos relacionados a fraude; portanto, nunca o exiba diretamente ao cliente. Mapeie error_code para uma mensagem segura para o cliente, conforme mostrado em Exibir erros aos clientes com segurança.

O webhook payment.failed

A maneira mais confiável de detectar uma falha é o webhook payment.failed. O evento inclui o objeto de pagamento completo em data:
payment.failed payload
Um handler mínimo lê error_code e define 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. A referência de Transaction Failures lista o tipo de recusa e a ação recomendada para cada error_code.

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

A forma de recuperação depende de o cliente estar presente.
O cliente está realizando o checkout ativamente. Exiba 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 recebeu uma solicitação para informá-los, mas não tomou nenhuma ação. Geralmente, isso é um abandono no checkout, não uma recusa — reengaje o cliente para concluir o pagamento (consulte Recuperação de carrinho abandonado).
  • requires_customer_action — é necessária uma autenticação adicional (como 3DS); peça ao cliente que a conclua. Consulte Como lidar com o 3D Secure.

Tentar novamente um pagamento com falha

  • Assinaturas: ative Subscription Payment Retries para recuperar recusas temporárias sem trabalho de integração. Você também pode acionar a recuperação fazendo com que o cliente atualize o método de pagamento por meio da 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 outro método. Não há tentativa automática para pagamentos avulsos.
Não tente novamente recusas permanentes com o mesmo cartão. As bandeiras de cartão podem sinalizar recusas repetidas como abuso, prejudicando sua taxa de autorização.

Exibir erros aos clientes com segurança

Exiba uma mensagem amigável para os clientes — nunca o error_code bruto e nunca o error_message voltado ao merchant.
Nas superfícies controladas pela Dodo Payments — checkout, o Customer Portal e os e-mails de cobrança — esse mapeamento já é feito para você, incluindo o fallback para uma mensagem genérica em caso de recusas relacionadas a fraude. Você só precisa do 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 essas informações pode alertar um agente fraudulento. Mostre uma mensagem genérica de recusa e registre internamente apenas o error_code específico.

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ócios 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 8 de agosto de 2026