Wednesday, March 11, 2026
2 changes · saas-19.2
New functionality added to Odoo
This update introduces a new 'Net Cost' salary rule for Saudi Arabia, addressing specific requirements for employer contributions related to GOSI and other payroll scenarios. It adjusts how salary deductions and employer costs are calculated, ensuring accurate reporting and compliance with local regulations. This change improves the accuracy of payroll calculations for employees in Saudi Arabia.
Original PR description
This PR introduces a new salary rule 'Net Cost' since setting appears_on_employee_cost_dashboard as True on the salary rule considers the sign on the rule, and for cases like the GOSI Employee Rule we need the sign to be negative to deduct from the employee but also increase the employer contribution amount. - adjusted provision rules to be part of a new category - adjusted remaining days to be allowance instead of company contribution - NET salary doesn't contribute to employer cost - New salary rule 'net cost' contributes to employer cost. Task-5894405 Forward-Port-Of: odoo/enterprise#106834
This update introduces support for accepting payments via MPESA, a popular mobile money service in Kenya, through two payment methods: Express and Lipa Na Mpesa. This allows businesses to offer a convenient payment option to customers, streamlining transactions and expanding market reach.
Original PR description
This pr introduces MPesa payment methods using Safaricom APIs for Kenya. There are two types of payment methods : - Mpesa Express: This is implemented with the M-Pesa Express API. It's the Merchant…
This pr introduces MPesa payment methods using Safaricom APIs for Kenya. There are two types of payment methods : - Mpesa Express: This is implemented with the M-Pesa Express API. It's the Merchant Initiated payment method. The merchant create a payment method M-Pesa Express with Safaricom payment provider. The merchant is allowed to ask for payment through the API with an USSD prompt on the customer phone number. Customer enters the PIN and the API call the callback of the POS to reconcile transaction with order. (https://daraja.safaricom.co.ke/dashboard/apis?api=MpesaExpressSimulate) - Lipa Na Mpesa: This is implemented with the Customer To Business (C2B) API. This payment method is different from the first one. It is a Merchant-Initiated payment method. The POS registers callback URLs through the register URL. The POS listen on its callbacks. Customer sends a payment through his Safaricom or MPesa application with some informations of the business. When a transaction is catch in the callback, POS displays it. The cashier needs, manually, to reconcile it with the current order. To reconcile, cashier see a popup with every transaction done on this business account number. (https://daraja.safaricom.co.ke/dashboard/apis?api=CustomerToBusiness) Dynamic QR Code API is also implemented to allow customers to scan the QR Code in the official Safaricom application and send the payment easily without errors of amount or till number. (https://daraja.safaricom.co.ke/dashboard/apis?api=DynamicQRCode) Note : The problem with this payment method is that there is two steps. The first step is a "Verification" step, which is optional. Businesses needs to manually sends an email to Safaricom to allows them to add this step. This step is useful because it is used to accept or reject a transaction before charging the customer. But, in reality, not all of the businesses ask Safaricom to add this step. So, we don't configure it for the moment. The second step is the "Confirmation" step, before this step, the customer is already charged. The API sends transaction data to the POS, we display it in the POS to allow cashier to reconcile the current order with a transaction. Requirements : If you want to test this API, https is needed and a valid kenyan (+254) phone number is also needed. But, you can simulate requests in the Daraja Portal. (https://daraja.safaricom.co.ke/dashboard/apis) task: 5886047 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#247615