Method · 5 min read
Headcount and payroll: how much of the gap is people, and how much is pay
Payroll came in 20,900 under plan. That single number covers two completely different stories - a team that costs less per person, and a team that is smaller than planned - and they call for opposite conversations.
The question it answers
Payroll is headcount multiplied by average cost. Split it that way and the gap comes apart into four effects that add up to it exactly: what the average cost did, what the headcount did, positions filled without a plan, and planned positions left unfilled.
The last two are named from presence in a scenario, never from a date. A budget payroll file does not carry hire and leave dates, and inferring them would be inventing an HR fact.
Two factors, and they separate exactly
For a position present on both sides, with headcount F and average cost C, the split is two multiplications and no remainder:
- Average cost effect = (C1 - C0) x F1
- Headcount effect = (F1 - F0) x C0
The two add up to the change in payroll for that position, with nothing left over. Where a position has no headcount on one side, the average cost does not exist - it is not zero - so the whole gap sits on the headcount effect rather than on an average the tool would have made up.
The columns you need
Five, and one of them deserves a sentence of its own:
- A period label and a scenario label.
- A position key - a code, not a name. Anything works as long as it means the same position on both sides.
- Full-time equivalent - decimal, so 0.5 is a half-time position.
- Payroll cost - salary and charges, exactly as your column has them. Nothing is added to it.
Department, cost centre, entity and grade are optional, and each one groups the reading.
What it never asks for
No name. No email. Not as a matter of restraint - the contract has no field for either, so there is nowhere to put one and nothing can be read by mistake.
If your file happens to contain such columns, they are named on screen as not read. Someone who drops a payroll file deserves to know what was taken from it and what was not; staying silent would be less honest, not safer.
The position keys themselves are protected at three different levels:
- On screen, the position detail is hidden by default. A payroll screen gets projected in meetings.
- In the workbook, keys are included only after you tick a box that starts unticked. A workbook travels as an attachment and outlives the meeting.
- In the review pack, never. There is no option, because there is no moment where you would knowingly choose it. The pack carries totals, effects and groups - a department identifies nobody.
What it looks like on a small extract
The sample extract has six positions across one quarter, with a budget and an actual. Budget 185,000 for 5.5 full-time equivalents, actual 164,100 for 5.3 - a gap of 20,900 under plan.
The four effects that make it up:
- Average cost +2,100 - pay rose slightly across the continuing positions.
- Headcount -6,000 - one team shrank from 2.0 to 1.5.
- Filled, not planned +28,000 - one position with payroll and no budget.
- Planned, not filled -45,000 - one budgeted position with nobody in it.
2,100 - 6,000 + 28,000 - 45,000 = -20,900. Exactly the gap. And the story is not "payroll is under control": it is one unfilled position carrying almost the whole variance.
Build yours
Read your own payroll
Drop a payroll extract with pseudonymised position keys and read the four effects. It all runs inside your browser: nothing is uploaded, which you can check in the Network panel while you work.
Open Headcount & PayrollWhat it will not do
It says nothing about any individual. It compares payroll and headcount against a plan, and that sentence stays next to the figures on screen, in the workbook and in the pack.
It infers no dates. "Filled, not planned" comes from presence in a scenario. It says nothing about when anyone joined or left.
It recommends nothing. A payroll file does not say whether someone is well paid, whether to recruit, or whether to stop.
Dates, bonuses, currency and detailed charges are outside it. The payroll cost is whatever your column contains.
Questions
What should a position key look like?
A code - POS-001, a job reference, anything stable. The tool recommends a pseudonymised key and does not force one: refusing a file would not make it more confidential, it would make it unusable.
Can a position be part-time on one side only?
Yes. Full-time equivalents are decimal, and a position that goes from 0.5 to 0.8 splits into both effects normally.
Does my file leave the browser?
No. The whole calculation runs in the page, on your machine. There is no upload, no account, and no server that could hold your figures. How to verify that in two minutes.