The verdict in three sentences
A multi-country merchant runs on average four dashboards (Wave, Orange Money, MTN, aggregator) and spends nearly 6 hours a week on manual reconciliation. The typical mismatch rate is 2-4% of transactions, driven by duplicate callbacks (~1.5%) and webhook lag. A unified ledger, keyed on each provider's reference ID, collapses that chaos into a single source of truth.
Where mismatches come from
Reconciliation rarely fails for one reason. Here are the most frequent causes and their indicative weight in 2026.
| Mismatch cause | Indicative frequency | Impact |
|---|---|---|
| Duplicate callback | ~1.5% of transactions | Double-counted revenue |
| Late webhook (2-30s) | ~2% | Order not confirmed in time |
| Client-side USSD timeout | ~3% | Ghost payment |
| FX drift at T+2 (FCFA/GHS/NGN) | variable | Net amount discrepancy |
| Unlogged refund | ~1% | Provider balance wrong |
Each cause needs a clear rule: deduplication by ID, a tolerance window, and a polling fallback when the webhook never arrives.
Mapping provider references
The heart of a unified ledger is a table aligning each provider's IDs onto a single internal order.
| Provider | Transaction ID | Native status | Reconciliation key |
|---|---|---|---|
| Wave | session_id | completed | internal order_id |
| Orange Money | txnid | SUCCESS | internal order_id |
| MTN MoMo | financialTransactionId | SUCCESSFUL | internal order_id |
| Aggregator | reference | success | internal order_id |
By always storing the native ID AND your order_id, every provider statement line finds its order in a single join, with no manual search.
Reconciliation SaaS vs an accountant's time
The economics are simple: automate, or pay for human hours.
Need a professional website?
Kolonell builds websites that attract clients, optimized for the Sénégalese market. Free quote in 2 minutes.
| Option | Indicative monthly cost | Time spent |
|---|---|---|
| Accountant (manual reconciliation) | ~200,000 FCFA | 24 h/month |
| Reconciliation SaaS | 25,000 - 75,000 FCFA | 2 h/month of review |
| Status quo (no tool) | 0 FCFA on paper | 2-4% of revenue lost in mismatches |
Even at the top price, a SaaS at 75,000 FCFA per month costs three times less than the 200,000 FCFA of accountant time it replaces, while cutting the error rate.
Mini case study
Fatou runs a cosmetics brand sold in Senegal, Cote d'Ivoire and Cameroon. She processes 900 transactions a month for 18,000,000 FCFA in volume. With a 3% average mismatch, about 27 transactions per month went unreconciled, nearly 540,000 FCFA of poorly tracked flows. Adopting a unified ledger at 45,000 FCFA per month, she pushes the mismatch below 0.5% and recovers 5 hours a week that her team now spends on customer service.
FAQ
Why does a callback arrive twice? Providers resend the webhook if your server does not respond fast enough. Without an idempotency key, that second call creates a duplicate line and inflates revenue by ~1.5%.
How do I handle multi-currency FX drift? Log the rate at transaction time, not at settlement. Between T+0 and T+2, FCFA against GHS or NGN can move and distort the expected net amount.
Does polling replace webhooks? No, it complements them. A polling fallback checks status every few minutes to recover the ~4% of orders left in limbo by a missing webhook.
How much time does it save? Moving from manual reconciliation to a unified ledger typically saves 4-5 hours a week and cuts the mismatch rate roughly fivefold.
Do I need a tool from day one? Under 200 transactions a month, a spreadsheet often suffices. Beyond that, or as soon as you sell in two countries, a unified tool pays off quickly.
Let's talk about your project. We build your multi-country unified ledger to reconcile Wave, Orange Money and MTN in a single view. 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.
