Vue d’ensemble
Les transferts peuvent échouer pour diverses raisons. Ce guide vous aide à comprendre les erreurs courantes et comment les gérer dans votre application.Statuts de transfert
Les transferts peuvent avoir les statuts suivants :pending: Le transfert est en cours de traitementsuccess: Le transfert a été effectué avec succèserror: Le transfert a échoué
Erreurs communes
Solde insuffisant (400 Bad Request)
Erreur :insufficient_balance
Message : “Insufficient balance”
Cause : Le magasin ne dispose pas de fonds suffisants pour effectuer le transfert (montant + frais).
Solution :
- Vérifiez le solde du magasin avant de créer le transfert
- Assurez-vous que le solde couvre le montant du transfert plus les frais
- Provisionnez le compte du magasin si nécessaire
Transfert échoué (400 Bad Request)
Erreur :transfer_failed
Message : “Transfer failed to finish”
Cause : Le traitement du transfert a échoué côté opérateur (Mobile Money ou banque).
Solution :
- Vérifiez que les informations du contact bénéficiaire sont correctes
- Vérifiez que le numéro de téléphone ou le compte bancaire est actif
- Réessayez le transfert après un court délai
- Contactez le support si le problème persiste
Contact non trouvé (404 Not Found)
Erreur :contact_not_found
Message : “Contact not found”
Cause : Le contactId fourni n’existe pas ou n’appartient pas à votre entreprise.
Solution :
- Vérifiez que le
contactIdest correct - Assurez-vous que le contact a été créé avant d’effectuer le transfert
- Utilisez l’endpoint
/partner_api/contactspour lister vos contacts
Magasin non trouvé (404 Not Found)
Erreur :store_not_found
Message : “Store not found”
Cause : Le storeId fourni n’existe pas ou n’appartient pas à votre entreprise.
Solution :
- Vérifiez que le
storeIdest correct - Utilisez l’endpoint
/partner_api/storespour lister vos magasins - Assurez-vous que le magasin existe et est actif
Erreur de validation (422 Unprocessable Entity)
Erreur :validation_error
Message : “Validation error”
Cause : Les données fournies ne respectent pas les règles de validation (montant minimum, format de devise, etc.).
Solution :
- Vérifiez que le montant respecte le minimum (500 centimes = 5 XOF)
- Vérifiez que la devise est au format ISO 4217 (3 caractères)
- Vérifiez que tous les champs requis sont présents et valides
- Vérifiez que la description ne dépasse pas 255 caractères
- Montant inférieur à 500 centimes
- Code devise invalide (doit être “XOF” ou autre code ISO 4217 valide)
- Champs requis manquants
Clé API invalide (401 Unauthorized)
Erreur :unauthorized
Message : “Unauthorized”
Cause : Les clés API sont invalides, manquantes ou expirées.
Solution :
- Vérifiez que les en-têtes
X-API-KEYetX-API-KEY-IDsont présents - Vérifiez que les clés API sont correctes
- Régénérez vos clés API depuis le Jeko Cockpit si nécessaire
Accès interdit (403 Forbidden)
Erreur :forbidden
Message : “Forbidden”
Cause : La clé API n’a pas la permission d’accéder à cette ressource ou d’effectuer cette action.
Solution :
- Vérifiez les permissions de votre clé API
- Contactez le support pour vérifier les permissions de votre compte
Gestion des erreurs dans votre application
Vérification préventive
Avant de créer un transfert, effectuez ces vérifications :- Vérifier l’existence du contact :
- Vérifier le solde du magasin :
- Valider les données :
- Montant superieur ou égale 500 centimes
- Code devise valide (ISO 4217)
- Description inferieur ou égale 255 caractères
Gestion des erreurs dans le code
Utilisation des webhooks pour le suivi
Configurez des webhooks pour être notifié automatiquement des changements de statut des transferts. Cela vous permet de :- Suivre les transferts en temps réel
- Gérer les échecs automatiquement
- Mettre à jour votre système lorsque le statut change
Bonnes pratiques
- Vérifications préventives : Toujours vérifier le solde et l’existence du contact avant de créer un transfert
- Gestion d’erreurs robuste : Implémentez une gestion d’erreurs complète pour tous les cas d’échec
- Logging : Enregistrez toutes les erreurs pour le débogage et l’analyse
- Retry logic : Pour les erreurs temporaires (comme
transfer_failed), implémentez une logique de réessai avec backoff exponentiel - Notifications utilisateur : Informez l’utilisateur des erreurs de manière claire et actionnable
- Monitoring : Surveillez les taux d’échec pour identifier les problèmes récurrents