Aller au contenu principal

Codes d’erreur

La source de vérité faisant autorité pour les métadonnées d’erreur de la plateforme est le catalogue backend dans IkawaariErrorCatalog et IkawaariPaaSDomainErrorCodes.

Cette page documente les modules d’erreur implémentés, les codes représentatifs, le comportement des statuts HTTP et les recommandations de retry.

Format d’erreur

Les surfaces API et marchandes renvoient généralement des payloads d’erreur structurés. Une forme typique est :

{
"error": {
"code": "IKW-PAYOUT-003",
"message": "Description lisible par un humain",
"type": "domain_error"
}
}

Politique de source de vérité

  • Les valeurs de code proviennent de IkawaariPaaSDomainErrorCodes
  • Le module, le statut HTTP et la possibilité de retry proviennent de IkawaariErrorCatalog
  • Certains alias de moteurs rétrocompatibles sont également mappés dans le catalogue

Référence des statuts HTTP

CodeSignification
200Succès
201Créé
400Requête invalide ou entrée invalide
401Authentification requise ou identifiants/token invalides
402Contrainte de balance ou de fonds
403Interdit, politique bloquante ou mismatch marchand
404Ressource introuvable
409Conflit d’état, opération en doublon ou conflit d’idempotence
410Invitation expirée ou cycle de vie de la ressource terminé
412Précondition échouée
423État verrouillé ou environnement/test mode déjà actif
429Limite de débit ou cooldown de retry déclenché
500Erreur interne de plateforme
502Échec d’un provider amont ou de livraison webhook
503Service temporairement indisponible
504Timeout amont ou système

Résumé des modules

ModuleZone typiqueStatuts typiquesCas retryables
AUTHconnexion, tokens, clés API401non
AUTHZrôles, membership, scopes403non
ORGaccès organisation403, 404non
MERCHANTétat marchand et résolution de compte403, 404, 409, 410non
REQvalidation et idempotence400, 409non
RESétat générique des ressources404, 409non
RATEthrottling429oui
SYSdéfaillances plateforme/système500, 503, 504certains
CHKflux checkout400, 404non
TRANSFERpaiements et remboursements400, 402, 404, 409, 502échecs provider uniquement
PAYOUTopérations de payout400, 402, 403, 404, 409non
BILLINGfactures et plans404, 500erreurs de cycle uniquement
LEDGERbalance et comptabilité400, 402, 404non
COMPLIANCEKYC, limites400, 403non
SECURITYMFA, passkeys, challenges400, 403, 429, 500non
RISKgestion de cas et règles404, 409non
CONFIGfeature flags et politique pays/devise400, 403non
PRODUCTcatalogue produit400, 404non
WEBHOOKendpoints webhook et livraison404, 502échecs de livraison uniquement
TERMINALtransitions reader/session400, 409non
EXTERNALintégrations provider400, 502, 504indisponibilité/timeout uniquement
ESCROWcontrats d’escrow et litiges400, 403, 404, 409non
FUNDINGcampagnes de financement400, 403, 404, 409non
MKTPLACEmoteur marketplace400, 403non
APPcycle de vie des ecosystem apps403, 404non
ENVétat sandbox/live test-mode412, 423non
CONNECTconfiguration de compte connecté400, 404non

Authentification et autorisation

CodeModuleHTTPRetryableSignification
IKW-AUTH-001AUTH401NonIdentifiants invalides
IKW-AUTH-002AUTH401NonAuthentification requise
IKW-AUTH-003AUTH401NonToken révoqué
IKW-AUTH-004AUTH401NonToken expiré
IKW-AUTH-005AUTH401NonToken invalide
IKW-AUTH-006AUTH401NonSession expirée
IKW-AUTH-007AUTH401NonSession révoquée
IKW-AUTH-008AUTH401NonClé API expirée
IKW-AUTH-009AUTH401NonClé API tournée
IKW-AUTHZ-001AUTHZ403NonInterdit
IKW-AUTHZ-002AUTHZ403NonRôle insuffisant
IKW-AUTHZ-003AUTHZ403NonMembership requis

Fondations marchand, requête et système

