Skip to main content

Vue d’ensemble

Lorsqu’une requête échoue, l’API Dodo Payments renvoie un code d’état HTTP et un corps JSON qui identifie l’erreur. Utilisez cette page pour déterminer la cause d’une erreur et savoir comment la résoudre. Chaque réponse d’erreur inclut :
  • Un code d’état HTTP indiquant la catégorie générale de l’erreur.
  • Un code qui identifie l’erreur exacte, par exemple UNSUPPORTED_COUNTRY.
  • Un message qui explique l’erreur en langage courant. Le message peut être null, par exemple pour les erreurs internes du serveur.
Basez votre gestion des erreurs sur code, et non sur message. Plusieurs codes renvoient plusieurs messages selon la cause. Utilisez ces codes d’erreur pour :
  • Déboguer les problèmes d’intégration.
  • Gérer correctement les erreurs dans votre application.
  • Afficher des informations utiles à vos clients.
  • Garantir la fiabilité du traitement de vos paiements.
Il s’agit d’erreurs liées à l’API et à la logique métier. Pour les raisons de refus de carte renvoyées lors d’un paiement échoué (telles que INSUFFICIENT_FUNDS ou CARD_DECLINED), consultez plutôt la référence Transaction Failures.

Codes d’erreur API standard

L’API utilise les codes d’état HTTP suivants pour les erreurs :

Format des réponses d’erreur

Le corps d’une réponse d’erreur contient deux champs, code et message :

Référence des codes d’erreur

Les codes d’erreur ci-dessous sont regroupés selon la zone de l’API à laquelle ils se rapportent. Chaque entrée indique la condition qui déclenche l’erreur et le message renvoyé par l’API. Les placeholders tels que {id} représentent des valeurs renseignées par l’API.

Authentification et compte

  • UNAUTHORIZED
    • Déclencheur : La requête ne contient aucune clé API ou contient une clé invalide (HTTP 401), ou la clé API ne possède pas le rôle requis par l’action (HTTP 403)
    • Message : Vous n’êtes pas autorisé à effectuer cette action
  • MERCHANT_NOT_LIVE
    • Déclencheur : Une requête en mode live concerne une entreprise pour laquelle les paiements live ne sont pas activés (HTTP 403). Cela concerne une entreprise ayant uniquement utilisé le mode test, ainsi qu’une entreprise dont les paiements live ne sont pas encore activés parce que la vérification est incomplète. Les requêtes en mode test ne sont pas affectées.
    • Message : Les paiements live ne sont pas activés pour le marchand
  • BUSINESS_ARCHIVED
    • Déclencheur : Toute requête destinée au client concernant une entreprise archivée (HTTP 403). Cela concerne le checkout, les liens de paiement, la vitrine, le Customer Portal et l’activation des clés de licence.
    • Message : Cette entreprise est archivée et n’accepte plus les requêtes

