Lorsqu’un paiement échoue, Dodo Payments vous indique pourquoi grâce à un
error_code standardisé et une error_message lisible par l’homme. Ce guide montre comment lire ces champs, décider si un nouvel essai est valable, et récupérer le paiement sans exposer d’informations sensibles aux clients.Comment Dodo Payments Signale un Échec
Chaque paiement échoué — qu’il s’agisse d’un achat unique ou d’un renouvellement d’abonnement — comporte les mêmes champs d’échec sur l’objet de paiement :| Champ | Type | Description |
|---|---|---|
status | chaîne | failed pour un paiement échoué. D’autres états non réussis incluent cancelled, requires_customer_action, et requires_payment_method. |
error_code | chaîne | null | La raison de l’échec standardisée, par exemple INSUFFICIENT_FUNDS ou PROCESSING_ERROR. Voir la référence des Échecs de Transaction pour la liste complète. |
error_message | chaîne | null | Une explication lisible par l’homme de l’échec. |
retry_attempt | entier | 0 pour la charge initiale. 1 ou supérieur identifie une nouvelle tentative de renouvellement d’abonnement programmée. |
error_code et error_message sont null jusqu’à ce qu’un paiement échoue réellement. Vérifiez toujours d’abord status, puis lisez les champs d’erreur.Le Webhook payment.failed
La manière la plus fiable de détecter un échec est le webhook payment.failed. L’événement enveloppe l’objet de paiement complet dans data :
payment.failed payload
error_code et l’oriente :
Décider de Retenter: Refus Temporaires vs. Définitifs
Leerror_code vous indique si réessayer le même mode de paiement vaut la peine.
| Type de refus | Ce que cela signifie | Que faire |
|---|---|---|
| Refus temporaire | Temporaire ou corrigeable (par exemple INSUFFICIENT_FUNDS, PROCESSING_ERROR, NETWORK_ERROR, TRY_AGAIN_LATER). | Un nouvel essai — après un délai, ou une fois que le client a corrigé son entrée — peut réussir. |
| Refus définitif | Terminal (par exemple STOLEN_CARD, LOST_CARD, DO_NOT_HONOR, FRAUDULENT). | Ne pas réessayer avec la même carte. Demandez au client un autre mode de paiement. |
error_code.
Gérer les Échecs à la Caisse vs. au Renouvellement
La façon de récupérer dépend de la présence ou non du client.- At checkout (customer present)
- On subscription renewal (customer not present)
Le client est activement en train de passer à la caisse. Affichez un message clair et permettez-lui de réessayer immédiatement ou d’utiliser une autre carte.
requires_payment_method— le client n’a jamais fourni de mode de paiement : il n’a pas saisi les détails de la carte, ou a été invité à le faire et n’a pris aucune mesure. Cela représente généralement un abandon de panier à la caisse, non un refus — réengagez le client pour compléter le paiement (voir Récupération de Panier Abandonné).requires_customer_action— une authentification supplémentaire (comme 3DS) est nécessaire ; faites compléter cela par le client. Voir gestion du 3D Secure.
Réessayer un Paiement Échoué
- Abonnements : Activez Reprises de Paiement d’Abonnement pour récupérer les refus temporaires sans travail d’intégration. Vous pouvez également déclencher la récupération en demandant au client de mettre à jour son mode de paiement via l’API de Mise à Jour du Mode de Paiement, ce qui prélève les dus en suspens.
- Paiements uniques : Renvoyez la caisse ou
payment_linkpour que le client puisse réessayer avec un autre mode. Il n’y a pas de réessai automatique pour les paiements uniques.
Présenter les Erreurs aux Clients en toute Sécurité
Montrez aux clients un message amical — jamais leerror_code brut.
Customer-facing messaging
Liens Connexes
Transaction Failures
Chaque code de refus, son type, et l’action recommandée.
Error Codes
Erreurs d’API et de logique métier qui ne sont pas des refus de carte.
Subscription Payment Retries
Récupération automatique des refus temporaires sur les renouvellements d’abonnement.
Subscription Dunning
Séquences d’e-mails qui récupèrent les refus définitifs.
Payment Webhooks
Schéma de charge utile complet pour les événements de paiement.
Testing Failures
Cartes de test qui simulent les refus et les échecs de renouvellement.