CodeModuleHTTPRetryableSignification
IKW-MERCHANT-001MERCHANT404NonMarchand introuvable
IKW-MERCHANT-002MERCHANT403NonMarchand désactivé
IKW-MERCHANT-003MERCHANT409NonLe marchand existe déjà
IKW-MERCHANT-004MERCHANT410NonInvitation marchand expirée
IKW-MERCHANT-005MERCHANT404NonCompte marchand introuvable
IKW-REQ-001REQ400NonEntrée invalide
IKW-REQ-002REQ400NonParamètre requis manquant
IKW-REQ-003REQ400NonParamètre invalide
IKW-REQ-004REQ409NonConflit d’idempotence
idempotency_key_conflictREQ409NonAlias rétrocompatible de conflit d’idempotence
IKW-RES-001RES404NonRessource introuvable
IKW-RES-002RES409NonLa ressource existe déjà
IKW-RES-003RES409NonConflit d’état de ressource
IKW-RATE-001RATE429OuiTrop de requêtes
IKW-SYS-001SYS500NonErreur interne
IKW-SYS-002SYS503OuiService indisponible
IKW-SYS-003SYS504OuiTimeout système

Checkout, paiements, remboursements et payouts

CodeModuleHTTPRetryableSignification
IKW-CHK-001CHK400NonLien de paiement invalide
IKW-CHK-002CHK404NonCheckout session introuvable
IKW-CHK-003CHK400NonCheckout session expirée
IKW-CHK-004CHK400NonCheckout session non ouverte
IKW-CHK-005CHK400NonMontant de checkout requis
IKW-CHK-006CHK400NonLe checkout n’a pas de payment intent
IKW-CHK-007CHK400NonReçu indisponible
IKW-TRANSFER-001TRANSFER400NonMontant invalide
IKW-TRANSFER-002TRANSFER400NonIncohérence de devise
IKW-TRANSFER-003TRANSFER404NonTransfert ou paiement introuvable
IKW-TRANSFER-004TRANSFER409NonTransition d’état invalide
IKW-TRANSFER-005TRANSFER400NonLe remboursement dépasse le montant
IKW-TRANSFER-006TRANSFER409NonDéjà remboursé
IKW-TRANSFER-007TRANSFER502OuiÉchec du provider
IKW-TRANSFER-008TRANSFER402NonBalance insuffisante
IKW-PAYOUT-001PAYOUT404NonPayout introuvable
IKW-PAYOUT-002PAYOUT400NonDestination invalide
IKW-PAYOUT-003PAYOUT402NonBalance de payout insuffisante
IKW-PAYOUT-004PAYOUT409NonBatch déjà en cours de traitement
IKW-PAYOUT-005PAYOUT409NonBatch déjà terminé
IKW-PAYOUT-006PAYOUT400NonDestinataire invalide
IKW-PAYOUT-007PAYOUT403NonRejet AML
IKW-PAYOUT-008PAYOUT403NonMismatch marchand
IKW-PAYOUT-009PAYOUT400NonIncohérence de devise

Facturation, ledger, produits et configuration

CodeModuleHTTPRetryableSignification
IKW-BILLING-001BILLING404NonFacture introuvable
IKW-BILLING-002BILLING404NonPlan introuvable
IKW-BILLING-003BILLING500OuiErreur de cycle de facturation
IKW-LEDGER-001LEDGER404NonCompte ledger introuvable
IKW-LEDGER-002LEDGER402NonBalance insuffisante
IKW-LEDGER-003LEDGER400NonIncohérence de devise
IKW-CONFIG-001CONFIG403NonFonctionnalité désactivée
IKW-CONFIG-002CONFIG400NonPays/devise désactivé
IKW-PRODUCT-001PRODUCT404NonProduit introuvable
IKW-PRODUCT-002PRODUCT400NonNom de produit invalide
IKW-PRODUCT-003PRODUCT400NonPrix produit invalide

Sécurité, compliance, risque, webhook et providers externes

