Blog/Zoho How-To

The seven reasons a UAE bank rejects your WPS SIF file

Why WPS salary files get rejected in the UAE, from mismatched salary months to wrong routing codes, and how to stop it before the 1st-of-the-month deadline.

VVinay ShettyRegulations verified 7 min read

Every month, the salaries of most private-sector workers in the UAE travel through the Wage Protection System (WPS) as a Salary Information File, or SIF: a plain text file your payroll system builds and your bank or exchange house submits. When one line of it is wrong, the agent can reject the whole file, and nobody gets paid until it is fixed.

That used to cost a few days of slack. Since 1 June 2026 it costs more. Ministerial Resolution No. 340 of 2026 makes salaries for the previous month due on the first day of each month, through WPS, and an establishment is compliant only if at least 85% of the wages due are transferred on time. A rejected file on the 1st is a late payroll.

Here are the seven reasons files come back, and how to stop each one at source.

How a SIF is put together

The file has one control record and one record per employee:

  • SCR, the salary control record: your employer ID, your bank's routing code, the file creation date and time, the salary month, the number of employee records and the total salary.
  • EDR, the employee detail record: the employee's ID, the routing code of the bank or exchange house that holds their account, the account number, the pay period, the days paid, fixed and variable pay, and any unpaid leave days.

The rules below come from the Ministry of Labour's standard format, as WPS agents publish it (Dubai Islamic Bank), and from Zoho's SIF guide. Your agent's own specification has the final word, so keep a copy.

1. The salary month does not match the pay dates

The salary month in the control record must be the same month and year as the pay start and end dates of every employee record. If one doesn't match, the file in its entirety is rejected.

This is the classic way to break a good file: putting last month's arrears, a final settlement or a late joiner's back pay into this month's run with their original dates. Pay them in the current period, or send them in a separate file for their own month.

2. The totals do not add up

The control record carries two checks on the rest of the file:

  • The record count must equal the number of employee records.
  • The total salary must equal the sum of the fixed and variable pay in all of them. Zoho's guide notes that a difference of AED 0.01 is enough for a rejection.

Both break when the file is edited by hand after it is generated: a line deleted for someone who left, an amount retyped, a prorated salary rounded differently in a spreadsheet. If a figure is wrong, fix it in payroll and generate the file again. Do not edit the SIF.

3. The days do not match the dates

Each employee record has a pay start date, a pay end date and a days-in-period figure. The end date must fall after the start date, in the same month, and the days must equal the end date minus the start date, plus one. Dates use the form YYYY-MM-DD.

Joiners and leavers cause most of these. Someone who started on 12 October is paid from 2026-10-12 to 2026-10-31, which is 20 days, not 30. Unpaid leave goes in its own field, as days on leave, rather than being taken off the days in the period.

4. The employee ID is not the MOHRE person ID

The employee ID in the file is the person ID issued by the Ministry of Human Resources and Emiratisation, normally 14 digits, and it is checked against the WPS database. It is not the Emirates ID number, the passport number or your own staff number.

Store the MOHRE person ID on the employee record when the work permit is issued, check it against the labour card, and update it whenever a permit is renewed or changed.

5. The routing code and the account do not belong together

Each employee record names the agent that holds the employee's money, by the 9-digit routing code the Central Bank assigns to that bank or exchange house, and gives the account the employer was given by that agent. For a bank account, that is the 23-character IBAN starting with AE.

The usual failure is an employee who moved banks or switched from a salary card to a bank account, with only one of the two fields updated. Treat routing code and account as a pair: they change together, and they are checked together.

6. An amount is negative or badly written

Fixed and variable pay must be valid amounts, such as 2345.87 or 0.00 when there is nothing to pay. Negative amounts are not permitted, and the file is rejected if one appears. Zoho also warns against commas as thousands separators.

Negative figures usually come from deductions entered as their own line. A deduction belongs inside the payroll calculation, so the file only ever carries the net amount. Under the new resolution, deductions also matter for compliance: a worker counts as paid when they receive at least 85% of the wage due and the rest is lawful deductions.

7. The employer details or the file name are off

The control record is checked too:

  • Employer ID: the 13-digit Employer Unique ID from the Ministry, checked against WPS records (Zoho).
  • Your bank's routing code: the agent your company pays salaries through, not an employee's bank.
  • Creation date: a date in the future is rejected.
  • File name: Zoho's guide describes it as the employer ID followed by the creation date and time, and says the date and time must match the control record.

These rarely change, which is why they are rarely checked: until the company moves its payroll account to another bank, or a group runs payroll for a second establishment with the first one's ID.

An accepted file can still be late

Since 1 June 2026, the clock starts on the 1st. The government portal sets out what follows a delay:

Days after the due dateWhat can happen
From day 2Notifications and alerts to the establishment
Day 5New work permits suspended, with a warning
Day 11An administrative fine, and reclassification to the third category for a repeat within six months
Day 16Labour disputes registered automatically, and for larger establishments, work permits suspended
Day 21Enforcement measures, travel bans and, for repeats in two consecutive months, notification of the Public Prosecution

The resolution also removed the old 30-day exemption for new employees, so a joiner belongs in WPS from their first month (Morgan Lewis).

In practice, that means planning backwards from the 1st. Close the payroll a few working days before month-end, generate the file, and submit it with enough time to fix a rejection and resubmit before the due date.

Stop the rejections at source

Six of the seven reasons above start in employee master data or in manual edits, not in the file itself. A payroll system that builds the SIF from the same pay run every month removes most of them:

  • One record per employee with the MOHRE person ID, the agent's routing code and the account, kept up to date when permits or banks change.
  • Pay periods from joining and leaving dates, so the days and the dates always agree.
  • Deductions calculated in payroll, so no amount is ever negative.
  • No hand edits: a wrong figure is corrected in payroll and the file is generated again.

In Zoho Payroll, the SIF is available once the pay run is processed, after you enter three employer details: the 13-digit Establishment ID, the employer bank code and an employer reference (Zoho). Zoho builds the file name, the control record and the employee records from the same pay run, so they stay in step. For businesses that need payroll built around their own rules, our Payroll Management app on Zoho Creator generates WPS files the same way.

If your SIF keeps coming back, or you want payroll ready for the 1st-of-the-month deadline, book a free consultation. We will look at your employee data and your last rejected file with you, and show you what to fix.

Official sources

More Zoho How-Tos