- Home
- Apps
- SaaS Tools
- M-Pesa Payment Gateway for Odoo (Daraja)
Illustrative previewAccept M-Pesa STK Push and C2B mobile money on Odoo 17/18/19 with auto reconciliation
— built, installed and supported by ECOSIRE.
What is M-Pesa Payment Gateway for Odoo (Daraja)?
Accept M-Pesa STK Push and C2B mobile money on Odoo 17/18/19 with auto reconciliation — built, installed and supported by ECOSIRE. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.
Key Features
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your Odoo.
- 3
Go live + support
You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.
Technical Specifications
- Odoo Compatibility
- Odoo 17, Odoo 18, Odoo 19
- Editions
- Enterprise & Community
- License
- Licence confirmation required
- Python Requirement
- Python 3.10+
- Database
- PostgreSQL 12+
About this Product
Give your Kenyan and East African customers the payment method they actually reach for — M-Pesa — right inside Odoo. This is a build-to-order module that ECOSIRE designs, develops, installs and supports for your specific Odoo deployment. It is not an instant apps.odoo.com download: after purchase we scope your Paybill/Till setup, build against the live Safaricom Daraja API, deploy to your environment, and hand over a maintained, documented payment provider. Typical delivery is one working week.
Once live, the module registers M-Pesa as a first-class Odoo payment provider (payment.provider / payment.transaction), so it works natively in eCommerce checkout, the Customer Portal, Sales Orders and Invoicing. Buyers trigger an STK Push to their phone, approve with their M-Pesa PIN, and the transaction is confirmed back to Odoo automatically via secure Daraja callbacks — no manual "have you paid yet?" follow-ups. For counter and offline sales, C2B Paybill/Till payments are captured and matched too.
The engineering is real Odoo, not a bolt-on. We add proper models extending payment.transaction with fields for the CheckoutRequestID, MerchantRequestID, M-Pesa receipt number and phone MSISDN; compute helpers with @api.depends keep reconciliation state in sync; access is locked down with ir.model.access.csv plus record rules so raw callback logs and credentials stay admin-only. Daraja OAuth token handling, STK Push, C2B validation/confirmation and B2C result/timeout endpoints are exposed as controllers with signature and shortcode validation. Automated actions and scheduled crons handle token refresh, callback retries and stale-transaction cleanup. Everything ships as a versioned addon with a clean __manifest__.py, QWeb-templated receipts, and KES currency/localization wired in.
Because it lives in Odoo's native payment layer, reconciliation is automatic: confirmed M-Pesa receipts are matched to the originating order or invoice and posted to the configured bank/suspense journal, so your finance team stops hand-keying Safaricom statements. Refunds and reversals are handled through the Daraja Reversal API from within Odoo, keeping the audit trail in one system. The same transactions are reachable over Odoo's XML-RPC / JSON-RPC API for any downstream automation you run.
We deliver it for Odoo 17, 18 and 19, Community or Enterprise, on Odoo.sh, on-premise or ECOSIRE-managed hosting. You get the source, the configuration, documentation, a training session and a support window — and a team that already understands both Odoo internals and Safaricom's Daraja quirks (sandbox vs production shortcodes, callback URL whitelisting, tokenised OAuth, and the difference between C2B and STK confirmation flows).
What you get
- Complete, versioned Odoo addon source (models, controllers, views, security, data) built for your Odoo 17, 18 or 19 — Community or Enterprise
- Live Daraja integration configured end-to-end: OAuth credentials, STK Push, C2B and B2C callback URLs whitelisted and tested in sandbox then production
- Payment provider, journal and reconciliation configuration wired into your existing chart of accounts and KES currency setup
- Deployment to your environment (Odoo.sh, on-premise or ECOSIRE-managed hosting) with a documented rollback path
- Admin and finance-user documentation covering configuration, day-to-day operation, reconciliation and refund/reversal procedures
- A live training/handover session for your team plus a recording
- Post-launch support window for bug fixes, callback issues and Daraja/Odoo-version compatibility, with an SLA agreed at scoping
- Test evidence: sandbox and production transaction walkthroughs (STK approve, C2B match, refund/reversal) demonstrating the flows
Who this is for
Kenyan eCommerce merchant on Odoo
Runs an Odoo Website/eCommerce store and needs shoppers to pay by M-Pesa STK Push at checkout instead of abandoning carts over card friction. Wants confirmed payments to auto-update the sales order and invoice.
East African finance / accounts team
Tired of manually reconciling Safaricom Paybill and Till statements against Odoo invoices. Wants every M-Pesa receipt matched, posted to the right journal, and refundable via the Daraja Reversal API without leaving Odoo.
Odoo implementer / IT lead
Responsible for an Odoo 17/18/19 rollout (Community or Enterprise) who needs M-Pesa added as a proper native payment provider — clean models, secured callbacks, cron-managed OAuth — rather than a fragile script, and wants ECOSIRE to build and support it.
Multi-entity retailer with several Paybills/Tills
Operates multiple stores or companies in Odoo and needs each routed to its own M-Pesa shortcode with correct per-company reconciliation and reporting.
How M-Pesa Payment Gateway for Odoo (Daraja) Compares
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| M-Pesa STK Push + C2B + B2C in one integration | Included | Partial support | Partial support | Not included |
| Native Odoo payment provider (works in checkout, portal, invoicing) | Included | Partial support | Partial support | Not included |
| Automatic reconciliation of Paybill/Till to invoices | Included | Partial support | Partial support | Not included |
| Refund/reversal via Daraja Reversal API from Odoo | Included | Partial support | Not included | Not included |
| Secured, validated callbacks + cron-managed OAuth tokens | Included | Partial support | Partial support | Not included |
| Built and tested for your exact Odoo 17/18/19 edition | Included | Included | Not included | Not included |
| Deployment, training and handover included | Included | Not included | Not included | Not included |
| Ongoing support and version-compatibility updates | Included | Not included | Partial support | Partial support |
| KES localization + MSISDN normalization out of the box | Included | Partial support | Partial support | Not included |
Frequently Asked Questions about M-Pesa Payment Gateway
How long does delivery take, and is this an instant download?
This is a build-to-order module, not an instant apps.odoo.com download. After purchase we scope your Paybill/Till setup and Odoo environment, build and test against the Safaricom Daraja API in sandbox, then deploy to production. Typical lead time is one working week depending on complexity, the number of shortcodes, and access to your Daraja and Odoo credentials.
What support and updates are included after go-live?
You get a post-launch support window (agreed at scoping) covering bug fixes, callback/Daraja issues, and compatibility with your Odoo version. We support Odoo 17, 18 and 19; if you upgrade Odoo or Safaricom changes the Daraja API, we handle the compatibility work under the support agreement, and offer ongoing maintenance beyond the initial window.
Which Odoo versions and editions does it work with?
Odoo 17, 18 and 19 — both Community and Enterprise. We build it as a standard addon with a proper __manifest__.py and deploy to Odoo.sh, on-premise, or ECOSIRE-managed hosting. The build is tailored to the exact version and edition you run.
Do I need my own Safaricom Daraja / M-Pesa account?
Yes. You need a Safaricom Daraja developer account and a live Paybill or Till (Lipa na M-Pesa) shortcode with API access. We use your credentials to configure OAuth, STK Push and the C2B/B2C callback URLs — stored securely per-company in Odoo and restricted by record rules. We can guide you through obtaining or activating Daraja access if you don't have it yet.
How does reconciliation and refunding work?
Confirmed M-Pesa receipts arrive via Daraja callbacks and are automatically matched to the originating Odoo order or invoice and posted to your configured journal, so finance stops keying Safaricom statements by hand. Refunds and reversals are initiated from the Odoo transaction using the Daraja Reversal API, keeping the full audit trail — receipt number, MSISDN and request IDs — inside Odoo.
Is it secure, and are the callbacks protected?
Inbound STK, C2B and B2C callbacks are validated (shortcode/signature checks) so only authentic Safaricom requests change transaction state. Daraja OAuth tokens are minted and refreshed via a scheduled cron, credentials and raw callback logs are locked down with ir.model.access.csv plus record rules, and all endpoints run over HTTPS with whitelisted callback URLs.
Related Modules

