Quick MoMo Integration Summary
- Integration cost: UGX 2,000,000 - 8,000,000 (~$530-$2,100)
- Transaction fee: 1-2% for collections
- Sandbox access: Free at momodeveloper.mtn.com
- Production approval: 2-6 weeks from MTN
- Development time: 1-3 weeks
MTN Mobile Money dominates Uganda's mobile payments with 70%+ market share. Over 20 million Ugandans use MoMo monthly, processing billions of UGX in transactions. If you're building any product for Uganda, MoMo integration is non-negotiable.
We serve Uganda through our Kampala service hub. For broader costs, see our Uganda software development guide.
MoMo Open API Products
Collections API
What it does: Request payment from a customer's MoMo wallet. The customer receives a prompt on their phone to authorize the payment.
Use case: E-commerce payments, bill payments, subscription charges, event tickets, school fees, SACCO deposits
Flow: Your server sends a "Request to Pay" → MTN prompts the customer → Customer enters PIN → MTN sends callback to your server
Fee: 1-2% per transaction (negotiable based on volume)
Disbursements API
What it does: Send money from your MoMo account to a customer's MoMo wallet.
Use case: Salary payments, loan disbursements, refunds, agent commissions, cashback rewards, SACCO withdrawals
Fee: Flat fee per transaction (varies by amount, typically UGX 500-2,000)
Remittances API
What it does: Cross-border money transfers between different MoMo markets.
Use case: International remittances, cross-border B2B payments
Note: Requires additional compliance approvals. Most Ugandan businesses use Collections + Disbursements.
Setup Process
Step 1: Sandbox Setup (Instant)
- Go to momodeveloper.mtn.com
- Create a developer account
- Subscribe to the products you need (Collections, Disbursements)
- Get your Primary Key and Secondary Key
- Create an API user and API key via the sandbox provisioning API
- Test with sandbox phone numbers
Step 2: Production Access (2-6 weeks)
- Contact MTN Uganda business team to apply for API access
- Submit business documentation (certificate of incorporation, TIN, bank details)
- MTN reviews your application and assigns a production API user
- Complete integration testing with MTN's team
- Go live with production credentials
MoMo vs M-Pesa: Key Differences for Developers
| Feature | MTN MoMo (Uganda) | M-Pesa Daraja (Kenya) |
|---|---|---|
| Auth Method | API Key + Subscription Key + OAuth | Consumer Key + Secret + OAuth |
| Payment Request | Request to Pay (async) | STK Push (Lipa Na M-Pesa) |
| Callback Style | Polling OR callback URL | Callback URL only |
| Account Type | API user (provisioned) | Paybill/Till shortcode |
| Sandbox Quality | Good (full simulation) | Good (some differences from prod) |
| Production Timeline | 2-6 weeks | 2-4 weeks |
| Error Handling | Detailed error codes | Result codes + descriptions |
For M-Pesa specifics, read our M-Pesa Daraja integration guide. For a full mobile money comparison, see M-Pesa vs MTN MoMo vs Tigo Pesa.
Integration Costs
| Item | Cost (UGX) | Notes |
|---|---|---|
| Collections integration | 2,000,000 - 5,000,000 | Request to Pay + callbacks |
| Disbursements integration | 2,000,000 - 5,000,000 | Send money to wallets |
| Both (Collections + Disbursements) | 3,000,000 - 8,000,000 | Most common setup |
| Airtel Money add-on | 1,500,000 - 4,000,000 | Cover non-MTN users |
| Transaction fee | 1-2% per collection | Negotiable with MTN |
| Server hosting | 100,000 - 300,000/month | Must be HTTPS |
Adding Airtel Money Uganda
To capture the full Ugandan market, you should also integrate Airtel Money (25%+ market share). Options:
- Direct Airtel API: Separate integration, similar flow to MoMo. UGX 1.5M-4M additional
- Aggregator (Beyonic, Yo! Payments, Flutterwave): One API handles both MTN and Airtel. UGX 3M-8M total. Slightly higher fees but simpler maintenance
We recommend starting with MTN MoMo direct (70%+ market share) and adding Airtel via aggregator.
- Sandbox vs Production differences: Sandbox auto-approves transactions; production requires real user interaction. Test flows carefully in production.
- Request to Pay timeout: Users have 60 seconds to respond. If they don't, poll for the transaction status rather than assuming failure.
- Currency code: Always use "UGX" — not "UG" or "Ugandan Shilling". The API is strict about currency codes.
- Phone number format: Use format 256XXXXXXXXX (country code, no + prefix, no leading 0).
- Idempotency: Use unique external IDs for every request. MoMo rejects duplicates, which is good for preventing double-charges.
- Callback reliability: Callbacks can fail. Always implement polling as a fallback to check transaction status.
Frequently Asked Questions
Need MoMo Integration?
We've integrated MTN MoMo for Ugandan businesses, SACCOs, and fintech startups. Get expert integration with proper error handling.
Get Free Quote