Lesson 1 — Strict payroll mapping: no amount disappears
One sentence carries this whole module, so start with it: once a UAE company is on strict payroll mapping, an amount can no longer disappear into a silent Adjustment Entry.
The obligation behind that sentence. Every line on a UAE payslip is a promise to somebody outside your company. The net wage is owed to the employee, and Ministerial Resolution 340/2026 obliges every establishment registered with the Ministry to submit documents and data proving that its workers' wages were paid. The pension deduction is owed to the General Pension and Social Security Authority. The ILOE premium is collected against the worker's own obligation under Federal Decree-Law 13/2022; the employer only facilitates it. Each of those is a separate creditor asking a separate question, and a ledger that cannot say how much of each is outstanding cannot answer any of them. Sources: MR 340/2026 Art. 1(3); FDL 13/2022.
The mental model. None of this is something you switch on: the module is auto_install, it joins the UAE payroll computation layer to the payslip-to-journal-entry bridge, and it appears as soon as both halves are present. It resolves the payroll accounts on each UAE company's own chart of accounts, maps every UAE salary rule to them company by company, and then switches that company to two things at once: strict payroll mapping, and the per-employee payable subledger. Strict mapping is the rule that every salary rule must carry a general-ledger mapping. The subledger is what makes the net-wage balance break down by person rather than sitting as one number.
What strict mapping actually changes. A rule with no mapping used to be free to park its amount somewhere generic. Under strict mapping it is not: the payslip stops at confirmation and names the rules that are missing a mapping. That is the trade the module makes on your behalf. You give up the ability to confirm a payslip while a rule is unmapped, and you get back a ledger in which every payroll amount has an owner.
Three things follow from that switch, and they are worth stating separately because people expect only the first.
- Nothing lands in an adjustment line. Every amount is on an account somebody chose deliberately.
- The payslip refuses rather than guesses. A confirmation that fails is the mapping rule doing its job, not a defect.
- The net-wage balance is per employee. One open item per person, not one balance for the payroll run.
Where to look. Open Payroll → Configuration → GL Account Mapping. Every UAE salary rule for the active company is there, with the account it posts to. This is the screen you will spend the rest of the course in.
The worked example is a question, not a figure. Take the three questions a finance manager is actually asked at month end, and note where each answer has to come from.
| The question you will be asked | The account that answers it | Why one adjustment line cannot |
|---|---|---|
| What do we still owe our employees for last month? | 201401 Net Salaries Payable (WPS) |
The balance would be mixed with unrelated amounts, so no figure can be extracted from it |
| What do we owe the pension authority? | 201021 Social Insurance Payable |
The employee share and the employer share would be indistinguishable from everything else in the line |
| What have we collected in ILOE premiums and not yet remitted? | 201404 ILOE Premiums Collected |
A collected premium is somebody else's money; merged into a general balance it stops being visible as such |
Each of those accounts exists precisely because the question exists. That is the design: the chart of accounts is shaped by the questions a UAE payroll has to survive, and strict mapping is what stops an amount from leaving that shape.
The failure mode. The first thing most teams see is a payslip that will not confirm, with an error naming some rules. That is the company now requiring a mapping on every rule, and it usually means a rule was added after the seed ran — a custom allowance, most often. Give it a mapping of its own under Payroll → Configuration → GL Account Mapping, or run a reseed if the rule is one of ours. Do not resolve it by switching strict mapping off; that puts back exactly the silence this module was built to remove.