Skip to main content

Vue d’ensemble

L’API Dodo Payments utilise des codes d’état HTTP standard et des codes d’erreur personnalisés pour indiquer le succès ou l’échec des requêtes API. Lorsqu’une erreur se produit, l’API renvoie un code d’état HTTP approprié et une réponse JSON contenant des informations détaillées sur l’erreur. Chaque réponse d’erreur comprend :
  • Un code d’état HTTP indiquant la catégorie générale de l’erreur
  • Un code d’erreur spécifique qui identifie la nature exacte de l’erreur
  • Un message d’erreur lisible par l’homme expliquant ce qui s’est mal passé
  • Des détails supplémentaires sur l’erreur lorsque cela est applicable
Comprendre ces codes d’erreur et leurs significations est crucial pour :
  • Déboguer les problèmes d’intégration
  • Mettre en œuvre une gestion appropriée des erreurs dans votre application
  • Fournir des retours significatifs aux utilisateurs finaux
  • Maintenir un système de traitement des paiements robuste
Ce sont des erreurs d’API et de logique métier. Pour les raisons de refus de carte renvoyées lors d’un paiement échoué (comme INSUFFICIENT_FUNDS ou CARD_DECLINED), consultez plutôt la référence Échecs de transactions.

Codes d’erreur API standard

Format de réponse d’erreur

Lorsqu’une erreur se produit, l’API renvoie une réponse JSON avec la structure suivante :

Référence des codes d’erreur

Les codes d’erreur ci-dessous sont regroupés par zone de l’API à laquelle ils se rapportent. Chaque entrée liste la condition qui la déclenche et le message que renvoie l’API.

Authentification & Compte

  • UNAUTHORIZED
    • Déclencheur : Pas de clé API ou jeton/scope invalide
    • Message : Vous n’êtes pas autorisé à effectuer cette action
  • MERCHANT_NOT_LIVE
    • Déclencheur : L’entreprise est toujours en mode test
    • Message : Le commerçant n’est pas encore en production
  • BUSINESS_ARCHIVED
    • Déclencheur : Toute demande destinée au client (checkout, lien de paiement, vitrine, Customer Portal ou clé de licence) pour une entreprise archivée
    • Message : Cette entreprise est archivée et n’accepte plus les demandes

Paiements et checkout

  • CHECKOUT_SESSION_CONSUMED
    • Déclencheur : La session de checkout a déjà généré un paiement
    • Message : La session de checkout a déjà été utilisée
  • NO_ELIGIBLE_PAYMENT_METHODS
    • Déclencheur : Après filtrage, il ne reste rien
    • Message : Aucun moyen de paiement éligible trouvé
  • PAYMENT_NOT_SUCCEEDED
    • Déclencheur : Tentative de remboursement ou de traitement d’un paiement échoué
    • Message : Le paiement fourni n’a pas abouti
  • PREVIOUS_PAYMENT_PENDING
    • Déclencheur : Tentative de création d’une charge alors que la précédente est dans un état non terminal
    • Message : Impossible de créer une nouvelle charge, car le paiement précédent n’a pas encore abouti
  • UNSUCCESSFUL_PAYMENT_ID
    • Déclencheur : L’ID de paiement fait référence à un paiement échoué
    • Message : L’ID de paiement possède un statut d’échec.

Connecteurs et BYOP

Ces erreurs concernent les connecteurs de paiement appartenant au marchand (Bring Your Own Processor).
  • BYOP_CONNECTOR_DISABLED
    • Déclencheur : Mise à jour d’un moyen de paiement sur un abonnement acheminé via un connecteur BYOP désactivé
    • Message : L’abonnement est acheminé via le connecteur du marchand (BYOP), qui est actuellement désactivé
  • BYOP_CUSTOM_INVOICE_ADDRESS_MISSING
    • Déclencheur : Un paiement acheminé par le marchand (BYOP) ne comporte pas l’adresse de facture personnalisée requise
    • Message : L’adresse de facture personnalisée BYOP 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à. Veuillez choisir un autre libellé.