Paiements et checkout

  • CHECKOUT_SESSION_CONSUMED
    • Déclencheur : La session de checkout a déjà généré un paiement (HTTP 403). Créez une nouvelle session de checkout.
    • Message : Un paiement associé à la session de checkout fournie a déjà été généré.
  • MANUAL_RETRY_ALREADY_PAID
    • Déclencheur : Nouvelle tentative manuelle d’une facture de renouvellement pour laquelle un paiement a déjà réussi. Un nouvel envoi facturerait le client deux fois.
    • Message : Un paiement associé à cette facture a déjà réussi
  • MANUAL_RETRY_HARD_DECLINE
    • Déclencheur : Nouvelle tentative manuelle lorsque le dernier échec de la facture est un refus définitif ou ne contient aucun code d’erreur classifié. Un autre débit sur la même carte ne peut pas réussir ; mettez plutôt à jour le moyen de paiement.
    • Message : Le dernier échec de cette facture est un refus définitif ; une nouvelle tentative ne peut donc pas réussir (ou) Le dernier échec de cette facture ne peut pas être classifié et ne peut donc pas faire l’objet d’une nouvelle tentative
  • MANUAL_RETRY_IN_FLIGHT
    • Déclencheur : Nouvelle tentative manuelle alors qu’un paiement associé à la facture est processing ou n’a pas encore de statut enregistré. Attendez le résultat de ce paiement au lieu de le renvoyer.
    • Message : Un paiement associé à cette facture est toujours en cours
  • MANUAL_RETRY_LIMIT_REACHED
    • Déclencheur : Nouvelle tentative manuelle après l’épuisement des 3 envois de la facture, ou avant la fin du délai d’attente (HTTP 429). Le deuxième envoi attend 1 heure après le premier et le troisième attend 3 heures après le deuxième. Le corps contient uniquement code et message. Pour savoir quand le prochain envoi est autorisé, lisez retry_available_at dans GET /payments/{payment_id}/retry.
    • Message : Toutes les nouvelles tentatives manuelles pour cette facture ont été utilisées (ou) La nouvelle tentative n’est pas encore disponible pour cette facture
  • NO_ELIGIBLE_PAYMENT_METHODS
    • Déclencheur : Aucun moyen de paiement ne reste disponible après filtrage (HTTP 422)
    • Message : Aucun moyen de paiement éligible trouvé
  • PAYMENT_NOT_PERMITTED
    • Déclencheur : Checkout ou tentative de paiement effectué par un client figurant sur la liste de blocage du marchand (HTTP 403). Le code et le message n’indiquent volontairement aucune cause.
    • Message : Ce paiement ne peut pas être traité.
  • PAYMENT_NOT_RETRYABLE
    • Déclencheur : Nouvelle tentative manuelle d’un paiement non prise en charge par cette fonctionnalité. Le paiement n’a pas de facture, sa facture n’est pas un renouvellement d’abonnement ouvert, aucun paiement de la facture n’a encore échoué, l’abonnement n’est pas configuré pour la facturation récurrente (par exemple, un abonnement à la demande), ou le client figure sur la liste de blocage.
    • Message : Varie selon la raison, par exemple : Seuls les paiements de renouvellement d’abonnement peuvent faire l’objet d’une nouvelle tentative
  • PAYMENT_NOT_SUCCEEDED
    • Déclencheur : Tentative de remboursement ou de traitement d’un paiement qui n’a pas réussi
    • Message : Le paiement fourni n’a pas réussi
  • PREVIOUS_PAYMENT_PENDING
    • Déclencheur : Tentative de créer un débit alors que le paiement précédent est dans un état non final. Également renvoyé pour une nouvelle tentative manuelle lorsque le paiement le plus récent de la facture n’est ni failed ni en cours de traitement, par exemple requires_customer_action ou cancelled.
    • Message : Impossible de créer un nouveau débit, car le paiement précédent n’a pas encore réussi (ou) Le paiement le plus récent de cette facture n’a pas échoué
  • UNSUCCESSFUL_PAYMENT_ID
    • Déclencheur : L’identifiant du paiement fait référence à un paiement qui n’a pas réussi
    • Message : L’identifiant du paiement possède un statut d’échec.

Connecteurs et BYOP

Ces erreurs concernent les connecteurs de paiement appartenant au marchand (Bring Your Own Processor, ou BYOP).
  • BYOP_CONNECTOR_DISABLED
    • Déclencheur : Mise à jour du moyen de paiement d’un abonnement acheminé via un connecteur BYOP désactivé. Dodo Payments ne bascule pas vers ses propres connecteurs ; réactivez d’abord le connecteur.
    • Message : L’abonnement est acheminé via le connecteur du marchand (BYOP), actuellement désactivé
  • BYOP_CUSTOM_INVOICE_ADDRESS_MISSING
    • Déclencheur : Un paiement acheminé via le connecteur du marchand (BYOP) ne possède aucune adresse de facture personnalisée
    • Message : Une adresse de facture BYOP personnalisée est requise lorsqu’un paiement est acheminé via le connecteur du marchand
  • CONNECTOR_LABEL_ALREADY_EXISTS
    • Déclencheur : Création d’un connecteur avec un libellé qui existe déjà
    • Message : Un connecteur portant ce libellé existe déjà. Choisissez un autre libellé.

