A Ugandan e-commerce checkout with mobile money needs: (1) a payment form where the customer enters their phone number and selects MoMo or Airtel Money, (2) a backend that sends the payment request to the correct provider API, (3) a waiting/polling screen because mobile money payments are asynchronous, (4) a callback handler that receives the payment result from MoMo/Airtel Money, and (5) a confirmation or failure screen. The most common mistake is designing the checkout like a Stripe flow (instant result) instead of accounting for the delay while the customer confirms on their phone.
Here is the complete sequence of a mobile money checkout, from the customer clicking "Pay" to the order confirmation:
Steps 4 through 7 are what make mobile money checkout fundamentally different from card checkout. You are designing for a flow where there is a real, unpredictable delay between the payment request and the result.
The payment form itself is simple: a phone number input and a "Pay" button. But the details matter for mobile money UX:
The waiting state is the most important screen in the flow:
Do not redirect to a success page optimistically. Wait for actual confirmation from your backend (which got it from the callback or status poll) before showing the success screen.
Get weekly developer tips
Join 25,000+ developers. Practical guides, job tips, and new content — straight to your inbox.
No spam. Unsubscribe anytime.
Your backend needs to handle both MoMo and Airtel Money. The cleanest approach is a payment service layer with a common interface:
Key implementation details:
The errors you will hit in production, roughly in order of frequency:
For a comprehensive list of error codes and how to handle them, see our common MoMo and Airtel Money API errors guide.
The general principle: every error should result in a clear, actionable message to the customer. "Payment failed" with no context is bad UX. "Your MoMo balance is insufficient. Please top up and try again" is useful.
Test every path through the checkout in sandbox before going live:
The sandbox makes most of this easy to test. For more advanced testing strategies, see our sandbox testing guide.
For the deployment itself, McTaba's Deployment and Going Live course (KES 4,999, approximately UGX 140,000) covers the production deployment checklist, including how to handle the transition from sandbox to live with real money.
Create a free McTaba Academy account. Access starter lessons, join the community, and explore at your own pace.
Create Free Account