Accept M-Pesa STK Push and C2B mobile money on Odoo 17/18/19 with auto reconciliation — built, installed and supported by ECOSIRE. One-time license from $299.00 USD for Odoo 17, 18, 19 — includes 12 months of updates and support.

Accept M-Pesa STK Push and C2B mobile money on Odoo 17/18/19 with auto reconciliation — built, installed and supported by ECOSIRE.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
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 2–4 weeks.
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
Automatic reconciliation — confirmed M-Pesa receipts matched to the originating order/invoice and posted to the configured journal, eliminating manual statement keying
Refund and reversal handling through the Daraja Reversal API directly from the Odoo transaction, preserving the audit trail
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).
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.
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.
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.
Operates multiple stores or companies in Odoo and needs each routed to its own M-Pesa shortcode with correct per-company reconciliation and reporting.
Buy the license on ecosire.com and download the M-Pesa Payment Gateway for Odoo (Daraja) module ZIP from your account dashboard.
Extract the ZIP into your Odoo custom addons folder on the server (or upload via Apps > Install from file on Odoo.sh / runbot).
Activate Developer Mode, open Apps, click Update Apps List, search for M-Pesa Payment Gateway for Odoo (Daraja), and press Install.
Open the new menu, paste your ECOSIRE license key, connect any external credentials (Shopify, Amazon, Stripe, etc.), and save.
Run the built-in connection test, sync your first 10 records, and schedule the recurring cron. Contact support if anything fails.
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| M-Pesa STK Push + C2B + B2C in one integration | ||||
| Native Odoo payment provider (works in checkout, portal, invoicing) | ||||
| Automatic reconciliation of Paybill/Till to invoices | ||||
| Refund/reversal via Daraja Reversal API from Odoo | ||||
| Secured, validated callbacks + cron-managed OAuth tokens | ||||
| Built and tested for your exact Odoo 17/18/19 edition | ||||
| Deployment, training and handover included | ||||
| Ongoing support and version-compatibility updates | ||||
| KES localization + MSISDN normalization out of the box |
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 2–4 weeks depending on complexity, the number of shortcodes, and access to your Daraja and Odoo credentials.
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.
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.
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.
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.
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.
Accept M-Pesa STK Push and C2B mobile money on Odoo 17/18/19 with auto reconciliation — built, installed and supported by ECOSIRE.