Remboursements

  • EXISTING_REFUND_REQUEST_PROCESSING
    • Déclencheur : Une demande de remboursement précédente est toujours en cours de traitement
    • Message : Une demande de remboursement avec le statut « Pending » est toujours en cours de traitement
  • LINE_ITEM_FULLY_REFUNDED
    • Déclencheur : Tentative de rembourser un élément de ligne déjà entièrement remboursé
    • Message : L’élément de ligne {id} a été entièrement remboursé et ne peut pas être remboursé davantage.
  • LINE_ITEM_NOT_FOUND
    • Déclencheur : L’identifiant de l’élément ne fait pas partie du paiement référencé
    • Message : Élément de ligne {id} introuvable dans le paiement
  • LINE_ITEM_PRORATED
    • Déclencheur : Remboursement ou mise à jour concernant un élément de ligne proratisé
    • Message : L’élément de ligne {id} ne peut pas être remboursé, car il est proratisé
  • LINE_ITEM_REFUND_AMOUNT_TOO_HIGH
    • Déclencheur : Le montant du remboursement, taxes incluses, est supérieur au montant payé
    • Message : Le montant du remboursement demandé pour l’élément de ligne {id}, taxes incluses, est {amount}, ce qui dépasse le montant payé {amount}
  • LINE_ITEM_REFUND_AMOUNT_TOO_LOW
    • Déclencheur : Le montant du remboursement est inférieur au seuil minimal
    • Message : Le montant du remboursement demandé pour l’élément de ligne {id} est {amount}, ce qui est trop faible
  • NOTHING_TO_REFUND
    • Déclencheur : Aucun montant remboursable ne reste, car tous les éléments de ligne positifs ont déjà été entièrement remboursés
    • Message : Aucun montant remboursable restant. Tous les éléments de ligne positifs ont été entièrement remboursés.
  • PARTIAL_REFUND_NOT_ALLOWED
    • Déclencheur : Remboursement partiel tenté avec un moyen de paiement prenant uniquement en charge les remboursements complets
    • Message : Les remboursements partiels ne sont pas autorisés pour ce moyen de paiement
  • PAYMENT_ALREADY_REFUNDED
    • Déclencheur : Remboursement en double
    • Message : Ce paiement a déjà été remboursé
  • PAYMENT_HAS_BEEN_REFUNDED
    • Déclencheur : Le paiement a été entièrement remboursé
    • Message : L’identifiant du paiement a été entièrement remboursé.
  • REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT
    • Déclencheur : Le montant total du remboursement est supérieur au montant payé
    • Message : Le montant du remboursement calculé est supérieur au montant payé
  • REFUND_WINDOW_EXPIRED
    • Déclencheur : Le remboursement est demandé en dehors du délai autorisé
    • Message : Les remboursements ne peuvent pas être initiés {days} jours après la création du paiement. Contactez support@dodopayments.com.
  • ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED
    • Déclencheur : Tentative de rembourser un paiement d’un montant nul
    • Message : Impossible de rembourser un paiement dont le montant monétaire est nul

