Skip to main content

Visão Geral

Quando uma tentativa de pagamento falha, Dodo Payments retorna um código de falha padronizado que informa o motivo. Os códigos são os mesmos em todos os métodos de pagamento e processadores de pagamento, portanto, um único conjunto de regras de tratamento abrange todos os pagamentos com falha. O webhook payment.failed e o objeto de pagamento expõem estes campos para um pagamento com falha:
  • error_code: um código de falha padronizado da tabela abaixo.
  • error_message: uma explicação escrita para você, o merchant. Quando error_code é um dos códigos padronizados abaixo, este campo contém um título e a ação recomendada, não o texto bruto do processador de pagamento.
  • retry_attempt: 0 para a cobrança original e 1 ou superior para cada nova tentativa agendada de renovação de assinatura. Pagamentos que não são renovações de assinatura mantêm o valor 0.
Use estes códigos para fornecer feedback claro aos clientes, decidir se uma nova tentativa pode ser bem-sucedida e recuperar mais receita.

Texto para o Merchant vs. Texto para o Customer

Cada código de falha padronizado corresponde a duas mensagens, uma para você e outra para seu cliente:
O Customer Portal retorna o texto destinado ao cliente em error_message, enquanto a API do merchant retorna o texto destinado ao merchant para o mesmo pagamento. O error_code é o mesmo em ambos.

Handle Payment Failures

Um guia de desenvolvimento passo a passo para ler esses códigos em webhooks e na API, exibi-los aos clientes e decidir quando tentar novamente.

Recusas temporárias e permanentes

Cada código de falha é uma recusa temporária ou definitiva. O tipo informa se uma tentativa posterior com os mesmos dados de pagamento pode ser bem-sucedida ou se o cliente precisa agir primeiro. Para renovações de assinatura, Dodo Payments aplica essa classificação automaticamente. Subscription Payment Retries tenta novamente pagamentos recusados temporariamente. Uma recusa definitiva encerra imediatamente a cadeia de novas tentativas; recupere-a com Subscription Dunning.
Nunca revele ao cliente o motivo real de STOLEN_CARD, LOST_CARD, PICKUP_CARD ou FRAUDULENT. Revelar esses motivos pode alertar um agente fraudulento. Mostre ao cliente uma mensagem genérica de recusa (por exemplo, “Seu cartão foi recusado. Entre em contato com seu banco ou use outro cartão.”) e registre o código específico apenas internamente.Dodo Payments aplica essa regra nas superfícies que controla. Para esses quatro códigos, o checkout, o Customer Portal e os e-mails de dunning exibem uma mensagem genérica de recusa, enquanto o texto destinado ao merchant mantém o motivo real. Aplique a mesma regra em qualquer lugar onde você exibir error_message da API do merchant para um cliente.

Motivos de falha da transação

A tabela a seguir lista todos os códigos de falha, seu tipo de recusa, se o cliente pode resolvê-la, uma descrição e a ação recomendada.
Erro do usuário indica se o cliente pode resolver a recusa. Yes significa que o cliente pode corrigir o problema, por exemplo, informando os dados corretos do cartão. No significa que um problema no sistema ou uma restrição do banco causou a recusa, e o cliente não pode resolvê-la diretamente.
Um banco emissor também pode recusar um cartão porque seu próprio motor de risco identifica o titular do cartão como 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. O banco não compartilha o motivo específico, e nem Dodo Payments nem o comerciante podem reverter a decisão. Peça ao cliente que entre em contato com o banco para resolver o alerta ou que use outro cartão ou método de pagamento.

Tratamento programático de falhas

Leia error_code do webhook payment.failed ou do objeto de pagamento, associe-o à ação recomendada na tabela e decida se deve tentar novamente. Para renovações de assinatura, Dodo Payments tenta novamente as recusas temporárias por você. Consulte Subscription Payment Retries. Para erros de API e de lógica de negócios que não são recusas de cartão, como PAYMENT_NOT_SUCCEEDED ou REFUND_WINDOW_EXPIRED, consulte a referência de Error Codes.

Relacionados

Handle Payment Failures

Guia completo para detectar, exibir e tentar novamente pagamentos com falha.

Error Codes

Códigos de erro da API e da lógica de negócios para falhas que não são recusas.

Subscription Payment Retries

Tentativas automáticas que recuperam recusas temporárias em renovações de assinaturas.

Subscription Dunning

Sequências de e-mails que recuperam recusas permanentes ao solicitar a atualização do meio de pagamento.

Suporte

Para obter mais ajuda com falhas de transação ou problemas de integração, entre em contato com a equipe de suporte pelo endereço support@dodopayments.com.
Última modificação em 26 de setembro de 2026