Pay Codes Nobody Can Read
How pay codes accumulate, why a statement of abbreviations cannot be checked, and the audit that finds codes still paying for forgotten reasons.
Pay codes accumulate and nobody deletes them. An organisation of any age has forty to a hundred, created one at a time by people solving one problem each, labelled for whoever created them and displayed on statements in six characters.
The statement issue in “Pay Codes Nobody Can Read” begins upstream, where hours, categories and amendments are created. Teams exploring time tracking with screenshots through a practical approach to time tracking with screenshots can improve that audit trail, but the wage statement must still use clear labels, show corrections and match the organisation’s applicable payroll obligations.
The employee sees "SHFT PRM 3" and "ADJ-14" and has no way to tell whether either is right. Payroll sees codes it inherited. And somewhere in the list are two or three that are still paying money for a reason nobody can now describe.
For an independent reference relevant to “Pay Codes Nobody Can Read”, consult the WHO mental-health-at-work resources. Use it to test record quality, working-time definitions, access, retention and exception handling against the organisation’s real payroll process.
Why they multiply
Every new arrangement creates one. A retention supplement at one site, a temporary uplift during a shortage, a one-off payment for a project, a correction that needed its own line.
Each is created quickly, under pressure, by someone who knows exactly what it is for. None is ever retired, because retiring a code requires knowing that nothing uses it, and nothing in the system reports on that.
The audit
- Export every pay code with its description and its configuration.
- Add a column for the last period in which each was used.
- Add a column for total value in the last twelve months.
- For each code in use, answer: what is this, who owns it, does it go in the rate.
- Mark codes unused for a year as candidates for retirement.
- Mark codes whose purpose nobody can state, and investigate those first.
Step six finds the interesting ones. A code paying a modest sum to eleven people every month, that nobody can explain, is either a historical arrangement that survived a restructure or a configuration error — and both are worth knowing about.
The three columns that matter
For each code in use: what it pays for, whether it belongs in the rate used for premiums, and whether its hours count towards a threshold.
Those three answers are what every other page in this section depends on, and they exist nowhere in most organisations. The code has a description, which is not the same thing as a classification.
Labels on the statement
A code is an internal identifier; the statement should carry a label a person understands. Those are two different fields and many systems support both.
Where only one exists, use words rather than an abbreviation, even if it is long. "Night shift supplement" takes more space than "SHFT PRM 3" and removes the question it would otherwise generate.
Adjustments, which are the worst offenders
Correction lines are frequently posted against a generic adjustment code with no description at all. The employee sees a figure, positive or negative, attached to nothing.
Every adjustment should carry what it is for and which period it relates to. Where the system cannot hold that, it goes in a letter or a message sent the same day — because an unexplained adjustment is the single most reliable way to generate a complaint.
Codes that should have been two
Sometimes one code is doing two jobs: a payment used both for a genuine allowance and for an ad hoc correction, because it was the nearest fit on a busy afternoon.
Where a code is used for more than one purpose, split it. A code that means two things cannot be classified for the rate, which means every calculation that depends on it is right by luck.
Retiring a code
Retiring means blocking new use while keeping history, not deleting. Historical statements and any later correction need the code to continue to resolve.
Most systems distinguish between the two and most organisations use neither, leaving every code open forever. Blocking the unused ones removes the opportunity for somebody to pick a wrong but plausible code in a hurry, which is how several of the problems above started.
Codes created in a hurry
Most problem codes were created on a Friday afternoon to solve a payment that had to go out. Whoever created it knew exactly what it was for and had no time to classify it.
The answer is not to prevent that, which would stop people being paid. It is to add a short review of codes created in the last quarter, so that anything made in a hurry gets classified within a few weeks rather than never.
Codes with the same meaning
Audits reliably find three codes doing the same job, created by different people at different times, with slightly different configurations.
That is worse than it looks, because the three may be classified differently for the rate, which means two employees receiving the same payment are treated differently. Consolidating duplicates is usually the first thing to do after the audit and the easiest to justify.
Keeping the list
The audit produces a document worth keeping and updating, and the way to keep it updated is to attach the three questions to the act of creating a code.
That makes the list self-maintaining and turns a one-off clean-up into something that stays clean, which is the difference between an audit that helped for a year and one that changed how the system works.