Visão Geral
O Dodo Payments retorna uma razão detalhada de falha sempre que uma tentativa de pagamento é mal sucedida. Esses motivos são padronizados entre métodos e provedores de pagamento, permitindo que você implemente um tratamento consistente em sua aplicação. Quando um pagamento falha, opayment.failed webhook e o objeto de pagamento expõem:
error_code— um motivo de falha padronizado da tabela abaixo.error_message— uma explicação legível para humanos.retry_attempt—0para a cobrança original,1ou superior para cada tentativa de renovação de assinatura agendada.
Handle Payment Failures
Um guia passo a passo para desenvolvedores sobre como ler esses códigos de webhooks e da API, apresentá-los aos clientes, e decidir quando tentar novamente.
Recusas Suaves vs. Duras
Cada código de falha se encaixa em uma das duas categorias. Essa distinção determina se você deve tentar novamente com o mesmo método de pagamento ou pedir ao cliente um novo.
Para renovações de assinatura, o Dodo Payments aplica essa distinção automaticamente: recusas suaves são tentadas novamente por Recuperações de Pagamento de Assinatura, enquanto recusas duras encerram imediatamente a cadeia de tentativas e são melhor tratadas com Recuperação de Assinatura.
Motivos de Falha de Transação
A seguinte tabela lista cada código de falha, seu tipo de recusa, se o cliente pode resolvê-lo, uma descrição e a ação recomendada.Erro do Usuário indica se a recusa de pagamento pode ser resolvida pelo cliente. Quando
Yes, o cliente pode tomar uma ação para resolver o problema (por exemplo, inserir detalhes corretos do cartão). Quando No, a recusa é devido a questões de nível de sistema ou restrições bancárias que o cliente não pode resolver diretamente.Um cartão também pode ser recusado quando o próprio mecanismo de risco do banco emissor classifica o portador do cartão como um cliente de alto risco — independentemente do comerciante ou dos detalhes da transação. Essas recusas geralmente aparecem como códigos genéricos, como
DO_NOT_HONOR, GENERIC_DECLINE, CARD_DECLINED, TRANSACTION_NOT_APPROVED, ou FRAUDULENT. Nesses casos, o banco não compartilha o motivo específico, e nem a Dodo Payments nem o comerciante podem anular a decisão. Peça ao cliente para entrar em contato com seu banco para resolver a sinalização, ou use um cartão ou método de pagamento diferente.Lidando com Falhas Programaticamente
Leiaerror_code do webhook payment.failed ou do objeto de pagamento, mapeie para a ação recomendada acima e decida se deve tentar novamente. Para renovações de assinaturas, recusas suaves são tentadas novamente automaticamente — veja Tentativas de Pagamento de Assinatura.
Para erros de nível de API e lógica de negócios (como PAYMENT_NOT_SUCCEEDED ou REFUND_WINDOW_EXPIRED) que não são recusas de cartão, consulte a referência de Códigos de Erro.
Relacionado
Handle Payment Failures
Guia completo para detectar, identificar e tentar novamente pagamentos falhos.
Error Codes
Códigos de erro de API e lógica de negócios para falhas que não são recusas.
Subscription Payment Retries
Tentativas automáticas que recuperam recusas suaves em renovações de assinatura.
Subscription Dunning
Sequências de e-mails que recuperam recusas duras, solicitando a atualização do método de pagamento.