Abonnements et modules complémentaires

  • ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Déclencheur : Tentative d’ajouter des modules complémentaires à un abonnement avec facturation basée sur l’utilisation
    • Message : Les modules complémentaires des abonnements ne sont pas pris en charge pour la facturation basée sur l’utilisation
  • ADDONS_NOT_ALLOWED_FOR_ON_DEMAND
    • Déclencheur : Tentative d’ajouter des modules complémentaires à un abonnement à la demande
    • Message : Les modules complémentaires ne sont pas autorisés pour les abonnements à la demande
  • CANCEL_SCHEDULED_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Déclencheur : Le Customer Portal tente d’annuler une modification de plan programmée alors que l’entreprise a désactivé cette action
    • Message : L’annulation d’une modification de plan programmée est désactivée pour le Customer Portal.
  • CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Déclencheur : Tentative de facturer un abonnement programmé pour être annulé
    • Message : Abonnement programmé pour être annulé
  • CUSTOMER_HAS_EXISTING_SUBSCRIPTION
    • Déclencheur : Création d’un abonnement pour un client qui en possède déjà un, lorsque l’entreprise n’autorise pas plusieurs abonnements par client
    • Message : Le client {id} possède déjà un abonnement. Pour autoriser plusieurs abonnements par client, modifiez les paramètres de l’entreprise
  • DO_NOT_BILL_NOT_ALLOWED_IN_CUSTOMER_PORTAL
    • Déclencheur : Le mode de proratisation do_not_bill est utilisé dans une modification de plan du Customer Portal
    • Message : Le mode de proratisation do_not_bill n’est pas autorisé dans le Customer Portal
  • DUPLICATE_ADDON_IDS_IN_REQUEST
    • Déclencheur : Le même addon_id apparaît plusieurs fois dans la requête
    • Message : Les identifiants de modules complémentaires en double ne sont pas autorisés
  • INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED
    • Déclencheur : Modification de plan sur un abonnement inactif
    • Message : La modification de plan n’est pas prise en charge pour les abonnements inactifs
  • INVALID_PRORATION_MODE_WITH_NEXT_BILLING_DATE
    • Déclencheur : Utilisation d’un mode de proratisation autre que full_immediately avec effective_at: next_billing_date
    • Message : Seul le mode de proratisation full_immediately est autorisé avec effective_at: next_billing_date
  • MISSING_ADDON_IDS
    • Déclencheur : La liste addon_id est vide ou contient des identifiants inconnus
    • Message : Un ou plusieurs identifiants de produit n’existent pas : {id}
  • ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED
    • Déclencheur : Modification de plan sur un abonnement à la demande
    • Message : La modification de plan n’est pas prise en charge pour les abonnements à la demande
  • ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED
    • Déclencheur : Tentative d’utiliser un abonnement à la demande avec une facturation basée sur l’utilisation
    • Message : Les abonnements à la demande ne sont pas pris en charge pour la facturation basée sur l’utilisation
  • ONE_TIME_PRODUCTS_NOT_ALLOWED_FOR_ON_DEMAND
    • Déclencheur : Produit ponctuel ajouté à un abonnement à la demande
    • Message : Les produits ponctuels ne sont pas autorisés pour les abonnements à la demande
  • PENDING_PLAN_CHANGE_EXISTS
    • Déclencheur : Une nouvelle modification de plan est demandée alors qu’une modification précédente est toujours en attente de paiement. Pour remplacer une modification associée à un lien de paiement en attente, définissez cancel_older_payment_link: true.
    • Message : Une modification de plan est déjà en attente pour cet abonnement. Veuillez attendre la fin du paiement en cours.
  • PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Déclencheur : Modification de plan via le Customer Portal alors que l’entreprise l’a désactivée
    • Message : La modification du plan d’abonnement via le Customer Portal est désactivée.
  • PLAN_CHANGE_LINK_CANCEL_FAILED
    • Déclencheur : Une modification de plan avec cancel_older_payment_link: true n’a pas pu annuler le lien de paiement précédent. Rien n’a été modifié, vous pouvez donc réessayer la demande.
    • Message : Impossible d’annuler le lien de paiement précédent. Réessayez.
  • PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Déclencheur : Une modification de plan sur un abonnement dont l’annulation est programmée
    • Message : Annulation de l’abonnement programmée
  • PLAN_CHANGE_PAYMENT_ALREADY_COMPLETED
    • Déclencheur : Une modification de plan avec cancel_older_payment_link: true alors que le client a déjà payé la modification de plan précédente. Cette modification est appliquée ; ne réessayez donc pas.
    • Message : Le client a déjà payé la modification de plan précédente. Elle sera appliquée sous peu.
  • PLAN_CHANGE_PAYMENT_IN_PROGRESS
    • Déclencheur : Une modification de plan avec cancel_older_payment_link: true alors que le client paie la modification de plan précédente, par exemple lors de 3D Secure. Réessayez une fois le paiement terminé ou échoué.
    • Message : Le client paie actuellement la modification de plan précédente. Réessayez plus tard.
  • SCHEDULE_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Déclencheur : Programmation d’une modification de plan via le Customer Portal alors que l’entreprise a désactivé cette fonctionnalité
    • Message : La programmation des modifications de plan est désactivée pour cette entreprise.
  • SCHEDULED_PLAN_CHANGE_EXISTS
    • Déclencheur : Création d’une modification de plan programmée alors qu’il en existe déjà une
    • Message : Une modification de plan programmée existe déjà pour cet abonnement. Veuillez annuler la modification programmée existante avant d’en créer une nouvelle.
  • SCHEDULED_PLAN_CHANGE_NOT_FOUND
    • Déclencheur : Référence ou annulation d’une modification de plan programmée qui n’existe pas
    • Message : Aucune modification de plan programmée trouvée pour cet abonnement.
  • SUBSCRIPTION_EXPIRED
    • Déclencheur : Facturation d’un abonnement après sa date expires_at
    • Message : L’abonnement a expiré, impossible de créer de nouveaux prélèvements
  • SUBSCRIPTION_HAS_NO_PAYMENT_METHOD
    • Déclencheur : Nouvelle tentative manuelle pour un abonnement ne disposant d’aucun moyen de paiement enregistré à débiter hors session
    • Message : Aucun moyen de paiement enregistré à débiter pour cet abonnement
  • SUBSCRIPTION_INACTIVE
    • Déclencheur : Le statut de l’abonnement n’est pas active
    • Message : L’abonnement n’est pas actif (ou) Cet abonnement n’est pas en ligne ; son annulation ne peut donc pas être programmée
  • SUBSCRIPTION_NOT_ON_DEMAND
    • Déclencheur : Action à la demande sur un abonnement facturé selon un intervalle fixe
    • Message : L’abonnement n’est déjà plus à la demande
  • SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED
    • Déclencheur : Les nouvelles tentatives de paiement de l’abonnement ont dépassé le nombre maximal de tentatives
    • Message : La limite maximale de 10 tentatives a été dépassée pour cet abonnement

Clients et liste de blocage

  • CUSTOMER_ALREADY_BLOCKED
    • Déclencheur : Blocage d’un client déjà présent dans la liste de blocage et ne disposant plus d’abonnements actifs à annuler (HTTP 409)
    • Message : Ce client figure déjà dans la liste de blocage
  • PORTAL_ACTION_NOT_PERMITTED
    • Déclencheur : Un client bloqué appelle une route d’écriture du Customer Portal : annuler, mettre en pause, reprendre, modifier le plan ou mettre à jour le moyen de paiement (HTTP 403). Les routes de lecture restent ouvertes. Le code et le message ne mentionnent volontairement aucune cause.
    • Message : Cette action n’est pas disponible.

