Le verdict en trois phrases
À Douala, un webhook MTN MoMo non idempotent est la première cause de commandes fantômes : MTN rejoue le callback jusqu'à 3 fois et un réseau instable double-crédite environ 1,2 % des commandes. La latence médiane du callback est de 8 secondes, mais elle grimpe à 90 secondes en heure de pointe, donc le webhook seul n'est jamais fiable. La bonne architecture : file d'attente + statut PENDING/CONFIRMED + réconciliation nocturne par requête de statut, jamais une dépendance au seul callback.
Pourquoi le webhook seul échoue à Douala
Le callback MTN MoMo est un signal utile, pas une vérité absolue. Il peut arriver en double, en retard, ou pas du tout si votre serveur est momentanément injoignable. Chaque comportement crée une classe de bug distincte.
| Comportement webhook | Fréquence (ordre de grandeur) | Bug si non géré |
|---|---|---|
| Callback rejoué 2-3 fois | ~15 % des transactions | Double-crédit commande |
| Latence > 30 secondes | ~9 % en heure de pointe | Client relance / repaie |
| Callback jamais reçu | ~2 % | Commande payée mais bloquée |
| Ordre inversé (échec puis succès) | ~1 % | Statut final erroné |
| Signature manquante/invalide | rare | Faux paiement accepté |
La parade tient en un mot : idempotence. Chaque callback est traité une seule fois, indexé sur le transactionId MTN. Un second callback identique est reconnu et ignoré.
L'architecture anti-fantôme en 2026
On ne fait jamais confiance à un seul signal. On combine trois couches : réception rapide, traitement asynchrone, et vérification proactive du statut auprès de MTN.
| Couche | Rôle | Règle clé |
|---|---|---|
| Réception webhook | Accuse réception en < 200 ms | Renvoyer 200 puis traiter à part |
| File d'attente | Découple réception et logique | Retry avec backoff exponentiel |
| Table transactions | Source de vérité | Clé unique sur transactionId |
| Requête de statut (pull) | Vérifie l'état réel | Après 2 min, puis réconciliation nocturne |
| Réconciliation nocturne | Rattrape les callbacks perdus | Compare PENDING vs statut MTN |
Le statut passe de PENDING à CONFIRMED uniquement quand MTN confirme, que ce soit par webhook ou par requête de statut. Les 2 % de callbacks jamais reçus sont rattrapés à la réconciliation nocturne.
Mini cas pratique
Ibrahim gère une épicerie en ligne à Douala, 900 commandes/mois, panier moyen 12 000 FCFA. Sans idempotence, 1,2 % des commandes sont double-créditées : environ 11 commandes/mois, soit 132 000 FCFA crédités à tort qu'il doit rembourser ou perdre en stock. Il ajoute une clé unique sur transactionId et une réconciliation nocturne : les double-crédits tombent à zéro, et les 2 % de commandes payées mais bloquées (environ 18/mois, 216 000 FCFA) sont enfin débloquées automatiquement. Coût de la correction : 2 jours de dev.
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.
FAQ
Pourquoi MTN MoMo renvoie-t-il plusieurs fois le même callback ?
MTN considère un callback comme non livré tant qu'il n'a pas reçu un 200 rapide de votre serveur. Sur réseau instable à Douala, il rejoue jusqu'à 3 fois, d'où le besoin d'un traitement idempotent indexé sur le transactionId.
Comment garantir l'idempotence en pratique ?
Créez une contrainte unique sur le transactionId dans votre table de transactions. Un second callback identique déclenche une violation de contrainte que vous interceptez pour ignorer proprement le doublon.
Faut-il vraiment une réconciliation nocturne si les webhooks marchent ?
Oui. Environ 2 % des callbacks n'arrivent jamais en heure de pointe. La réconciliation nocturne compare vos commandes PENDING au statut réel MTN et débloque celles qui étaient en fait payées.
Quelle latence anticiper sur le callback MTN MoMo ?
Médiane autour de 8 secondes, mais des pics à 90 secondes aux heures chargées. N'affichez jamais un échec au client avant d'avoir interrogé le statut, sinon il repaiera.
Comment éviter qu'un client repaie une commande déjà réglée ?
Affichez un statut PENDING clair avec polling, et bloquez le bouton payer tant que le statut n'est pas résolu. Vérifiez le statut MTN avant toute relance de paiement.
Discutons de votre projet. Nous auditons et réparons votre intégration MTN MoMo pour éliminer les paiements fantômes à Douala. 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.
