The verdict in three sentences
The redirect to Flutterwave's hosted page is the number-one leak in a mobile money checkout: between 25 and 45 % of customers who tapped "Pay" never finish. The culprits are known: OTP fatigue, mobile network latency in Ghana, and above all the return to the store showing a broken page or an empty cart. In 2026, four UX fixes — a persistent "pending" state, inline vs redirect choice, a visible timer and a one-tap retry — win back 10 to 18 points of conversion.
Where and why the customer drops
The mobile money journey chains several hops outside your control: your site → payment page → USSD/OTP validation → return. Each hop is a chance to lose the buyer. Network latency in Ghana as in Senegal makes it worse: an OTP that takes 40 seconds to arrive makes the buyer doubt.
| Drop-off cause at redirect | Estimated 2026 frequency | Priority fix |
|---|---|---|
| USSD timeout / expired session | 25-30 % of drop-offs | Visible timer + auto retry |
| Slow or missing OTP | 20-25 % | Waiting message + resend code |
| Broken return (empty cart) | 15-20 % | Session restore |
| Doubt / lack of reassurance | 15 % | Clear "payment in progress" screen |
| Wrong number / network | 10 % | Prefill + validation |
| Insufficient balance | 8-10 % | Explicit error + fallback |
The most underrated problem is the return: the customer validates the payment on Flutterwave, comes back to the store, and sees an empty cart or an error. They think it failed, panic, and sometimes pay twice or abandon. Session restore is therefore critical.
The four fixes that win back sales
| UX fix | What it changes | Estimated conversion gain |
|---|---|---|
| Persistent "payment pending" state | Cart survives the return, status shown clearly | +5-8 pts |
| Inline (modal) instead of redirect | Keeps the buyer on your page, fewer hops | +3-6 pts |
| Visible timer + one-tap OTP resend | Cuts waiting anxiety and double payments | +2-4 pts |
| One-tap retry / alternate method | If it fails, offer another rail without re-typing | +4-7 pts |
The golden rule: never leave a blank screen. During the wait, show "Confirming your payment with Flutterwave…" with a timer and a "Having trouble?" button that triggers the fallback. The provider webhook updates the state automatically when the payment is confirmed, and the page flips to "Order confirmed" with no action from the customer.
Mini case study
Kwame sells phone accessories online in Accra. His checkout redirected to Flutterwave with no waiting screen: out of 200 "Pay" taps a month, 108 finished (46 % drop-off). He installs the persistent pending state and a one-tap retry on a second rail.
New numbers: drop-off falls to 30 %, i.e. 140 completed payments out of 200. Among them, 16 went through the retry after a first failure — sales that were lost before. With an average basket of GHS 260, he recovers 32 sales a month, about GHS 8,320 of extra revenue, purely by fixing the redirect moment.
Need a professional website?
Kolonell builds websites that attract clients, optimized for the Sénégalese market. Free quote in 2 minutes.
FAQ
Why so many drop-offs at the redirect specifically?
Because the customer leaves a familiar environment (your store) for a payment page, with an uncertain wait. 25 to 45 % drop at that instant. It's the most fragile link in the whole mobile money funnel.
Does inline checkout solve the problem?
It helps a lot: keeping the buyer on your page via a modal reduces hops versus a full redirect. But it doesn't replace session restore on return, which remains the most profitable fix.
How do I handle an OTP that doesn't arrive?
Show a timer and a "Resend code" button active after 30 seconds. Never freeze the screen. After two failures, automatically offer an alternate method so you don't lose the sale.
Is a fallback method hard to add?
Not if the checkout is well architected: the amount and cart are already known, you just add a second button on another rail. It typically recovers 4 to 7 points of conversion.
How do I avoid double payments?
A unique order ID and an idempotent webhook: if the customer pays again out of doubt, the system recognises the already-settled order. A clear "pending" state strongly reduces this risk at the source.
Let's talk about your project. We'll audit your Flutterwave redirect and install pending state, one-tap retry and session restore. 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.

