Oman / Payroll
Payroll
Payroll turns salaries and hours into payslips, Social Protection Fund contributions and the bank file that pays your staff.
How it works
- 1You create a batchPick the schedule, the employees and the period.
- 2Payslips are madeGross, Fund contributions and net.
- 3Your accountant confirmsEvery payslip is reviewed.
- 4You get the filesPayslip PDFs and the WPS salary file.
- 5The bank paysYou pay through your bank. The statement settles it.
Create a payroll batch
- Open HR in the menu, then the Payroll tab.
- Choose the Schedule. The employees on that schedule appear with checkboxes.
- Tick the employees, enter the period start date and click Create Payroll.
Below, Payroll History lists every batch with its period, creation time, number of employees and state. Click a batch to see each employee's gross and net. Click an employee to expand the full breakdown.
Loans
A loan you add in the Loans tab (HR, Employees) is taken from the pay in equal installments. The installment is deducted automatically in monthly payroll. There is no cap: the payslip deducts what is entered.
When an employee leaves
On the batch page, each payslip that is not yet confirmed has a small form: tick Final settlement and enter unpaid days, leave days paid out, notice pay, air ticket, other dues and recoverable costs. Leave the gratuity blank to have it calculated. Save, and the net is shown. A confirmed payslip cannot be changed here. After your accountant confirms a final payslip, a Final settlement PDF button appears beside the payslip.
Payslips
After your accountant confirms a payslip (state Done), a Payslip PDF link appears for it. The payslip is in Arabic and English.
The salary file for the bank (WPS)
Salaries must reach employees through the Wage Protection System within 3 days after the end of the pay period. From the batch page you can produce:
| File | For |
|---|---|
| Bank Muscat barcode PDF | Bank Muscat. Print it, sign it and give it to the bank. |
| Excel | Banks that take an Excel upload. |
| Bank Dhofar CSV | Bank Dhofar. |
A weekly pay batch cannot be exported to WPS: the Ministry of Labour's WPS specification has only two pay frequencies, monthly (M) and every two weeks (B). Files for Sohar, NBO and Ahli banks are not available yet.
The batch page also gives a payroll register (employee, basic wage, allowances, gross, Fund contributions, deductions, net) as PDF, Excel or CSV, in English or Arabic.
Social Protection Fund
| Employee | Employer | |
|---|---|---|
| Omani | 8% | 14.5% |
| Non-Omani | none | 2% (1% maternity, 1% sick leave) |
The contribution is on the gross wage. The law sets a ceiling of OMR 3,000 a month for old age and work injury. The system does not force it: you and your accountant decide what applies. It is due by the 15th of the next month. The Reports page lists what is due.
End of service
For non-Omani employees the system adds up the end-of-service gratuity (one basic wage for each year of service) month by month, so it is already in the books when someone leaves. The 9% savings scheme replaces gratuity from a date the Fund will announce, no later than 19 July 2027.
Paying the salaries
There is no payment button. You pay through your bank, and the payment is matched when you upload the bank statement.
For accountants
- Rates are in the Oman parameters in Odoo (Invoicing > Configuration > Oman parameters), not in code, and every change is logged. See Oman Parameters. Omani: employee 7.5% old age plus 0.5% employment security; employer 11% plus 1% injury plus 0.5% plus 1% maternity plus 1% sick. Non-Omani: employer 1% maternity and 1% sick. No OMR 3,000 ceiling is applied.
- Gross wage is basic plus all allowances (Social Protection Law Art 1(15)). Sick pay, leave encashment and hourly workers (8-hour day parameter) are in the structure. A 30-day basis applies to weekly and bi-weekly runs. Overtime rates, the Ramadan short day, minimum wage and annual increment checks are out of scope by owner decision: the system sets no limits.
- Entries post to the SAL journal. Gratuity accrual uses 500202 / 200503, savings scheme employer cost 500310 / 200206. Salary and SPF payments are reconciled against 200103 and 200206.
- WPS: monthly code M and bi-weekly code B. Weekly is refused: the Ministry's specification has no weekly code. The file has 16 fields; net salary = basic + extra income − deductions − social security deductions. The Bank Muscat barcode payload and MD5 rule were taken from the bank's form. Whether the bank accepts a form not made by its own Adobe file is still to be asked.
- The accountant reviews and confirms the payslips in Odoo. See Payroll in Odoo.
- Deferred: personal income tax withholding (5% on net income above OMR 42,000 from 1 January 2028; the executive regulation is not published). Directors and consultants are not covered by this payroll: consultants are supplier payments through vendor bills.
- Unpaid days reduce the wage by gross divided by 30 per day (Labour Law RD 53/2023 Art 97). The Fund contribution is still calculated on the full wage for a month with unpaid days.
- Absences, bonus and sick days are entered on the payslip in Odoo. The portal has no input for them.
- A pay change on a running contract creates a to-do for the user: issue and sign the updated contract.
- In the WPS file a hyphen in a name becomes a space, and an apostrophe or full stop is dropped, because the bank form accepts A-Z and spaces only. The employee record keeps the name as written.
- The Fund's own upload format has not been verified. The SPF report (Reports page, PDF, Excel, CSV) is a working report for the accountant.