Oman / Payroll in Odoo
Payroll in Odoo
The portal prepares the payroll batch. You review it, confirm it and reconcile the payments in Odoo.
How payroll flows
- 1Customer adds employeesIn the portal, HR, Employees tab.
- 2You set the contractWage, allowances, pay schedule and structure, in Odoo.
- 3Customer creates the batchIn the portal, HR, Payroll tab.
- 4You review and confirmEach payslip, in Odoo.
- 5Files and paymentWPS file from the portal. You reconcile the bank lines.
Before the first payroll
- Nationality. The rules read the employee's Nationality (Country) in Odoo. Oman means the Omani Social Protection Fund rates apply. Any other country means the non-Omani rules.
- Contract. Open Employees > Contracts. Check the wage and the allowances, the pay schedule (monthly, bi-weekly or weekly) and the salary structure OM Standard Salary.
- Parameters. Check the Oman parameters for the Fund rates and dates (see Oman Parameters).
Review a batch
- Open Payroll > Payslips Batches and open the batch the customer created. It holds one payslip per employee.
- Open each payslip (also in Payroll > Employee Payslips). Check the lines against the contract.
- Fill the extra fields if needed (below).
- Click Confirm. The state becomes Done, and the payslip PDF link appears in the portal.
Why: the customer prepares the figures, but the accountant answers for them. A confirmed payslip is part of the books.
Fields you may fill on a payslip
| Field | Meaning |
|---|---|
| Unpaid days | Days of unpaid leave. The wage is reduced. The Fund contribution still runs on these days (SPF Reg Art 29). |
| Sick days (this payslip) | Sick leave days in this period. Sick pay follows the tiers in the Oman parameters. |
| Bonus (OMR) | A bonus for the period. |
| Deduction / malus (OMR) | A deduction from the wage. Keep within the maximum in the parameters and give the reason, because the bank file asks for a note on every deduction. |
| Unused annual leave paid out (days) | Number of unused leave days paid at the end of service or when the balance is paid. |
What the salary rules do
Structure OM Standard Salary (OM_STD). In Payroll > Configuration > Salary Rules the rules are:
| Rule | What it does |
|---|---|
| BASIC, HOUSING_ALW, TRANSPORT_ALW, TELECOM_ALW, OTHER_ALW | Basic wage and allowances. Gross wage is the basic wage plus all allowances. |
| BONUS | Bonus entered on the payslip. |
| LEAVE_ENCASH | Unused annual leave paid out: (basic wage + allowances) divided by 30, times the days entered (Labour Law Art 81). |
| SICK_PAY | Sick pay by tiers (Labour Law Art 82). |
| GROSS_TOTAL | Gross wage including sick pay. The base for the Fund contributions. |
| SPF_OLDAGE_EE, SPF_EMPSEC_EE | Employee contributions, Omani employees only. |
| EMPLOYER_DEDUCTION, LOAN_REPAY | Deduction / malus entered on the payslip, and a loan installment. |
| SPF_OLDAGE_ER, SPF_INJURY_ER, SPF_EMPSEC_ER | Employer contributions, Omani employees only. |
| SPF_MATERNITY_ER, SPF_SICK_ER | Employer maternity and sick-leave contributions. The sick-leave one starts on the date in the parameters. |
| GRATUITY_ACCRUAL | End-of-service gratuity accrued each month for non-Omani employees, until the savings scheme starts. |
| SAVINGS_ER | Employer savings scheme contribution (9%) for non-Omani employees, from the start date. |
| NOTICE_PAY, GRATUITY_PAYOUT, AIR_TICKET, OTHER_DUE, FINAL_RECOVERABLE | Final settlement when an employee leaves. |
| TOTAL_WITHHELD, NET | Total deductions and net pay. |
All percentages and dates come from the Oman parameters, never from the rule text.
Social Protection Fund
| Employee | Employer | |
|---|---|---|
| Omani | 8% (7.5% old age, 0.5% employment security) | 14.5% (11% old age, 1% work injury, 0.5% employment security, 1% maternity, 1% sick leave) |
| Non-Omani | none | 2% (1% maternity, 1% sick leave) |
- The contribution is calculated on the gross wage, plus sick pay and unpaid days, because the Fund counts every day.
- No ceiling is applied. The law caps old age and work injury at OMR 3,000 a month (Law Art 52). The system does not force the cap. You and the customer decide what to apply for wages above it. The parameter
om.spf.ceilingexists but no payroll rule reads it. - Pay the Fund by the 15th of the next month. Reconcile the payment against 200206. The portal Reports, Statutory Filings, gives the monthly CSV with each employee's wage and contribution.
- Registering an employee is due within 30 days, and a wage change within 14 days (SPF Reg Arts 21 and 2).
Gratuity and the savings scheme
- For non-Omani employees the system accrues the end-of-service gratuity every month: one basic wage per year of service (parameter
om.gratuity.months_per_year), booked 500202 against 200503. - The accrual stops on payslips whose period ends on or after the savings scheme start date (
om.savings.start, set to 19 July 2027 at setup). From then the employer pays 9% of the basic wage (500310 against 200206). - Service before the start date is settled under the Labour Law. When the Fund board announces the date, change the parameter. See Regulatory Changes.
Leave and sick pay
Sick pay tiers are in the parameter om.sick.tiers: days 1 to 21 at 100%, 22 to 35 at 75%, 36 to 70 at 50%, 71 to 182 at 35% of the gross wage (Labour Law). Annual leave is 30 days. Unused days are paid with the field Unused annual leave paid out (days).
The bank file (WPS)
- Wages must reach the employee through the Wage Protection System within 3 days after the pay period ends (Decision 729/2024).
- Produce the file from the batch page in the portal: Bank Muscat barcode PDF, Excel, or Bank Dhofar CSV.
- The file has one salary frequency per employee: M monthly or B every two weeks. Weekly pay cannot be exported, because the Ministry's specification has no weekly code.
- Net salary = basic salary + extra income - deductions - social security deductions. Every deduction needs a note.
- Files for Sohar, NBO and Ahli are not available. Whether Bank Muscat accepts a form not made by its own Adobe file is still to be asked.
Pay and reconcile
There is no payment button. The customer pays through the bank. When the bank statement is uploaded, reconcile the salary payment against 200103 Employees Payables and the Fund payment against 200206 SPF Contributions Payable.
Not built yet
- Personal income tax withholding (5% above OMR 42,000 a year, from 1 January 2028). The executive regulation is not published.
- Checks for the annual increment (Decision 317/2025) and the minimum wage. The system sets no minimum.
- Overtime rates and the shorter Ramadan day are out of scope by owner decision. The customer enters the hours actually worked.
- Directors and consultants. Consultants are supplier payments through vendor bills.