The verdict in three sentences
On mobile money, 8 to 15 % of payments fail for often-recoverable reasons: insufficient balance, network drop, USSD timeout. A structured retry logic — 90-120 s timeout, exponential back-off 2/4/8 s, maximum 3 attempts, mandatory idempotency key — recovers 40 to 60 % of lost transactions. Add an SMS dunning link after 10 minutes to capture deferred abandonments.
Failure cause, action and recovery rate
Not every cause is handled the same way. 2026 orders of magnitude.
| Failure cause | Recommended action | Recovery rate |
|---|---|---|
| USSD timeout | Immediate retry + back-off 2/4/8 s | 50 % to 65 % |
| Insufficient balance | SMS dunning after 10 min | 25 % to 40 % |
| Network drop | Auto retry max 3 times | 55 % to 70 % |
| Wrong PIN | Re-send USSD prompt | 60 % to 75 % |
| Duplicate detected | Idempotency key (no retry) | 100 % (0 double charge) |
| Voluntary abandonment | Dunning link | 10 % to 20 % |
Technical parameters of the retry mechanic
These 2026 settings balance success rate against double-charge risk.
| Parameter | Recommended value |
|---|---|
| Timeout per attempt | 90 to 120 s |
| Exponential back-off | 2 s, 4 s, 8 s |
| Max attempts | 3 |
| Idempotency key | Mandatory (per transaction reference) |
| Status check | Callback + polling every 5 s |
| SMS dunning | After 10 min, payment link |
| Observed overall recovery | ~45 % |
Mini case study
Moussa runs an online shop in Nairobi with 1,000 payments/month. At 12 % failure, he loses 120 transactions, roughly 1,800,000 at a 15,000 basket. Deploying retry + idempotency + SMS dunning, he recovers 45 % of those failures — 54 transactions and ~810,000/month — with zero double charges thanks to the idempotency key.
FAQ
Need a professional website?
Kolonell builds websites that attract clients, optimized for the Sénégalese market. Free quote in 2 minutes.
Why is an idempotency key mandatory?
Without it, a retry can charge the customer twice. Keyed to the transaction reference, it guarantees one operation is processed once, even across multiple attempts.
Callback or polling to confirm payment?
Both. The callback confirms in under 5 seconds, but a fallback polling every 5 seconds catches missed callbacks.
How many retry attempts maximum?
Three, with 2/4/8 s back-off. Beyond that, switch to a deferred SMS dunning so you neither harass the customer nor spam USSD prompts.
What timeout should I use for USSD?
Between 90 and 120 seconds: long enough for the customer to enter a PIN, short enough not to block the till indefinitely.
Is SMS dunning really worth it?
Yes, especially for insufficient-balance failures: the customer tops up then pays via the link. It recovers 25 to 40 % of those cases.
Let's talk about your project. We implement retry, idempotency and SMS dunning to recover your failed payments. WhatsApp +221 77 596 93 33.
Mohamed Bah
Fondateur, Kolonell
Passionate about digital and entrepreneurship in Africa, Mohamed has been helping Sénégalese businesses with their digital transformation since 2020. Founder of Kolonell, he believes every SME deserves a professional and accessible online présence.

