Payroll runs, the bank transfer goes out, everybody is paid, and the file is rejected. The salaries were correct. The problem was that one employee's identifier in the payroll system did not match the one the labour ministry holds, and the file is validated as a whole.

That is the Wage Protection System in one paragraph, and it is why WPS belongs in the payroll conversation rather than being treated as something the bank deals with.

What it is

WPS is an electronic salary transfer system operated with the labour ministry and the central bank, requiring employers to pay wages through approved channels and to file a record of what was paid to whom. The UAE and Saudi Arabia both run one. Several other Gulf states have equivalents.

The point of it, from the regulator's side, is to make non-payment and underpayment visible rather than something an employee has to prove. From the employer's side it is a monthly obligation with a format, a deadline, and penalties that escalate.

The penalties are the part worth taking seriously: persistent non-compliance restricts a company's ability to issue new work permits, which is a constraint on hiring rather than a fine to absorb.

What the file contains

The formats differ by country and are set by the regulator, but the shape is consistent. Per employee, broadly:

  • The employee's identifier as the ministry holds it, which is the field that causes most rejections
  • The employer's establishment identifier
  • The pay period the transfer covers
  • Fixed and variable components of the wage
  • Days the employee was on the payroll in the period
  • The bank or exchange house routing details

Note the last two. Days on the payroll means a joiner or leaver mid-month produces a different figure from a full month, and it must agree with what the record actually shows. And the split between fixed and variable pay has to be consistent month to month; moving an allowance between the two because it was convenient once produces a variance somebody eventually asks about.

Where it goes wrong

Almost never in the arithmetic.

Identifier mismatches. The employee's number in your HR system is not automatically the number the ministry holds. If somebody's labour card is reissued and the number changes, payroll finds out when the file bounces. Keep the ministry identifier as a field on the employee record, not in a spreadsheet the payroll person maintains privately.

A leaver still in the file. Somebody who left on the 10th belongs in the file for the days they worked, with the correct day count, not omitted entirely and not included as a full month. Omitting them looks like non-payment.

A joiner who is not in it yet. The reverse case, and the one more likely to attract attention, because it reads as somebody being paid outside the system.

The whole file fails on one row. These are validated as a batch. One bad identifier is not one unpaid employee, it is a rejected filing, and the clock does not stop while you fix it. Validate before submitting rather than after.

Salary structure drift. If the basic and allowances in your payroll no longer match the contract the ministry has on file, the variance is visible to them even when the total is right. It also matters separately for end of service, which is calculated on basic wage alone.

The practical arrangement

The version of this that works is boring:

1. Hold the ministry identifier on the employee record, as a required field for anybody in a WPS country 2. Reconcile joiners and leavers before the run, not after 3. Keep basic and allowances stable, and change them deliberately with a dated record 4. Generate the file from the payroll run rather than re-keying it 5. Validate the file before the deadline, with enough time to fix a rejection 6. Keep the submitted file, because it is the evidence of what was filed and when

Step four is where most of the risk leaves the process. A file assembled by hand from a payroll report is a second transcription of numbers that were already correct, and every transcription is a chance to introduce the mismatch that fails the batch.

Caveats

Formats, deadlines, thresholds and penalties are set by each country's regulator and change. Nothing here should be used as a current specification: take the file format and the deadline from your labour ministry or your bank, and confirm which regime applies, since free zones may differ from the onshore rules.

This is a description of the obligation, not legal advice.

Where the software fits

Work Mint holds the salary structure with basic separated from allowances, tracks joiners and leavers against the payroll month, and reports payroll in 32 currencies, so a group paying staff in Dubai, Riyadh and Karachi sees one payroll month rather than three systems. Country-specific identifiers are held on the employee record as configurable fields rather than living in a spreadsheet beside the system.

If you want your WPS inputs checked against what you currently hold, ask us at info@workmintpeople.com.

Sources: the Wage Protection System as published by the UAE Ministry of Human Resources and Emiratisation and by the Saudi Ministry of Human Resources and Social Development.