Produits, panier et marques

  • BRAND_ALREADY_ARCHIVED
    • Déclencheur : Archivage d’une marque déjà archivée
    • Message : La marque est déjà archivée
  • BRAND_ARCHIVED
    • Déclencheur : Mise à jour d’une marque archivée, soumission de celle-ci pour vérification ou association d’un nouveau produit, d’une collection de produits ou d’un abonnement à celle-ci
    • Message : La marque est archivée (ou) La marque est archivée et ne peut pas être mise à jour (ou) La marque est archivée et ne peut pas être soumise pour vérification
  • BRAND_ARCHIVE_TARGET_REQUIRED
    • Déclencheur : Archivage d’une marque qui contient encore des produits, des abonnements actifs ou des collections de produits sans cible move_products_to
    • Message : La marque contient {count} produit(s). Définissez move_products_to sur une marque cible pour les associer à nouveau. Le message mentionne plutôt les abonnements actifs ou les collections de produits lorsque ceux-ci empêchent l’archivage.
  • BRAND_MISMATCH
    • Déclencheur : Les articles du panier appartiennent à différentes marques
    • Message : Tous les articles du panier de produits doivent appartenir à la même marque
  • BRAND_NOT_ENABLED
    • Déclencheur : La marque est désactivée ou inactive
    • Message : La marque fournie n’est pas activée
  • BRAND_SUBMISSION_NOT_ENABLED
    • Déclencheur : La fonctionnalité de nouvelle soumission de la vérification de marque n’est pas activée
    • Message : Brand verificatin resubmission is not enabled (orthographié exactement comme l’API le renvoie)
  • CANNOT_ARCHIVE_PRIMARY_BRAND
    • Déclencheur : Archivage de la marque principale, dont l’identifiant de marque est l’identifiant de l’entreprise
    • Message : La marque principale ne peut pas être archivée
  • FILE_IN_USE
    • Déclencheur : Suppression d’un fichier de produit numérique encore référencé par des droits actifs
    • Message : Le fichier numérique est référencé par des droits actifs
  • INVALID_BRAND_ARCHIVE_TARGET
    • Déclencheur : move_products_to désigne la marque en cours d’archivage, une marque archivée ou une marque appartenant à une autre entreprise
    • Message : move_products_to doit être une marque de cette entreprise qui n’est pas archivée (ou) move_products_to ne peut pas être la marque que vous archivez
  • INVALID_SUGGESTED_PRICE
    • Déclencheur : Un prix suggéré Pay What You Want est inférieur au prix minimal
    • Message : Le prix suggéré ne peut pas être inférieur au prix minimal. Dans le cas de Pay What You Want, le prix est considéré comme le montant minimal accepté
  • LOCALIZED_PRICE_ALREADY_EXISTS
    • Déclencheur : Un prix localisé existe déjà pour ce produit et ce pays ou cette devise
    • Message : Un prix localisé pour ce produit et ce pays/cette devise existe déjà
  • LOCALIZED_PRICE_DUPLICATES_BASE
    • Déclencheur : Le prix localisé est identique à la devise ou au pays de base du produit
    • Message : Le prix localisé est identique à la devise/au pays de base du produit
  • LOCALIZED_PRICE_SHAPE_MISMATCH
    • Déclencheur : La structure du prix localisé ne correspond pas au pricing_mode du produit
    • Message : La structure du prix localisé ne correspond pas au pricing_mode du produit
  • MISSING_PRODUCT_INFORMATION
    • Déclencheur : Le produit existe, mais des informations obligatoires sont manquantes
    • Message : Le produit {id} existe, mais d’autres informations obligatoires sont manquantes ou invalides
  • PAY_AS_YOU_WANT_AMOUNT_REQUIRED
    • Déclencheur : Le montant est manquant pour un produit Pay What You Want
    • Message : Le montant est obligatoire pour un produit Pay What You Want
  • PRODUCT_CART_EMTPY
    • Déclencheur : Un panier de produits vide est envoyé
    • Message : product_cart est vide (le code d’erreur est intentionnellement orthographié EMTPY pour correspondre exactement à la valeur renvoyée par l’API)
  • PRODUCT_COLLECTION_IS_DELETED
    • Déclencheur : Opération sur une collection de produits supprimée
    • Message : Aucun message
  • PRODUCT_COLLECTION_MUST_HAVE_PRODUCTS
    • Déclencheur : Suppression du dernier produit, ou du dernier groupe contenant des produits, d’une collection
    • Message : Impossible de supprimer le dernier produit d’une collection. Archivez plutôt la collection. (ou) Impossible de supprimer le dernier groupe contenant des produits. Archivez plutôt la collection.
  • PRODUCT_IS_DELETED
    • Déclencheur : Le produit a été supprimé
    • Message : Aucun message
  • PRODUCT_PRICING_MODE_REQUIRED
    • Déclencheur : Ajout de prix localisés avant la définition du pricing_mode du produit
    • Message : Le pricing_mode du produit doit être défini avant l’ajout de prix localisés
  • SLUG_ALREADY_TAKEN
    • Déclencheur : Le slug ou l’URL courte du produit demandé est déjà utilisé
    • Message : Le slug est déjà utilisé
  • UNABLE_TO_EDIT_PRIMARY_BRAND
    • Déclencheur : Tentative de mise à jour de la marque principale via l’API de marque standard
    • Message : La marque principale ne peut pas être mise à jour via cet endpoint d’API.