Monetico Payment Provider for Odoo
A build-to-order Odoo payment provider that wires Crédit Mutuel / CIC / OneyBank Monetico Paiement into your eCommerce checkout and invoicing, with HMAC-SHA1 sealed forms, signature-verified server-to-server returns, installments, deferred capture, and refunds. ECOSIRE scopes, builds, installs, and supports it for your Odoo 17, 18, or 19.

Moyasar Payment Gateway for Odoo
A build-to-order Odoo payment provider that connects your Saudi checkout to Moyasar — accepting mada, Apple Pay, STC Pay, and cards in SAR with webhook-based reconciliation. ECOSIRE builds, installs, and supports it after a scoping call.

Multi-Company Access Rights
A build-to-order Odoo security layer that gives multi-company users different access rights, menus, and record visibility per company they operate in. ECOSIRE scopes, builds, installs, and supports it for your exact org structure.

Multi Company Email Communications
A build-to-order Odoo module that gives every company in your database its own outgoing email identity — sender address, branded signature, and reply-to — so mail always leaves under the correct brand. ECOSIRE scopes, builds, installs, and supports it for Odoo 17.0, 18.0, and 19.0.
M-Pesa Payment Gateway
Accept M-Pesa STK Push and C2B mobile money on Odoo 17/18/19 with auto reconciliation — built, installed and supported by ECOSIRE.
- Safaricom Daraja STK Push (Lipa na M-Pesa Online) — customer approves payment with their M-Pesa PIN, no card details required
- M-Pesa registered as a native Odoo payment provider (payment.provider / payment.transaction) so it works in eCommerce checkout, Customer Portal, Sales and Invoicing
- C2B Paybill and Till Number support with Daraja validation and confirmation callbacks for counter and offline payments
- B2C payout support with result and timeout callback endpoints for refunds, disbursements and supplier payments