
Payroll on Odoo 20 in Egypt: social insurance and salary tax
Does Odoo's Egyptian payroll package get social insurance and salary tax right? Its documented rates match 2026 law; wage limits, health insurance and the 2027 rise need setting.
By ERP Consulting Department · 24 October 2026 · 9 min read
Odoo's documentation for its Egyptian payroll package states that the employer pays 18.75% and the worker 11% of a reference amount entered on the employee's contract, and gives the salary tax table from 0% to 27.5% with a personal exemption of EGP 20,000. These are the law's 2026 figures, but the page is silent on the insurable wage limits, universal health insurance and the January 2027 increase. The texts are Social Insurance and Pensions Law No. 148 of 2019 (Official Gazette No. 33 bis (A), 19 August 2019, in force from 1 January 2020), and Article 8 and the personal exemption of Income Tax Law No. 91 of 2005 as replaced by Law 7 of 2024 (Official Gazette No. 7 bis (A), 21 February 2024, applying to salaries from 1 March 2024). The screenshots come from Odoo's public demo for version 20, which runs the US payroll package.
This article is for companies that run, or plan to run, the payroll of private-sector workers on Odoo. The package computes on what is entered into it, so the company has to enter the insurable wage as the law defines it and update the rates when they change.
How a payslip works in Odoo 20
Odoo computes pay from a salary structure (Structure) holding salary rules (Salary Rules), computed in order of their sequence number, so that a later rule may use the results of earlier ones. The rules draw on rule parameters (Rule Parameters) and on categories that hold their totals, according to the Salaries and Salary rules pages of the 20.0 documentation. On the payslip, the Compute button fills the Salary Computation tab; Validate moves the payslip from Draft to Validated and creates its journal entry in draft, and the worker cannot be paid until that entry is posted. According to the release notes, version 20 removed work entries (Work Entries) and merged their types with time off types; the 20.0 documentation still describes them, and the demo has no menu for them.

A draft payslip for October 2026 in the demo, on the generic Regular Pay structure: the worked-time cards, then the rules in order from Basic Salary to Net Salary. These are the demo's rules, not those of the Egyptian package.
The Egyptian package against the law
The package has two modules: Egypt - Payroll, with the salary and leave rules, and Egypt - Payroll with Accounting, which adds the account mappings. Each employee's contract carries a Social Insurance Reference Amount field, the base for both shares; the page reads the same in the 19.0 and 20.0 documentation. The version 20 release notes add end-of-year income tax adjustments on payslips, and export formats for Forms 1, 2 and 6 for the National Organization for Social Insurance and for Form 2 for the Egyptian Tax Authority.
| Item | Odoo documentation page | The law in force in 2026 |
|---|---|---|
| Employer share | 18.75% of the Social Insurance Reference Amount | 18.75% of the insurable wage at the general rates (Law 148, arts. 19, 36, 46, 70 and 86) |
| Worker share | 11%, deducted on the payslip | 11% of the insurable wage (arts. 19, 36 and 70) |
| Tax rates | Six columns from 0% to 27.5% | The table in Article 8 as replaced by Law 7 of 2024, with the same six columns |
| Personal exemption | EGP 20,000 | EGP 20,000 a year (art. 13(1)) |
| Insurable wage limits | Not mentioned | EGP 2,700 and EGP 16,700 a month for 2026 |
| Universal health insurance | Not mentioned | 4% from the employer, at least EGP 50, and 1% from the worker, for workers resident in the governorates within its scope |
The rates are explained in Egypt's social insurance contributions and the tax table in Egypt's Personal Income Tax Brackets and the Falling-Bracket Rule. The 18.75% is a general rate that includes 0.5% for the financial benefits of work injury insurance, which rises up to 1% according to the risks of the establishment's activity as the Executive Regulations determine (art. 46). A matching figure in the documentation does not make a payslip correct: the result depends on the wage entered and on the rules.

