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 webhookpayment.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. Quandoerror_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:0para a cobrança original e1ou superior para cada nova tentativa agendada de renovação de assinatura. Pagamentos que não são renovações de assinatura mantêm o valor0.
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.
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
Leiaerror_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.