Remboursements

  • EXISTING_REFUND_REQUEST_PROCESSING
    • Déclencheur : La 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 remboursement d’un élément de ligne déjà entièrement remboursé
    • Message : L’élément de ligne a été entièrement remboursé et ne peut pas faire l’objet d’un remboursement supplémentaire.
  • LINE_ITEM_NOT_FOUND
    • Déclencheur : L’ID de l’élément ne fait pas partie du paiement référencé
    • Message : Élément de ligne introuvable dans le paiement
  • LINE_ITEM_PRORATED
    • Déclencheur : Tentative de remboursement ou de mise à jour d’une ligne au prorata
    • Message : L’élément de ligne ne peut pas être remboursé, car il est au prorata
  • LINE_ITEM_REFUND_AMOUNT_TOO_HIGH
    • Déclencheur : Montant du remboursement > montant payé (taxes incluses)
    • Message : Le montant du remboursement demandé pour l’élément de ligne , taxes incluses, est de , ce qui dépasse le montant payé de
  • LINE_ITEM_REFUND_AMOUNT_TOO_LOW
    • Déclencheur : Montant du remboursement inférieur au seuil minimal
    • Message : Le montant du remboursement demandé pour l’élément de ligne est de , ce qui est trop faible
  • NOTHING_TO_REFUND
    • Déclencheur : Aucun montant remboursable restant ; 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 : Tentative de remboursement partiel avec un moyen de paiement qui ne prend en charge que 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’ID de paiement a été entièrement remboursé.
  • REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT
    • Déclencheur : Montant total des remboursements > montant payé
    • Message : Le montant du remboursement calculé est supérieur au montant payé
  • REFUND_WINDOW_EXPIRED
    • Déclencheur : En dehors de la période de remboursement autorisée
    • Message : Les remboursements ne peuvent pas être initiés jours après la création du paiement. Contactez support@dodopayments.com.
  • ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED
    • Déclencheur : Tentative de remboursement d’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’ajout de modules complémentaires à des abonnements avec facturation basée sur l’utilisation
    • Message : Les modules complémentaires dans les 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’ajout de modules complémentaires à des abonnements à 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 : 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 facturation d’un abonnement programmé pour annulation
    • Message : Abonnement programmé pour annulation
  • CUSTOMER_HAS_EXISTING_SUBSCRIPTION
    • Déclencheur : Création d’un abonnement pour un client qui en possède déjà un, lorsque plusieurs abonnements par client ne sont pas autorisés
    • Message : Le client 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 demande
    • Message : Les ID 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 : Un mode de proratisation autre que full_immediately est utilisé 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 ID inconnus
    • Message : Un ou plusieurs ID de produit n’existent pas :
  • ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED
    • Déclencheur : Le remplacement de plan n’est pas autorisé pour les abonnements à 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’utilisation de la facturation à la demande avec la 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 précédente est toujours en attente de paiement
    • Message : Une modification de plan est déjà en attente pour cet abonnement. Veuillez attendre la fin du paiement actuel.
  • PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Déclencheur : Modification de plan via 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_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION
    • Déclencheur : Modification de plan tentée sur un abonnement programmé pour annulation
    • Message : Abonnement programmé pour annulation
  • SCHEDULE_PLAN_CHANGE_FOR_CUSTOMER_PORTAL_DISABLED
    • Déclencheur : Programmation d’une modification de plan via Customer Portal alors que l’entreprise l’a désactivée
    • 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’une autre existe déjà
    • 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 au-delà de expires_at
    • Message : L’abonnement a expiré ; impossible de créer de nouvelles charges
  • SUBSCRIPTION_INACTIVE
    • Déclencheur : Statut ≠ active
    • Message : L’abonnement n’est pas actif
  • SUBSCRIPTION_NOT_ON_DEMAND
    • Déclencheur : Abonnement à la demande attendu, mais intervalle fixe reçu
    • Message : L’abonnement n’est déjà plus à la demande
  • SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED
    • Déclencheur : Le nombre maximal de tentatives de paiement de l’abonnement a été dépassé
    • Message : La limite maximale de 10 tentatives a été dépassée pour cet abonnement

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 pour vérification ou ajout d’un nouveau produit, d’une collection de produits ou d’un abonnement à cette marque
    • Message : La marque est archivée et ne peut pas être mise à jour
  • 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 possède 12 produit(s). Définissez move_products_to sur une marque cible pour les réattribuer.
  • BRAND_MISMATCH
    • Déclencheur : Les éléments du panier appartiennent à différentes marques
    • Message : Tous les éléments 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 : La nouvelle soumission de la vérification de marque n’est pas activée
  • CANNOT_ARCHIVE_PRIMARY_BRAND
    • Déclencheur : Archivage de la marque principale, dont l’ID de marque est l’ID 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 archivée, une marque déjà archivée ou une marque d’une autre entreprise
    • Message : move_products_to doit désigner une marque de cette entreprise qui n’est pas archivée
  • INVALID_SUGGESTED_PRICE
    • Déclencheur : Prix PWYW < prix minimal autorisé
    • Message : Le prix suggéré ne peut pas être inférieur au prix minimal. Avec le modèle 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/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/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 existe, mais d’autres informations obligatoires sont manquantes ou invalides
  • PAY_AS_YOU_WANT_AMOUNT_REQUIRED
    • Déclencheur : Prix manquant pour un produit PWYW
    • Message : Le montant est obligatoire pour un produit pay as you want
  • PRODUCT_CART_EMTPY
    • Déclencheur : Panier de produits vide envoyé
    • Message : product_cart est vide (le code d’erreur est volontairement écrit EMTPY afin de correspondre à la valeur exacte 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.
  • PRODUCT_IS_DELETED
    • Déclencheur : Produit supprimé de manière réversible
    • 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 standard
    • Message : La marque principale ne peut pas être mise à jour via ce endpoint d’API.

Réductions

  • DISCOUNT_ALREADY_USED_ON_SUBSCRIPTION
    • Déclencheur : Réapplication d’une réduction déjà utilisée sur cet abonnement
    • Message : Cette réduction a déjà été utilisée sur cet abonnement
  • DISCOUNT_CODE_ALREADY_EXISTS
    • Déclencheur : Création d’un code de réduction en double
    • Message : Le code de réduction existe déjà
  • DISCOUNT_CODE_EXPIRED
    • Déclencheur : Code de réduction après sa date expires_at
    • Message : Le code de réduction a expiré
  • DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED
    • Déclencheur : Réutilisation de la réduction après avoir atteint usage_limit
    • Message : La limite d’utilisation ne peut pas être inférieure à times_used / Le code de réduction a atteint sa limite d’utilisation
    • Note : Terminal — le code est épuisé. N’effectuez pas de nouvelle tentative.
  • DISCOUNT_CONCURRENT_REDEMPTION
    • Déclencheur : Une autre utilisation du même code a conservé trop longtemps le verrou de la ligne de limite d’utilisation
    • Message : La réduction est utilisée simultanément ; veuillez réessayer
    • Note : Transitoire. Le code peut encore avoir des utilisations disponibles ; la demande peut donc être relancée en toute sécurité. Ne présentez pas cette erreur au client comme un « code épuisé ».
  • DISCOUNT_CURRENCY_OPTION_INVALID
    • Déclencheur : currency_options invalide lors de la création ou de la mise à jour
    • Message : Une réduction fixe nécessite au moins une option de devise avec une valeur par défaut résolvable / Les options de devise en double ne sont pas autorisées / Une seule option de devise peut être marquée comme valeur par défaut
  • DISCOUNT_CUSTOMER_NOT_ELIGIBLE
    • Déclencheur : Le client ne respecte pas le customer_eligibility du code (first_time, existing ou absence de la liste d’autorisation d’un code specific)
    • Message : Le client n’est pas éligible pour 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 : Code 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 de 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 : Code 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 : Code appliqué à des produits sans rapport
    • 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 pas
    • Message : Code de réduction invalide / Le code de réduction ne peut être appliqué à aucun produit du panier
  • INVALID_PERCENTAGE
    • Déclencheur : Pourcentage > 100 % (ou 10 000 points de base)
    • Message : Le pourcentage ne peut pas dépasser 10 000 / 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 pris en charge ; les réductions d’un montant par unité ne le sont pas.
    • Message : Seuls les codes de réduction en pourcentage et fixes sont pris en charge

Clés de licence

  • ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT
    • Déclencheur : Activations de clé de licence : nouvelle limite < nombre d’instances existantes
    • Message : La nouvelle limite d’activation ne peut pas être inférieure au nombre actuel d’instances
  • INACTIVE_LICENSE_KEY
    • Déclencheur : Statut de la clé ≠ active
    • Message : La clé de licence n’est pas active
  • LICENSE_KEY_LIMIT_REACHED
    • Déclencheur : Nombre d’activations = limite
    • Message : La limite d’activation de la clé de licence est atteinte
  • LICENSE_KEY_NOT_FOUND
    • Déclencheur : ID d’instance ou ID de clé 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éfinition d’une date d’expiration sur une clé 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 ID de compteur apparaît plusieurs fois dans la demande
    • Message : Les ID de compteur en double ne sont pas autorisés
  • INVALID_QUANTITY
    • Déclencheur : Quantité invalide spécifiée pour la tarification basée sur l’utilisation
    • Message : Une seule quantité est autorisée pour les produits à tarif basé sur l’utilisation
  • METER_IS_DELETED
    • Déclencheur : Tentative d’utilisation d’un compteur supprimé
    • Message : Le compteur a déjà été supprimé
  • MISSING_METER_IDS
    • Déclencheur : La liste d’ID de compteurs est vide ou contient des ID invalides
    • Message : Un ou plusieurs ID de compteurs n’existent pas :

Facturation basée sur les crédits

  • CREDIT_ENTITLEMENT_IS_DELETED
    • Déclencheur : Opération sur un droit de crédit 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 déduction d’utilisation ou de crédit dépasserait la limite de dépassement configurée
    • Message : La limite de dépassement a été dépassée

Portefeuille

  • INSUFFICIENT_WALLET_FUNDS
    • Déclencheur : Solde du portefeuille < montant du débit
    • Message : Fonds insuffisants dans le portefeuille
  • NEGATIVE_BALANCE_ADJUSTMENT
    • Déclencheur : Tentative de rendre le solde du portefeuille négatif
    • 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 pour la paire de devises from → to
    • Message : Taux de change introuvable pour convertir de Currency vers Currency
  • INVALID_TAX_ID
    • Déclencheur : Échec de validation de la TVA/GST/TIN
    • Message : L’identifiant fiscal est invalide
  • REQUEST_AMOUNT_BELOW_MINIMUM
    • Déclencheur : Montant < minimum du produit
    • Message : Le montant ne peut pas être inférieur au montant minimal spécifié pour le produit
  • TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT
    • Déclencheur : Total du panier < minimum de la passerelle
    • Message : Un montant minimal de est requis pour traiter le paiement
  • 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 l’USD ne sont pas prises en charge pour les abonnements
  • UNSUPPORTED_COUNTRY
    • Déclencheur : Zone géographique pas encore prise en charge
    • Message : Le pays n’est actuellement pas pris en charge
  • UNSUPPORTED_CURRENCY
    • Déclencheur : La devise du produit ou du module complémentaire n’est pas une devise dans laquelle Dodo Payments peut effectuer des prélèvements. Les prix de base peuvent être définis dans toute devise permettant les prélèvements ; cela signifie généralement que le code de devise est invalide ou pas encore pris en charge.
    • Message : La devise n’est actuellement pas prise en charge / Seuls les produits en USD et INR sont actuellement pris en charge / Seuls l’USD et l’INR sont actuellement pris en charge pour le prix des modules complémentaires / Vous pouvez uniquement demander l’USD ou l’INR pour billing_currency / Devise non prise en charge / Devise inattendue pour les abonnements par carte indienne
  • UNSUPPORTED_TAX_CATEGORY
    • Déclencheur : La chaîne de catégorie fiscale ne figure pas dans l’énumération
    • Message : La catégorie n’est actuellement pas prise en charge

Validation et demandes

  • DUPLICATE_LINE_ITEMS_IN_REQUEST
    • Déclencheur : Le même item_id apparaît deux fois dans items[]
    • Message : Des item_ids en double ont été 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 uniquement time_frame ou (start, end)
  • INVALID_REQUEST_BODY
    • Déclencheur : JSON mal formé ou violation du schéma
    • Message : Le corps de votre demande est invalide. Veuillez vérifier les en-têtes et l’objet de votre demande.
  • INVALID_REQUEST_PARAMETERS
    • Déclencheur : Sémantique incorrecte (par exemple, date passée)
    • Message : Impossible de modifier next_billing_date pour le définir dans le passé
  • MAXIMUM_KEYS_REACHED
    • Déclencheur : Metadata / custom-fields dépassent 50 paires
    • Message : Plus de 50 paires clé-valeur

Général et système

  • INTEGER_CONVERSION_FAILURE
    • Déclencheur : Toute conversion d’un entier vers une chaîne/décimale qui échoue côté serveur
    • Message : Échec de conversion d’entier
  • INTERNAL_SERVER_ERROR
    • Déclencheur : Exceptions non interceptées ; vous devez consigner les détails côté serveur
    • Message : Aucun message public (500 générique)
  • NOT_FOUND
    • Déclencheur : 404 générique pour toute ressource manquante
    • Message : Élément introuvable (ou message plus spécifique)
  • TOO_MANY_REQUESTS
    • Déclencheur : Limitation de débit 429
    • Message : Aucun message
  • UNSUPPORTED_ACTION
    • Déclencheur : Action non prise en charge pour le type de ressource
    • Message : La modification de plan pour les abonnements basés sur l’utilisation n’est pas prise en charge

Bonnes pratiques

  1. Gérez toujours les erreurs de manière élégante dans votre application
  2. Mettez en place une journalisation appropriée des erreurs
  3. Utilisez des messages d’erreur adaptés aux utilisateurs finaux
  4. Mettez en place une logique de nouvelle tentative pour les erreurs transitoires
  5. Contactez le support pour les problèmes non résolus

Support

Pour obtenir une aide supplémentaire concernant les codes d’erreur ou les problèmes d’intégration, veuillez contacter notre équipe de support à l’adresse support@dodopayments.com.
Dernière modification le 21 août 2026