Africa Mobile Money Hub
One Odoo app for M-Pesa, MTN MoMo and Airtel Money - collections and payouts, bring-your-own-key
Accept and send mobile money across African markets directly from Odoo. The hub unifies the three dominant rails - Safaricom M-Pesa (Daraja), MTN Mobile Money and Airtel Money - behind one consistent transaction screen, so your team learns a single workflow regardless of provider or country. Every credential is bring-your-own-key (BYOK): you paste your own merchant API keys and nothing is ever sent anywhere except the provider endpoint you configure.
What it does
Collections (request to pay)
Prompt a customer's wallet to pay you: M-Pesa STK Push (Lipa na M-Pesa Online), MTN MoMo request-to-pay and the Airtel merchant payment, all from one button.
Payouts (disbursements)
Send money to a customer or supplier wallet: M-Pesa B2C, MTN MoMo transfer and Airtel disbursement - same screen, same audit trail.
Status polling
Pending transactions are reconciled automatically by a scheduled action that queries each rail for the final SUCCESSFUL / FAILED outcome (M-Pesa STK query, MTN status, Airtel transaction enquiry).
Full API audit log
Every HTTP call is recorded with the operation, URL, status, latency and a redacted request body, so you can troubleshoot a failed payment without exposing secrets.
Key features
- Three rails, one model: M-Pesa, MTN MoMo, Airtel Money.
- Correct provider payloads built to each published API contract.
- M-Pesa STK password = Base64(ShortCode + Passkey + Timestamp), per Daraja.
- MTN X-Reference-Id UUID transaction id and subscription-key headers.
- Airtel X-Country / X-Currency routing headers and national MSISDN.
- Smart MSISDN normalisation (0708…, 708…, 254708…, +254708…).
- Currency-aware amount formatting (whole-number KES/UGX vs. decimal GHS).
- Per-provider OAuth / token authentication handled for you.
- Sandbox / production switch with editable endpoint defaults.
- Resilient transport: retries on 5xx, timeouts, structured logging.
Supported rails & markets
| Rail | Collection | Payout | Typical markets |
|---|---|---|---|
| Safaricom M-Pesa (Daraja) | STK Push | B2C payment | Kenya |
| MTN Mobile Money | Request to Pay | Transfer | Uganda, Ghana, Rwanda, Zambia, Cameroon, Côte d'Ivoire and more |
| Airtel Money | Merchant payment | Disbursement | Uganda, Tanzania, Zambia, DR Congo, Nigeria, Malawi and more |
Country profiles ship with the correct mobile-money currency and dialling code. All API base hosts default to the providers' published endpoints and remain fully editable.
How it works
- Add a Provider connection and paste your own merchant API keys.
- Press Test Connection to confirm authentication against the rail.
- Create a Transaction (or use the quick New Request wizard), pick collection or payout, enter the amount and mobile number, then submit.
- Watch the status move from Pending to Successful as the hub polls the rail.
Bring your own keys - your data stays yours
This is a connector, not a payment aggregator. You supply your own Safaricom, MTN and Airtel merchant credentials; they are stored only in your Odoo database, protected by the system group, and transmitted only to the provider endpoint you configure. We are not a payment service provider and never hold funds or accreditation on your behalf.
Requirements
- Odoo 18.0 or 19.0 (Community or Enterprise).
- The Python
requestslibrary (standard in Odoo deployments). - Active merchant accounts and API keys with your chosen mobile money providers.
Support: support@pokutsoft.com
Screenshots
Providers
New Request
Settings
Transactions
Update date: 2026-07-02