Pular para o conteúdo principal

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, o payment.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_attempt0 para a cobrança original, 1 ou superior para cada tentativa de renovação de assinatura agendada.
Entender esses motivos de falha permite dar um feedback claro aos clientes, decidir se uma nova tentativa vale a pena, e recuperar mais receita.

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.
Nunca revele a verdadeira razão para STOLEN_CARD, LOST_CARD, PICKUP_CARD, ou FRAUDULENT para o cliente. Apresentar esses motivos pode alertar um ator fraudulento. Sempre mostre ao cliente uma mensagem genérica de recusa (por exemplo, “Seu cartão foi recusado. Por favor, entre em contato com seu banco ou use outro cartão.”) e apenas registre o código específico internamente.

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

Leia error_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.

Suporte

Para ajuda adicional com falhas de transações ou problemas de integração, entre em contato com nossa equipe de suporte em support@dodopayments.com.
Última modificação em 26 de junho de 2026