Integrating mobile money means connecting your app to operators like EcoCash, M-Pesa, and others so customers can pay from their phone balance. The hard parts aren't the happy path, they're idempotency, reconciliation, and handling the many ways a payment can half-complete on an unreliable network.
Card-only checkout leaves most of the continent's customers unable to pay. Mobile money is how Africa transacts, and integrating it well is a core skill we've built into our own payments product, TechsoPay.
The happy path is the easy 20%
Initiating a payment is simple. The engineering is in everything that can go wrong: timeouts, duplicate requests, callbacks that never arrive, and payments that succeed on the operator side but fail to register on yours.
Idempotency is non-negotiable
Every payment operation must be idempotent, safe to retry without double-charging. Use a unique reference per transaction and treat every callback and retry as potentially duplicated.
Reconcile relentlessly
Never trust a single callback as the source of truth. Reconcile against the operator's records on a schedule so no payment is silently lost or double-counted. Money has to reconcile to the cent.
- Use a unique idempotency key per transaction.
- Treat callbacks as unreliable, poll and reconcile too.
- Log every state transition for audit.
- Design explicit handling for the half-completed payment.
FAQ

