Mudad WPS Payroll in Saudi Arabia: 5 Violations to Fix Before Payday
Every private employer in Saudi Arabia, even with one worker, is in WPS. See the monthly Mudad file cycle, the 5 violations that cut your compliance rate, end-of-service sums in SAR and how Odoo builds the file.
Published 2026-11-02 · METCH
Who the Wage Protection System covers, and where Mudad fits
The Wage Protection System (WPS) covers every private-sector employer in Saudi Arabia, whatever its size, and every worker on its payroll, Saudi or expatriate. The Ministry of Human Resources and Social Development (MHRSD) phased it in over 17 stages, from establishments with 3,000 or more workers in September 2013 down to those with one to four workers on 1 December 2020. If you have even one employee registered with GOSI, you are in.
Mudad is where it runs. The Ministry's wage protection file upload service says wage files can now be uploaded only through the compliance system in Mudad, and the service is free. Mudad also offers employee management and salary transfers through its links with banks. You can pay through Mudad or through your own bank, but the monthly wage file ends up in Mudad either way.
What to have in place before your first upload:
- The Ministry's conditions: the establishment registered with MHRSD and with GOSI, its main branch documented and its owner or an authorised delegate registered.
- A bank account for the establishment and for every registered employee.
- Salaries paid in Saudi riyals into those accounts. Article 90 of the Labor Law requires workers on a monthly wage to be paid once a month, by deposit through approved banks in the Kingdom.
- Employee data kept current, with every hire, exit and wage change reported to GOSI.
The checks are automatic because the scale is huge. For 2025, the Ministry reported more than 1 million establishments on Mudad, 94% of the private sector, with compliance above 85% and more than 17 million wage files processed. The Ministry's service page says each file is processed as you upload it, and your compliance rate updates on the spot.
The monthly WPS cycle: pay, upload, check, justify
Every month runs the same loop: pay on the contract date, upload the wage file your bank returns to Mudad, check your rate, and fix or justify every note before the next run. A checklist to copy:
- Before the run: register new hires with GOSI at their contract wage, report leavers, and update GOSI for every raise.
- Run payroll and check each line against the five violations in the next section.
- Pay on the contract date, through your bank or through Mudad's payroll.
- In Mudad: Upload Files, then Upload New File; choose the wage month and type, select the file and upload. Never open or edit the bank's file first.
- Right after the upload, open Compliance Information and act on every note.
- Post the payroll and the end-of-service provision to your accounts.
The Ministry's Wage Protection Program page (in Arabic) measures compliance as the employees whose wages went through the system, divided by all employees registered with GOSI under your establishment. Left out, once you justify each case: a new expatriate in the first 90 days in the Kingdom, a worker on leave outside the Kingdom, and a worker with a case pending in court. A Saudi worker counts after a full month with you. The page sets no pass mark, so treat every note as urgent.
Example: GOSI lists 40 employees, 3 of them new expatriates in their first 90 days, already justified in Mudad. Your file shows wages for 35 of the other 37: a rate of about 95%. The gaps: a leaver still on GOSI and a driver paid in cash.
What lateness costs, per the same page, as of November 2026:
- File two months late: all Ministry services stop except issuing and renewing work permits.
- Three months late: all services stop, and your workers may move to another employer without your consent.
- Salaries paid late: a fine of SAR 10,000 for each month, an inspection visit, and referral to the courts if the breach is proven.
When pay does not match GOSI: the five violations that count against you
Mudad compares every line of your file with the wage GOSI holds for that employee. GOSI's contributor FAQ counts the basic wage plus a cash housing allowance as the earnings subject to contributions. The Ministry then counts five violations against your establishment:
- Paying the same worker more than once in a month; the duplicate record is excluded.
- Paying a salary late.
- Deducting more than 50% of the basic salary of a worker registered with GOSI.
- Paying 20% more than the salary registered with GOSI.
- A basic salary that does not equal the salary registered with GOSI.
Each violation lowers your rate unless you justify it in Mudad and a Ministry inspector accepts the justification. Separately, a record is rejected when the total does not equal basic salary plus housing plus other earnings minus deductions, when any amount is negative or the total is zero, or when the national ID or iqama number is missing. The whole file is rejected if it was opened after you received it from the bank, if the establishment's unified number is missing or wrong, if it is not in Saudi riyals, or if it breaks the technical specification.
A worked line: basic SAR 6,000, housing SAR 1,500, transport SAR 500, and a SAR 600 loan instalment, inside the 10% of the wage that Article 92 of the Labor Law allows for repaying employer loans. Net pay: 6,000 + 1,500 + 500 − 600 = SAR 7,400. GOSI holds a SAR 6,000 basic, so the line passes.
Now raise the basic to SAR 6,600 in October and forget GOSI. The next file shows a basic salary that no longer matches the GOSI record, and the month counts as a violation unless you justify it. Update GOSI in the same month you change the contract.
Common errors: allowances, new hires, leavers and end of service
Most WPS notes start with your data, not with the bank:
- Allowances in the wrong field. Keep transport and other allowances under other earnings, never inside the basic salary, or the basic stops matching GOSI.
- A new hire paid before GOSI knows them. Register each new employee at the contract wage before the first payroll; GOSI's FAQ sets the outer limit at the first 15 days of the following month. Add their bank account and ID or iqama number before payday. A new expatriate is left out of your rate for 90 days but must still be paid on time.
- A leaver still on GOSI. Report every exit, or they keep counting in your rate with no wage paid.
- Heavy deductions. Absence, advances and loans can together pass 50% of the basic in a single month; the Labor Law caps deductions at half the wage anyway.
End of service carries the biggest sums. Under Article 84 of the Labor Law, the award is half a month's wage for each of the first five years and a full month's wage for each year after, on the last wage, with part years pro rata. The Law's wage is the actual wage, allowances included, though Article 86 lets the contract exclude commissions. A worker who resigns gets one-third after two to five years, two-thirds after more than five and under ten, and the full award after ten, as the Ministry's 2025 guide to employer and worker rights sets out.
Example: last wage SAR 8,000 (6,000 basic, 1,500 housing, 500 transport) after 7 years. If you end the contract, outside the misconduct cases of Article 80: 5 × 4,000 + 2 × 8,000 = SAR 36,000. If the employee resigns: two-thirds, SAR 24,000. The Law's published text allows one week to settle when the employer ends the contract, two weeks when the worker does. Accrue the award monthly, as our year-end closing checklist advises.
How a payroll system produces the bank and WPS file, and what Odoo 20 adds
A payroll system earns its keep by making the file a by-product of the contract. The chain runs: contract and GOSI wage, payslip, payment instruction to the bank, salaries paid, the bank's wage file, upload to Mudad. Every manual copy between those steps is where a basic salary or an IBAN goes wrong.
Odoo's Saudi payroll documentation describes what the localization, l10n_sa_hr_payroll with its accounting companion l10n_sa_hr_payroll_account, adds:
- Housing, transportation and other monthly allowances on each employee's Payroll tab, each posted to its own account.
- GOSI rule parameters for Saudi and non-Saudi employees, with the employee share deducted on the payslip; Odoo can fetch the percentages through its GOSI integration setting.
- A monthly end-of-service provision: one-twelfth of half the monthly wage in the first five years, one-twelfth of the full wage after that.
- A WPS report from the Payment Report button, in the Saudi WPS export format, which Odoo says follows the Ministry's technical guidelines.
Before the first export, enter the MoL establishment ID in Payroll settings, mark the company bank account as trusted with its bank establishment ID and SARIE code, give every employee a trusted bank account and a 10-digit Saudi national or iqama ID, and post the payslips. Odoo's page does not mention Mudad, so confirm with your bank which file it accepts from you, and run one month in parallel with your current method before you switch.
On cost, Payroll is not in the free Community edition, and staff who only receive payslips may be billed as Light Users; our Odoo price guide for Saudi Arabia has the figures. For contracts, attendance and leave, read Odoo HR and payroll for Saudi companies. METCH, an official Odoo partner in Saudi Arabia, can set this up and run the parallel month with your team.
Frequently asked questions
Is WPS mandatory for small businesses in Saudi Arabia?
Yes. The 17th and final phase of the Wage Protection System brought in establishments with one to four workers on 1 December 2020, so every private-sector employer with staff registered with GOSI is covered. You need a bank account for the establishment and for each employee, and you upload the monthly wage file through Mudad, the only channel the Ministry of Human Resources accepts.
What is the penalty for paying salaries late in Saudi Arabia?
A fine of SAR 10,000 for each month wages are paid late, according to the Ministry's Wage Protection Program page, plus an inspection visit and referral to the courts if the breach is proven. Late wage files add service suspensions: after two months, every Ministry service stops except work permits; after three, all services stop and workers may transfer without your consent. These are the published rules as of November 2026; confirm them with the Ministry on 19911.
Why is our Mudad compliance rate low when we paid everyone?
Usually because the file does not match GOSI. The Ministry divides the employees paid through the system by all employees registered with GOSI, so a leaver still on GOSI pulls the rate down, and so do violations: a basic salary that differs from the GOSI record, pay 20% above the registered salary, or deductions over 50% of the basic. Correct GOSI, or justify each note in Mudad for an inspector to accept.
Can Odoo generate the WPS file in Saudi Arabia?
Yes. Odoo's Saudi payroll localization creates a WPS report from posted payslips in the Saudi WPS export format, which Odoo's documentation says follows the Ministry's technical guidelines. It needs the MoL establishment ID, a trusted company bank account with its bank establishment ID and SARIE code, and a trusted account and 10-digit ID for each employee. Confirm with your bank which file it accepts, and test one month in parallel.
Run Saudi payroll and WPS files from Odoo
METCH, an official Odoo partner in Saudi Arabia, sets up Odoo Payroll with your GOSI wages, allowances, end-of-service provisions and the WPS export, then runs a parallel month with your team before you switch.
Get a free proposal