Integration

Erreurs

Toutes les erreurs partagent la meme enveloppe et portent un request_id exploitable dans les API Logs.

Enveloppe

{
  "error": {
    "type": "validation_error",
    "code": "invalid_parameters",
    "message": "La requete contient des parametres invalides.",
    "fields": [
      { "field": "amount", "message": "Le montant doit etre superieur a zero." },
      { "field": "currency", "message": "Devise non supportee : ZZZ." }
    ],
    "doc_url": "/docs/errors"
  },
  "request_id": "req_7k2m9dqz3x"
}

Types d’erreur

ParametreTypeDescription
authentication_error401Cle API absente, invalide ou revoquee.
authorization_error403Droits insuffisants — cle publique en ecriture, compte suspendu, role trop faible.
invalid_request_error400Requete malformee (JSON invalide, corps non objet).
validation_error422Parametres invalides. Le detail est dans fields[].
idempotency_error409Cle d’idempotence reutilisee avec des parametres differents, ou requete en cours.
rate_limit_error429Trop de requetes sur la fenetre courante.
not_found_error404Ressource inexistante ou hors de votre tenant.
conflict_error409Operation incompatible avec l’etat courant (annuler un paiement deja reussi).
connection_error422 / 502Aucune connexion disponible, ou connexion indisponible.
payment_error422Le paiement a ete refuse.
insufficient_funds_error422Solde marchand insuffisant pour un payout ou un remboursement.
api_error500Erreur interne. Reessayez avec un backoff.

Codes d’echec de transaction

Lorsqu’un paiement ou un payout echoue, l’objet porte un champ failure normalise, independant du reseau utilise.

CodeSignification
insufficient_fundsLe solde du compte client est insuffisant.
customer_declinedLe client a refuse l’autorisation.
authorization_timeoutAucune confirmation dans le delai imparti.
network_errorLe reseau de paiement est temporairement indisponible.
cancelled_by_customerPaiement annule par le client.
cancelled_by_merchantPaiement annule par le marchand.
invalid_accountCompte destinataire invalide ou inexistant.
card_declinedCarte refusee par l’emetteur.

Bonnes pratiques

  • Journalisez toujours le request_id : il permet de retrouver l’appel exact dans Developers → API Logs.
  • Ne rejouez pas les erreurs 4xx sans corriger la requete — sauf 429, a rejouer apres Retry-After.
  • Rejouez les 5xx avec un backoff exponentiel et la meme Idempotency-Key : aucune transaction en double ne sera creee.
  • Un echec de transaction (failure) n’est pas une erreur HTTP : la requete a reussi, c’est le paiement qui a echoue.