Skip to main content

Vue d’ensemble

Lorsqu’une tentative de paiement échoue, Dodo Payments renvoie un code d’échec standardisé qui vous indique pourquoi. Les codes sont les mêmes pour tous les moyens de paiement et processeurs de paiement. Un seul ensemble de règles de traitement couvre donc tous les paiements échoués. Le webhook payment.failed et l’objet de paiement exposent les champs suivants pour un paiement échoué :
  • error_code : un code d’échec standardisé du tableau ci-dessous.
  • error_message : une explication rédigée pour vous, le marchand. Lorsque error_code correspond à l’un des codes standardisés ci-dessous, il s’agit d’un titre accompagné de l’action recommandée, et non du texte brut du processeur de paiement.
  • retry_attempt : 0 pour la transaction d’origine, et 1 ou une valeur supérieure pour chaque nouvelle tentative de renouvellement d’abonnement planifiée. Les paiements qui ne sont pas des renouvellements d’abonnement conservent la valeur 0.
Utilisez ces codes pour fournir aux clients des indications claires, déterminer si une nouvelle tentative peut aboutir et récupérer davantage de revenus.

Texte destiné au marchand et texte destiné au client

Chaque code d’échec standardisé correspond à deux messages : un pour vous et un pour votre client :
Le Customer Portal renvoie le texte destiné au client dans error_message, tandis que l’API du marchand renvoie le texte destiné au marchand pour le même paiement. Le error_code est identique dans les deux cas.

Handle Payment Failures

Un guide développeur détaillé expliquant comment lire ces codes depuis les webhooks et l’API, les afficher aux clients et déterminer quand effectuer une nouvelle tentative.

Refus temporaires et définitifs

Chaque code d’échec correspond soit à un refus temporaire, soit à un refus définitif. Le type indique si une tentative ultérieure avec les mêmes informations de paiement peut aboutir ou si le client doit d’abord agir. Pour les renouvellements d’abonnement, Dodo Payments applique automatiquement cette classification. Subscription Payment Retries effectue de nouvelles tentatives pour les refus temporaires. Un refus définitif met immédiatement fin à la chaîne de tentatives ; récupérez-le avec Subscription Dunning.
Ne révélez jamais au client la véritable raison correspondant à STOLEN_CARD, LOST_CARD, PICKUP_CARD ou FRAUDULENT. La divulgation de ces raisons peut alerter un acteur frauduleux. Affichez au client un message de refus générique (par exemple : « Votre carte a été refusée. Veuillez contacter votre banque ou utiliser une autre carte. ») et enregistrez le code spécifique uniquement en interne.Dodo Payments applique cette règle sur les interfaces qu’il contrôle. Pour ces quatre codes, le checkout, le Customer Portal et les e-mails de relance affichent un message de refus générique, tandis que votre texte destiné au marchand conserve la véritable raison. Appliquez la même règle partout où vous affichez error_message de l’API du marchand à un client.

Motifs d’échec des transactions

Le tableau suivant répertorie chaque code d’échec avec son type de refus, la possibilité pour le client de le résoudre, une description et l’action recommandée.
User Error indique si le client peut résoudre le refus. Yes signifie que le client peut corriger le problème, par exemple en saisissant les informations correctes de sa carte. No signifie qu’un problème au niveau du système ou une restriction bancaire a provoqué le refus et que le client ne peut pas le résoudre directement.
Une banque émettrice peut également refuser une carte parce que son propre moteur de gestion des risques signale le titulaire de la carte comme présentant un risque élevé, indépendamment du marchand ou des détails de la transaction. Ces refus apparaissent généralement sous forme de codes génériques tels que DO_NOT_HONOR, GENERIC_DECLINE, CARD_DECLINED, TRANSACTION_NOT_APPROVED ou FRAUDULENT. La banque ne communique pas la raison précise, et ni Dodo Payments ni le marchand ne peuvent passer outre cette décision. Demandez au client de contacter sa banque pour résoudre ce problème, ou d’utiliser une autre carte ou un autre moyen de paiement.

Gestion programmatique des échecs

Lisez error_code depuis le webhook payment.failed ou l’objet de paiement, associez-le à l’action recommandée dans le tableau et déterminez s’il faut réessayer. Pour les renouvellements d’abonnement, Dodo Payments réessaie les refus temporaires pour vous. Consultez Subscription Payment Retries. Pour les erreurs d’API et de logique métier qui ne sont pas des refus de carte, telles que PAYMENT_NOT_SUCCEEDED ou REFUND_WINDOW_EXPIRED, consultez la référence Error Codes.

Articles associés

Handle Payment Failures

Guide de bout en bout pour détecter, afficher et réessayer les paiements échoués.

Error Codes

Codes d’erreur de l’API et de la logique métier pour les échecs qui ne sont pas des refus.

Subscription Payment Retries

Nouvelles tentatives automatiques permettant de récupérer les refus temporaires lors des renouvellements d’abonnement.

Subscription Dunning

Séquences d’e-mails permettant de récupérer les refus définitifs en invitant le client à mettre à jour son moyen de paiement.

Support

Pour obtenir davantage d’aide concernant les échecs de transaction ou les problèmes d’intégration, contactez l’équipe de support à l’adresse support@dodopayments.com.
Dernière modification le 26 septembre 2026