| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 498 |
| Technical Name |
trace_payment_mpesa |
| License | OPL-1 |
M-Pesa Unified Payment Gateway
Safaricom Daraja API Integration for Website & Portal
The complete Modular Solution for Kenyan businesses. Automate M-Pesa Express, C2B, and B2C Refunds directly within Odoo. Scale your features by simply installing the sub-modules you need.
trace_payment_mpesa_b2c. Only want C2B? Keep only trace_payment_mpesa_c2b.
Zero bloat, maximum efficiency.
Comprehensive Features
M-Pesa Express
Instant STK Push prompts for Website checkout and Portal invoices.
B2C Refunds
Process customer refunds directly from the Odoo Invoice using the M-Pesa B2C API.
C2B Fallback
Gracefully falls back to manual Paybill entry if Express fails or is preferred.
Full Payment Lifecycle
1. Instant STK Push With C2B Fallback
Customers receive a secure prompt to enter their PIN instantly upon order confirmation
2. One-Click B2C Refunds
Close the loop. Use the "Refund" button on any payment record to instantly send money back via B2C API.
3. Enforced Phone Validation
Ensures every transaction is successful by validating Safaricom numbers before the checkout proceeds.
Developer-Friendly Configuration
- Register C2B Validation & Confirmation URLs with a single click.
- Refunds via M-Pesa's B2C API
- Instant Payment Notifications (IPN) via Daraja Webhooks
M-Pesa Payment Gateway - Setup & User Guide
The M-Pesa Unified Payment Gateway is a modular, professional-grade suite for Odoo, designed to handle the complexities of the Safaricom Daraja API. It streamlines the collection of payments via STK Push (Express) and C2B (Paybill/Till) while automating disbursements through B2C Refunds.
Key Features
- M-Pesa Express (STK Push): Triggers a secure PIN prompt instantly on the customer's phone.
- Intelligent Retry Logic: Supports multiple payment attempts via a Parent-Child Transaction Architecture, ensuring a full audit trail without duplicating orders.
- C2B Fallback: Provides manual payment instructions for Paybil Short Codes if the STK Push is ignored or fails.
- B2C Automated Refunds: Process refunds directly from Odoo Credit Notes using a secure Disbursement Queue.
- Modular Design: Optimized for performance; install only the components you need (trace_payment_mpesa_c2b, trace_payment_mpesa_b2c).
Installation
- Place the module folder into your Odoo addons directory.
- Enable Developer Mode in Odoo.
- Navigate to :menuselection:`Apps --> Update Apps List` .
- Search for trace_payment_mpesa and click Install.
- Install the sub-modules (trace_payment_mpesa_c2b or trace_payment_mpesa_b2c) as required by your business flow.
Configuration
M-Pesa Provider Setup
Go to :menuselection:`Invoicing --> Configuration --> Payment Providers` and select M-Pesa.
- Consumer Key & Secret: Link your Daraja Portal App credentials.
- Shortcode: Enter your Business Paybill or Store Number.
- Passkey: Required for triggering Lipa Na M-Pesa Online (STK Push).
B2C & Security Credentials
For automated refunds (requires trace_payment_mpesa_b2c):
- Consumer Key & Secret: Link your Daraja Portal App credentials.
- Initiator Name: The operator username created on the M-Pesa G2 Portal.
- Initiator Password: The password of the initiator.
Workflows
M-Pesa Express & Retries
- During checkout, the customer confirms their phone number.
- An STK Push is sent.
- If the customer cancels or the request times out, they can click Retry on the portal.
C2B Manual Reconciliation
In cases where the customer pays manually via Paybill:
- The system displays a Sanitized Account Number (e.g., SO005).
- The C2B Webhook listens for the BillRefNumber.
- The system matches the payment to the correct Transaction.
- The system converts Over Paid C2B Funds into reusable Partner Credits for seamless invoice reconciliation.
- For Quotation C2B Underpayments the system will create a Transaction for each Partial Payment and will Automatically Only Confirm the Quotation if the Sum of the all Done transactions amount is Greater Than Or Equals the Quotation's amount.
B2C Disbursement Queue
- When a Refund is initiated, the request enters a Queued state.
- An Odoo Cron Job processes the queue at defined intervals.
- Cancellation Window: Admins can cancel a pending refund before the cron job executes the API call, providing a vital safety net against human error.
Technical Information
Cron Jobs:
M-Pesa: Process B2C Queue: Handles outgoing disbursements.
Support & Troubleshooting
- Pending Payments: If a payment stays "Pending," check the Payment Transactions log to see Safaricom's response codes.
- URL Failures: Ensure your SSL certificate is valid; Safaricom will not send data to insecure (HTTP) or self-signed (HTTPS) endpoints.
Note
For further assistance, contact our technical support team via the Odoo App Store "Support" button.
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module