One payslip of an Egyptian private-sector worker with the 2026 figures, from the wage to the journal entry, at the general rates only.
What the company has to set
The page does not say how the reference amount is set. For a private-sector worker the insurable wage is the January wage, or for someone who joins after January the wage of the month of joining until the next January (art. 115 of Law 148), less excluded allowances that may not exceed 30% of it in total, and between EGP 2,700 and EGP 16,700 a month for 2026; both limits rise on 1 January each year (art. 53 of the Executive Regulations issued by Prime Minister's Decree 2437 of 2021, Official Gazette No. 38 bis (B), 28 September 2021). In our view the field should hold the insurable wage after the limits are applied, reviewed in the January payroll when Form 2 is filed; see Egypt's insurable wage in 2026 and Egypt's social insurance Forms 1, 2 and 6.
Article 19 of Law 148 provides that "the contribution rate shall be increased every seven years from the date this Law comes into force by 1%, divided equally between the employer and the insured person, provided that the total contribution rate does not exceed 26%" (unofficial translation). The Regulations count from 1 January 2020 (art. 57), so under the text the old-age contribution becomes 12.5% for the employer and 9.5% for the worker from 1 January 2027, and the totals 19.25% and 11.5%; as of 24 October 2026 we have found no instructions from the National Organization for Social Insurance applying it. In Odoo a rate may be held as a rule parameter with dated values, or written into the rule itself. In our view the company should find where the package holds it before January and test the first payslip after the change.

A parameter from the US package in the demo with two values: 4.35 from 1 January 2025 and 3.99 from 1 January 2026 (shown on screen as Jan 1). The payslip takes the value in force on its reference date, according to the warning on the payslip in the first picture.
The page grants the personal exemption "on their gross income" and does not mention that the worker's social insurance share is also exempt (art. 13(2) of Law 91), or the rounding of annual net income down to the nearest ten pounds (art. 8). Tax is computed on monthly income converted to annual income, with a settlement each year (art. 10). In our view the end-of-year adjustments added in version 20 are consistent with that, and the two points above should be checked on a test payslip.
The Universal Health Insurance System Law, issued by Law No. 2 of 2018, is extended to the governorates in stages (Article 3 of its issuing articles, Official Gazette No. 2 continued (B), 11 January 2018). For a worker resident in a governorate where it applies, the employer pays 4% of the insurable wage with a minimum of EGP 50 a month and the worker 1%, and the head of the family 3% for a non-working wife or one with no fixed income and 1% for each child or dependant (art. 40 and Tables 1 and 2). The employer pays these to the National Organization for Social Insurance on the social insurance payment dates (art. 41).
The insurable wage here is as that Law defines it (art. 1(31)). Neither the definition nor Table 2 sets a ceiling, and the Universal Health Insurance Authority states that there is no maximum contribution. The details are in Universal health insurance in Egypt: contributions and rollout phases.
The 1% work injury treatment contribution under Law 148 applies only to those not covered by the new system (art. 46). Article 70 opens without prejudice to Law 2, but does not say which part of the sickness insurance rate stops; the Universal Health Insurance Authority states that the new contributions are not paid again as a percentage of social insurance contributions, and that cover follows permanent residence. The documentation page mentions none of this. In our view rules should be set for workers resident in those governorates; our view on the treatment share of the sickness rate is set out in the article cited above.
The journal entry and payment dates
The payslip's entry is built from the Accounting tab of each rule: the debit account and the credit account, together with Split on names to split the entry by payslip line name, Excluded from Net to keep the rule out of net salary with its own accounts, and Set employee on account line to show the employee's name on the journal items. The generic rules in the demo carry no accounts; the accounting module of the Egyptian package adds the account mappings, according to its documentation.

The Provident Fund rule of the generic structure in the demo: the debit and credit account fields are empty on the Accounting tab, with the three entry options below them.
In our view the entry should separate three liabilities into their own accounts, because each is paid to a different party: contributions, both shares, to the National Organization for Social Insurance, due on the first of the following month with no additional amount if paid within fifteen days of the due date (art. 121 of Law 148); tax withheld, paid within the first fifteen days of the following month (art. 14 of Law 91); and net pay owed to workers. The tax date is the standard-regime date: a business registered under the simplified tax regime meets its salary tax obligation by filing the annual settlement return together with payment; see Egypt's Simplified Tax Regime for Small Enterprises. The dates are collected in Egypt's tax and social insurance compliance calendar.
The general Payroll application pages and the Egypt page of the 20.0 documentation do not deal with spreading payroll cost across cost centres. In our view this should be designed with analytic plans, as in Analytic accounting and budgets in Odoo 19.0 for an Egyptian company, and tested on a test payroll entry before go-live.
What we recommend
- Check a test payslip for each group of workers against a manual calculation under the law before the first run: insurable wage, both shares, taxable base and tax.
- Enter the insurable wage, after the limits, in the reference amount field, and review it for all workers in the January payroll.
- Update the old-age rates before the January 2027 payroll, and test the first payslip after it.
- List workers resident in universal health insurance governorates, set their rules, and obtain written confirmation from the competent social insurance office that the treatment share is not charged twice.
- Link each rule to its accounts, post the entry before payment, and pay the tax and contributions on their dates.
The firm's ERP Consulting Department sets up the payroll package on Odoo and checks its test payslips against the social insurance and income tax laws before go-live.
Mahmoud Nassef, Founder Partner
Chartered Accountant, Ministry of Finance, Egypt
Member, Egyptian Society of Accountants & Auditors
Member, Egyptian Tax Society
Member, Egyptian Society for Public Finance and Taxation
Partner profile · Book a consultation
Disclaimer: This bulletin is prepared for general information on the legislation in force at the date of its publication. It does not constitute a professional opinion or tax or legal advice on any particular matter, and it should not be relied upon in place of advice based on an examination of the circumstances of each case. Nassef & Partners International accepts no responsibility for any action taken, or refrained from, in reliance on its contents. The positions stated remain subject to subsequent legislation and decisions.
