Sur un site senegalais, une part importante des tentatives de paiement mobile money n aboutit pas du premier coup. Solde insuffisant, mauvais PIN, push jamais vu, reseau qui coupe : ces echecs sont normaux. Ce qui distingue un commercant qui perd ses ventes d un commercant qui les recupere, c est la facon de gerer l apres-echec.
Ce guide couvre les causes reelles des echecs, comment gerer techniquement les timeouts et les retries sans jamais double-debiter, et comment relancer le client et reconcilier vos transactions pour transformer un echec en vente.
Pourquoi un paiement mobile money echoue
Avant de corriger, il faut comprendre. Les echecs se classent en quelques familles.
Echecs cote client
Le plus frequent : solde insuffisant. Au Senegal, beaucoup de comptes Orange Money ou Wave ont un solde juste, et un panier de 25 000 FCFA depasse ce qu il reste. Viennent ensuite le mauvais code PIN, l annulation volontaire, et le push jamais valide parce que le client a quitte la page ou n a pas vu la notification.
Echecs reseau
Le push USSD n arrive pas, ou la confirmation se perd entre l operateur et l agregateur. Le client a peut-etre paye, mais votre serveur ne le sait pas encore. C est le cas le plus dangereux car il cree une incertitude.
Echecs techniques
Cle d API expiree, webhook mal configure, timeout trop court cote serveur, ou une commande mal enregistree qui empeche le rapprochement. Ceux-la sont de votre cote et entierement evitables.
Les timeouts : combien de temps attendre
Un paiement mobile money est asynchrone. Le client recoit un push et peut mettre une, deux, voire trois minutes a taper son PIN, surtout sur un vieux telephone. Si votre serveur abandonne au bout de 30 secondes, vous declarez un echec alors que le client est en train de payer.
Regle pratique
Laissez la fenetre de validation ouverte plus longtemps que votre intuition ne le suggere. Un delai de l ordre de deux a trois minutes avant de marquer une transaction "expiree" est raisonnable pour le contexte senegalais. Pendant ce temps, affichez au client un message d attente clair : "Validez le paiement sur votre telephone."
Ne fermez jamais sur un timeout sans verifier
Avant de declarer un echec definitif, interrogez l agregateur sur le statut reel de la transaction (endpoint de verification de statut). Le client a peut-etre paye apres votre timeout. Cette verification evite le scenario cauchemar : client debite, commande marquee echouee.
Retries et idempotence : ne jamais debiter deux fois
Quand un paiement echoue, le client va souvent reessayer. Et votre systeme aussi peut etre tente de relancer automatiquement. Sans precaution, vous risquez de debiter deux fois.
La cle d idempotence
A chaque tentative de paiement, generez un identifiant unique (cle d idempotence) et envoyez-le a l agregateur. Si la meme requete arrive deux fois avec la meme cle, l agregateur traite une seule fois. C est votre protection contre le double clic et les retries automatiques.
Webhooks idempotents
Les agregateurs renvoient parfois le meme webhook plusieurs fois pour fiabiliser la livraison. Votre back-end doit detecter qu une transaction est deja traitee et ignorer les doublons. Stockez le statut et verifiez-le avant tout traitement.
Retry intelligent, pas aveugle
Ne relancez pas automatiquement un paiement refuse pour solde insuffisant : ca echouera encore. En revanche, un echec reseau (timeout) peut justifier une nouvelle tentative apres verification de statut. Distinguez les types d echec avant de decider.
Relancer le client : recuperer le panier
Un echec n est pas une vente perdue, c est une vente en pause. Le panier abandonne sur echec de paiement est l un des plus recuperables, car le client voulait acheter.
Le bon canal : WhatsApp
Au Senegal, WhatsApp est le canal de relance le plus efficace. Un message simple, personnalise, envoye dans l heure : "Bonjour, votre commande de [produit] n a pas pu etre validee. Voici un lien pour reessayer." Le taux de recuperation est nettement superieur a l email.
Besoin d'un site web professionnel ?
Kolonell crée des sites web qui attirent des clients, optimisés pour le marché sénégalais. Devis gratuit en 2 minutes.
Le bon timing
Relancez vite. Plus vous attendez, plus l intention s evapore. Une premiere relance dans l heure, une seconde le lendemain si pas de reponse. Au-dela, vous fatiguez le client.
Adaptez le message a la cause
Si l echec etait un solde insuffisant, proposez un paiement en plusieurs fois ou un montant ajuste. Si c etait un timeout, rassurez : "Aucun debit n a eu lieu, vous pouvez reessayer en securite." Un message generique convertit moins qu un message qui adresse la vraie raison.
Reconciliation : faire correspondre l argent et les commandes
La reconciliation, c est verifier que chaque franc encaisse correspond a une commande, et que chaque commande payee a bien recu son argent. C est ennuyeux et c est vital.
Le decalage classique
Les webhooks peuvent arriver en retard, en double, ou se perdre. Resultat : des commandes payees marquees "en attente", ou l inverse. Sans reconciliation, vous expediez des produits non payes ou vous laissez des clients qui ont paye sans commande.
Comment reconcilier
Au minimum une fois par jour, recuperez la liste des transactions reussies cote agregateur et comparez-la a vos commandes. Toute divergence est traitee manuellement : commande payee mais en attente, on debloque ; commande marquee payee sans transaction, on enquete.
Mini cas client : une librairie en ligne a Thies
Une librairie en ligne a Thies perdait environ 30 % de ses commandes sur echec de paiement, sans relance. Apres analyse, deux tiers de ces echecs etaient des soldes insuffisants ou des timeouts, donc des clients qui voulaient vraiment acheter.
Nous avons mis en place trois choses : une verification de statut systematique apres timeout (qui a sauve des paiements deja effectues mais non confirmes), une relance WhatsApp automatique dans l heure avec lien de reprise, et une reconciliation quotidienne. En six semaines, le taux de commandes recuperees sur echec initial est passe de presque zero a 41 %. Aucune nouvelle acquisition, juste une meilleure gestion de l echec.
Reduire les echecs a la source
Recuperer c est bien, eviter c est mieux.
- Affichez clairement le montant avant la validation pour eviter les surprises de solde.
- Proposez plusieurs operateurs : un client sans solde Orange Money a peut-etre du Wave.
- Donnez des instructions visibles : "Validez le push sur votre telephone, ne fermez pas cette page."
- Testez tous les parcours en sandbox avant la prod.
FAQ
Quelle est la premiere cause d echec de paiement mobile money au Senegal ?
Le solde insuffisant, suivi du push jamais valide (client qui quitte la page) et des timeouts reseau. Ce sont majoritairement des echecs recuperables par une relance.
Combien de temps attendre avant de declarer un paiement echoue ?
Laissez deux a trois minutes pour la validation, puis interrogez l agregateur sur le statut reel avant de conclure a un echec. Le client a peut-etre paye apres votre delai.
Comment eviter de debiter un client deux fois ?
Utilisez une cle d idempotence par tentative et rendez vos webhooks idempotents en stockant et verifiant le statut de chaque transaction avant traitement.
Faut-il relancer automatiquement un paiement refuse ?
Pas un refus pour solde insuffisant, il echouera encore. Une relance a du sens apres un timeout reseau, et seulement apres avoir verifie le statut reel cote agregateur.
A quelle frequence reconcilier ses paiements ?
Au minimum une fois par jour. Comparez la liste des transactions reussies de l agregateur a vos commandes pour rattraper les webhooks perdus ou en double avant d expedier.
Discutons de votre projet. Vous perdez des ventes sur des echecs de paiement evitables ? Parlons-en sur WhatsApp +221 77 596 93 33.
Mohamed Bah
Fondateur, Kolonell
Passionné par le digital et l'entrepreneuriat en Afrique, Mohamed accompagne les entreprises sénégalaises dans leur transformation digitale depuis 2020. Fondateur de Kolonell, il croit que chaque PME mérite une présence en ligne professionnelle et accessible.

