The verdict in three sentences
In Senegal in 2026, offering both Wave AND Orange Money on the same checkout is no longer optional: Wave covers 8 million+ accounts and Orange Money 5 million+, and a customer who can't find their wallet abandons. The right architecture is a single PaymentService interface that hides differences in fees, caps and delays behind one checkout() method. With amount-based routing and automatic fallback when a provider goes down, you keep a success rate above 97 %.
Compare both providers before architecting
Technical differences drive the routing. Here are 2026 orders of magnitude (estimate, confirm in your merchant contracts):
| Criterion | Wave | Orange Money |
|---|---|---|
| Merchant fee | ~1 % | ~1.5 to 3.5 % |
| Settlement (payout) | T+1 | T+2 |
| Cap per transaction | 1,000,000 FCFA | 2,000,000 FCFA |
| Active accounts in SN | 8 M+ | 5 M+ |
| Payment confirmation | Webhook + QR | Webhook + redirect/USSD |
| Dedicated sandbox | Yes | Partial |
Reading : Wave is cheaper and settles faster but caps lower. Orange Money handles big baskets and reaches a sometimes distinct audience.
The single PaymentService interface
The contract stays stable regardless of provider:
`ts
export const PaymentService = {
checkout: (order, provider) => Promise
getStatus: (txId, provider) => Promise
handleWebhook: (provider, payload) => Promise
refund: (txId, provider) => Promise
};
`
Each provider implements the same interface in its own adapter (waveAdapter, orangeAdapter). The front-end checkout never knows the details: it calls PaymentService.checkout(order, choice).
Need a professional website?
Kolonell builds websites that attract clients, optimized for the Sénégalese market. Free quote in 2 minutes.
Amount-based routing and fallback
Use routing that respects caps and optimizes fees:
| Basket amount | Suggested provider | Reason |
|---|---|---|
| 0 – 500,000 FCFA | Wave (default) | 1 % fee, T+1 settlement |
| 500,001 – 1,000,000 FCFA | Wave or OM | Customer choice, under Wave cap |
| 1,000,001 – 2,000,000 FCFA | Orange Money | Exceeds Wave cap |
| > 2,000,000 FCFA | Split / bank transfer | Beyond mobile money cap |
| Provider down | Auto-switch to the other | Health-check < 3 s |
The fallback scheme: a health-check pings each provider every 60 s; if Wave returns a 5xx error or a timeout > 3 s, the Wave button is greyed out and OM becomes the default, without reloading the page.
Mini case study
Awa, owner of a cosmetics shop in Dakar, sells an average basket of 18,000 FCFA, 600 orders/month. Before: 100 % Orange Money at 2.5 % → fees of 270,000 FCFA/month. After adding the dual checkout, 70 % of customers pick Wave (1 %): (420 orders × 18,000 × 1 %) + (180 orders × 18,000 × 2.5 %) = 75,600 + 81,000 = 156,600 FCFA/month. Saving: 113,400 FCFA/month, over 1.36 M FCFA/year, without losing OM customers.
FAQ
Do I need two separate merchant accounts?
Yes: a Wave Business account and an Orange Money merchant account, each with its own KYC (NINEA, trade register). Allow 24 to 72 h for Wave and 3 to 7 days for OM.
How do I handle Wave going down mid-day?
The fallback switches OM to default in under 3 seconds via health-check. The customer sees a single active button and the success rate stays above 97 %.
Do the caps block my big sales?
Wave caps at 1,000,000 FCFA and OM at 2,000,000 FCFA per transaction. Beyond that, route to a bank transfer or split the payment into several transactions.
How long to integrate both?
With a PaymentService interface already in place, adding a second provider takes 3 to 5 days of development, sandbox testing included.
Let's talk about your project. We integrate Wave and Orange Money on a single, tested and reconciled checkout in under two weeks. 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.