CodeModuleHTTPRetryableSignification
IKW-COMPLIANCE-001COMPLIANCE403NonKYC requis
IKW-COMPLIANCE-002COMPLIANCE400NonDocument de conformité expiré
IKW-COMPLIANCE-003COMPLIANCE403NonLimite de conformité dépassée
IKW-SECURITY-001SECURITY403NonMFA requis
IKW-SECURITY-002SECURITY400NonCode MFA invalide
IKW-SECURITY-003SECURITY429NonTrop de tentatives MFA
IKW-SECURITY-004SECURITY400NonPasskey invalide
IKW-SECURITY-005SECURITY400NonÉchec Google OAuth
IKW-SECURITY-006SECURITY409NonGoogle déjà lié
IKW-SECURITY-007SECURITY429NonCooldown de sécurité actif
IKW-SECURITY-008SECURITY500NonGoogle non configuré
IKW-SECURITY-009SECURITY400NonEmail Google non vérifié
IKW-SECURITY-010SECURITY400NonChallenge expiré
IKW-SECURITY-011SECURITY400NonChallenge non vérifié
IKW-SECURITY-012SECURITY400NonMismatch de challenge
IKW-RISK-001RISK409NonDécision déjà prise sur le dossier de risque
IKW-RISK-002RISK404NonRègle de risque introuvable
IKW-RISK-003RISK409NonImpossible d’assigner le dossier de risque
IKW-WEBHOOK-001WEBHOOK404NonEndpoint webhook introuvable
IKW-WEBHOOK-002WEBHOOK502OuiÉchec de livraison webhook
IKW-EXTERNAL-001EXTERNAL502OuiProvider indisponible
IKW-EXTERNAL-002EXTERNAL504OuiTimeout du provider
IKW-EXTERNAL-003EXTERNAL400NonRequête rejetée par le provider

Escrow, funding, marketplace, apps, environnement et connect

CodeModuleHTTPRetryableSignification
IKW-ESCROW-001ESCROW404NonContrat d’escrow introuvable
IKW-ESCROW-002ESCROW409NonTransition d’escrow invalide
IKW-ESCROW-003ESCROW409NonUn litige actif bloque l’opération
IKW-ESCROW-004ESCROW400NonIncohérence de devise escrow
IKW-ESCROW-005ESCROW403NonMismatch marchand escrow
IKW-ESCROW-006ESCROW403NonFonctionnalité escrow désactivée
IKW-ESCROW-007ESCROW409NonOpération escrow en doublon
IKW-FUNDING-001FUNDING404NonCampagne de financement introuvable
IKW-FUNDING-002FUNDING409NonTransition funding invalide
IKW-FUNDING-003FUNDING400NonMontant insuffisant
IKW-FUNDING-004FUNDING400NonIncohérence de devise funding
IKW-FUNDING-005FUNDING403NonMismatch marchand funding
IKW-FUNDING-006FUNDING403NonFonctionnalité funding désactivée
IKW-FUNDING-007FUNDING409NonContribution en doublon
IKW-MKTPLACE-001MKTPLACE403NonVendeur suspendu
IKW-MKTPLACE-002MKTPLACE400NonCommande marketplace invalide
IKW-MKTPLACE-003MKTPLACE400NonErreur de commission
IKW-MKTPLACE-004MKTPLACE400NonIncohérence de devise marketplace
IKW-MKTPLACE-005MKTPLACE403NonMismatch marchand marketplace
IKW-MKTPLACE-006MKTPLACE400NonRemboursement marketplace non autorisé
IKW-APP-001APP404NonApp introuvable
IKW-APP-002APP403NonKill switch d’app activé
IKW-APP-003APP403NonInstallation inactive
IKW-ENV-001ENV412NonTest mode non activé
IKW-ENV-002ENV423NonTest mode déjà actif
IKW-CONNECT-001CONNECT404NonCompte connecté introuvable
IKW-CONNECT-002CONNECT400NonConfiguration de compte connecté invalide

Alias moteurs rétrocompatibles

Le catalogue mappe également les chaînes d’erreur des anciens moteurs vers les codes plateforme canoniques.

Exemples :

  • PayoutEngine:BatchNotFoundIKW-PAYOUT-001
  • EscrowEngine:ContractNotFoundIKW-ESCROW-001
  • FundingEngine:CampaignNotFoundIKW-FUNDING-001
  • MarketplaceEngine:SellerSuspendedIKW-MKTPLACE-001

Comment gérer les erreurs

  • Utilisez code comme clé programmatique pour la logique conditionnelle.
  • Utilisez le HTTP status pour le comportement au niveau transport.
  • Ne faites un retry que lorsque le catalogue marque effectivement la condition comme retryable, par exemple pour les limites de débit, l’indisponibilité provider ou les timeouts.
  • Pour les flux à portée marchande, privilégiez des indications d’action utilisateur plutôt que des termes internes bruts d’implémentation.

Sections liées