Réductions

  • DISCOUNT_ALREADY_USED_ON_SUBSCRIPTION
    • Déclencheur : Application répétée d’une réduction déjà utilisée pour cet abonnement
    • Message : Cette réduction a déjà été utilisée pour cet abonnement
  • DISCOUNT_CODE_ALREADY_EXISTS
    • Déclencheur : Création d’un code de réduction qui existe déjà
    • Message : Le code de réduction existe déjà
  • DISCOUNT_CODE_EXPIRED
    • Déclencheur : La date expires_at du code de réduction est dépassée
    • Message : Le code de réduction a expiré
  • DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED
    • Déclencheur : Utilisation du code après avoir atteint son usage_limit
    • Message : La limite d’utilisation ne peut pas être inférieure à times_used (ou) Le code de réduction a atteint sa limite d’utilisation
    • Note : Définitif. Le code est épuisé, ne réessayez donc pas.
  • DISCOUNT_CONCURRENT_REDEMPTION
    • Déclencheur : Une autre utilisation du même code a conservé trop longtemps le verrou de limite d’utilisation (HTTP 503)
    • Message : La réduction est utilisée simultanément ; veuillez réessayer
    • Note : Temporaire. Le code peut encore être disponible, la demande peut donc être relancée sans risque. Ne présentez pas ce message au client comme indiquant que le code est épuisé.
  • DISCOUNT_CURRENCY_OPTION_INVALID
    • Déclencheur : currency_options invalide lors de la création ou de la mise à jour
    • Message : Une réduction forfaitaire nécessite au moins une option de devise avec une valeur par défaut résolvable (ou) Les options de devise en double ne sont pas autorisées (ou) Une seule option de devise peut être définie comme valeur par défaut
  • DISCOUNT_CUSTOMER_NOT_ELIGIBLE
    • Déclencheur : Le client ne respecte pas les customer_eligibility du code (first_time, existing ou n’est pas présent dans la liste d’autorisation d’un code specific)
    • Message : Le client n’est pas éligible à ce code de réduction
  • DISCOUNT_MINIMUM_SUBTOTAL_NOT_MET
    • Déclencheur : Le sous-total du panier est inférieur au minimum_subtotal configuré pour la devise du checkout
    • Message : Le sous-total du panier est inférieur au sous-total minimal requis par la réduction
  • DISCOUNT_NOT_YET_ACTIVE
    • Déclencheur : Le code est utilisé avant sa date starts_at
    • Message : Le code de réduction n’est pas encore actif (starts_at est dans le futur)
  • DISCOUNT_PER_CUSTOMER_USAGE_LIMIT_EXCEEDED
    • Déclencheur : Le client a déjà utilisé le code per_customer_usage_limit fois
    • Message : La limite d’utilisation par client a été dépassée pour ce code de réduction
  • DISCOUNT_NOT_APPLICABLE_TO_NEW_PRODUCT
    • Déclencheur : Modification du plan vers un produit auquel la réduction existante ne s’applique pas
    • Message : La réduction ne s’applique pas au produit du nouveau plan
  • DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND
    • Déclencheur : Le code est appliqué à un abonnement à la demande
    • Message : Le coupon de réduction n’est pas disponible pour les abonnements à la demande
  • DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT
    • Déclencheur : Le code est appliqué à des produits qu’il ne couvre pas
    • Message : Le coupon de réduction n’est pas disponible pour ce produit
  • INVALID_DISCOUNT_CODE
    • Déclencheur : Le code n’existe pas ou ne s’applique à aucun produit du panier
    • Message : Code de réduction invalide (ou) Le code de réduction ne peut être appliqué à aucun produit du panier
  • INVALID_PERCENTAGE
    • Déclencheur : Le pourcentage est supérieur à 100 % (10 000 points de base)
    • Message : Le pourcentage ne peut pas dépasser 10000 (ou) Le montant du code de réduction ne peut pas dépasser 100 %
  • UNSUPPORTED_DISCOUNT_TYPE
    • Déclencheur : Type de réduction non pris en charge. percentage et flat sont tous deux pris en charge ; les réductions au montant unitaire ne le sont pas.
    • Message : Seuls les codes de réduction en pourcentage et forfaitaires sont pris en charge (ou) Seuls les codes de réduction en pourcentage sont actuellement pris en charge

Clés de licence

  • ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT
    • Déclencheur : La nouvelle limite d’activation d’une clé de licence est inférieure à son nombre actuel d’instances
    • Message : La nouvelle limite d’activation ne peut pas être inférieure au nombre actuel d’instances
  • INACTIVE_LICENSE_KEY
    • Déclencheur : Le statut de la clé de licence n’est pas active
    • Message : La clé de licence n’est pas active
  • LICENSE_KEY_LIMIT_REACHED
    • Déclencheur : Le nombre d’activations a atteint la limite d’activation
    • Message : Limite d’activation de la clé de licence atteinte
  • LICENSE_KEY_NOT_FOUND
    • Déclencheur : L’ID d’instance ou l’ID de clé de licence est invalide
    • Message : Instance de clé de licence introuvable ou n’appartenant pas à cette clé de licence
  • NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS
    • Déclencheur : Tentative de définir une date d’expiration sur une clé de licence basée sur un abonnement
    • Message : Impossible de définir une date d’expiration pour une clé de licence basée sur un abonnement

Facturation basée sur l’utilisation et compteurs

  • DUPLICATE_METER_IDS_IN_REQUEST
    • Déclencheur : Le même meter ID apparaît plusieurs fois dans la demande
    • Message : Les Meter Ids en double ne sont pas autorisés
  • INVALID_QUANTITY
    • Déclencheur : Quantité différente de 1 pour un produit dont la tarification est basée sur l’utilisation
    • Message : Une seule quantité de 1 est autorisée pour les produits dont le prix est basé sur l’utilisation
  • METER_IS_DELETED
    • Déclencheur : Tentative d’utiliser un compteur supprimé
    • Message : Le compteur a déjà été supprimé
  • MISSING_METER_IDS
    • Déclencheur : La liste des IDs de compteurs est vide ou contient des IDs invalides
    • Message : Un ou plusieurs IDs de compteurs n’existent pas : {id}

Facturation basée sur les crédits

  • CREDIT_ENTITLEMENT_IS_DELETED
    • Déclencheur : Opération sur un droit de crédit qui a été supprimé
    • Message : Le droit de crédit a déjà été supprimé
  • CREDIT_ENTITLEMENT_NAME_ALREADY_EXISTS
    • Déclencheur : Création d’un droit de crédit avec un nom qui existe déjà
    • Message : Un droit de crédit portant ce nom existe déjà
  • OVERAGE_LIMIT_EXCEEDED
    • Déclencheur : Une utilisation ou une déduction de crédits dépasserait la limite de dépassement configurée
    • Message : Limite de dépassement atteinte

Portefeuille

  • INSUFFICIENT_WALLET_FUNDS
    • Déclencheur : Le solde du portefeuille est inférieur au montant du débit
    • Message : Fonds insuffisants dans le portefeuille
  • NEGATIVE_BALANCE_ADJUSTMENT
    • Déclencheur : Tentative de rendre négatif le solde du portefeuille
    • Message : Le solde du portefeuille ne peut pas être négatif

Devise, taxes et région

  • EXCHANGE_RATE_NOT_FOUND
    • Déclencheur : Aucun taux de change n’existe pour la paire de devises
    • Message : Taux de change introuvable pour convertir de {currency} vers {currency}
  • INVALID_TAX_ID
    • Déclencheur : Le VAT, GST ou TIN n’a pas été validé
    • Message : L’ID fiscal est invalide
  • REQUEST_AMOUNT_BELOW_MINIMUM
    • Déclencheur : Le montant est inférieur au minimum défini pour le produit
    • Message : Le montant ne peut pas être inférieur au montant minimal indiqué pour le produit
  • TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT
    • Déclencheur : Le total combiné du panier, taxes comprises, est inférieur au montant minimal requis pour traiter un paiement. Le minimum dépend de la devise de facturation et du fait que le paiement soit ponctuel ou associé à un abonnement. Pour les devises autres que USD, EUR et GBP, le total est également comparé au minimum en USD. Consultez Montants minimaux
    • Message : Un montant minimal de {display_str} est requis pour traiter le paiement, par exemple Minimum amount of 1.00 USD is required to process payment
  • UNSUPPORTED_BILLING_CURRENCY
    • Déclencheur : La devise de facturation demandée n’est pas prise en charge pour cet abonnement
    • Message : Les devises de facturation autres que USD ne sont pas prises en charge pour les abonnements
  • UNSUPPORTED_COUNTRY
    • Déclencheur : Le pays n’est pas pris en charge
    • Message : Le pays {country_name} n’est actuellement pas pris en charge
  • UNSUPPORTED_CURRENCY
    • Déclencheur : La devise du produit ou de l’add-on n’est pas prise en charge pour les prélèvements par Dodo Payments. Les prix de base peuvent être définis dans toute devise acceptée ; cette erreur signifie donc généralement que le code de devise est invalide ou non pris en charge.
    • Message : La devise n’est actuellement pas prise en charge (ou) Seuls les produits en USD et INR sont actuellement pris en charge (ou) Seuls USD et INR sont actuellement pris en charge pour le prix de l’add-on (ou) Vous ne pouvez demander que USD ou INR pour billing_currency (ou) Devise non prise en charge (ou) Devise inattendue pour les abonnements par carte indienne
  • UNSUPPORTED_TAX_CATEGORY
    • Déclencheur : La catégorie fiscale ne fait pas partie des valeurs prises en charge
    • Message : La catégorie {category} n’est actuellement pas prise en charge

Validation et demandes

  • DUPLICATE_LINE_ITEMS_IN_REQUEST
    • Déclencheur : Le même item_id apparaît plusieurs fois dans items[]
    • Message : Des item_ids en double sont spécifiés dans le tableau items
  • INVALID_QUERY_PARAMS
    • Déclencheur : Paramètres de requête mutuellement exclusifs ou mal formés
    • Message : Les paramètres de requête doivent contenir soit time_frame, soit (start, end) (ou) Le début de la plage ne doit pas être postérieur à la fin
  • INVALID_REQUEST_BODY
    • Déclencheur : JSON mal formé ou violation du schéma
    • Message : Le corps de votre demande est invalide. Vérifiez les en-têtes et l’objet de votre demande.
  • INVALID_REQUEST_PARAMETERS
    • Déclencheur : Valeurs de paramètres valides du point de vue du format, mais pas du point de vue sémantique, par exemple une date passée
    • Message : Impossible de définir next_billing_date dans le passé (ou) Un checkout contenant plusieurs produits d’abonnement ne peut pas contenir de produits ponctuels (ou) Tous les IDs de produits doivent être uniques (ou) Les abonnements à la demande ne peuvent pas contenir plusieurs produits (ou) Un checkout peut contenir au maximum 20 produits d’abonnement (ou) Les produits d’abonnement en double dans un checkout ne sont pas autorisés
  • MAXIMUM_KEYS_REACHED
    • Déclencheur : Les métadonnées ou champs personnalisés dépassent 50 paires clé-valeur
    • Message : Plus de 50 paires clé-valeur

Général et système

  • INTEGER_CONVERSION_FAILURE
    • Déclencheur : Échec d’une conversion côté serveur entre un entier et une chaîne ou une valeur décimale, par exemple lorsqu’un total de panier est trop élevé pour être traité
    • Message : Échec de conversion d’entier (ou) Le total du panier est trop élevé pour être traité. Réduisez la quantité ou sélectionnez une autre devise de facturation.
  • INTERNAL_SERVER_ERROR
    • Déclencheur : Erreur serveur inattendue. Consignez les détails de la demande de votre côté.
    • Message : Aucun message public (500 générique, message est généralement null)
  • NOT_FOUND
    • Déclencheur : 404 générique pour toute ressource manquante
    • Message : Élément introuvable (ou un message plus précis indiquant ce qui manque)
  • TOO_MANY_REQUESTS
    • Déclencheur : Une limite de débit a été dépassée (HTTP 429)
    • Message : Aucun message
  • UNSUPPORTED_ACTION
    • Déclencheur : Action non prise en charge par le type de ressource
    • Message : La modification des plans pour les abonnements basés sur l’utilisation n’est pas prise en charge

Bonnes pratiques

Suivez ces pratiques lorsque vous gérez les erreurs d’API :
  1. Gérez chaque réponse d’erreur dans votre application et utilisez code pour déterminer le comportement plutôt que message.
  2. Consignez le statut HTTP, code et message de chaque demande ayant échoué.
  3. Affichez aux utilisateurs finaux un message rédigé pour eux plutôt que le message brut de l’API.
  4. Ne relancez que les erreurs temporaires, telles que les réponses 429 et 5xx ou DISCOUNT_CONCURRENT_REDEMPTION, après un délai.
  5. Contactez l’assistance pour les erreurs que vous ne pouvez pas résoudre.

Assistance

Pour obtenir davantage d’aide concernant les codes d’erreur ou les problèmes d’intégration, contactez l’équipe d’assistance à l’adresse support@dodopayments.com.
Dernière modification le 8 octobre 2026