Analytics Catalog/Workday/Payroll/Run variance
Explore the catalogModulesPayrollLabor cost reportRetro restatementGross to net
Workday · Payroll · Editorial

Why this month's payroll is not last month's

April closed at 4,551,330.00. May closed at 4,663,142.08. Somebody will ask why before Friday. The bridge below names the whole 111,812.08 in five rows, and the owned model rebuilds it every month without a spreadsheet.

RuleExplain a payroll move as a bridge: start at last month as closed, add named drivers, land exactly on this month. The residual is zero or the bridge is wrong.
Neveraccept timing or seasonality as a driver. Those are labels for money nobody has traced yet.
April 4,551,330.00 as closed Bridge +111,812.08 five named drivers May 4,663,142.08 fully explained
Last month, plus five drivers with names, equals this month. No residual, no seasonality row.
Two right numbers and an argumentthe question is not which is wrong.

Both months closed clean, both tie to the ledger, and the delivered reports show each one perfectly. What they do not show is the road between them. That gap gets filled by hand each month: someone exports both runs, matches workers in a spreadsheet, and produces a story that cannot be reproduced next month.

This page is about movement between two closed periods. When a closed period itself changes after the fact, that is a different mechanism with its own page, the retro restatement. The bridge here compares each month as it stands.

The bridge, workedApril to May, five drivers, residual zero.
DriverAmount
April 2026, as closed4,551,330.00
Five new starts, first May pay41,238.00
Merit increases effective 1 May48,090.00
Overtime above the April level14,760.22
Benefit enrollments added in May9,120.00
April leavers, final pay behind them-1,396.14
May 2026, as closed4,663,142.08

Add the five drivers to April and you land on May to the cent. The 9,841.93 that May reports as unassigned is not a driver: it is the same cost wearing no department, a classification problem, not new money. Sample values are illustrative, never client data.

Where each driver is provedevery row traces to a page that already exists.
DriverProved by
Five new startsThe recruiting funnel's May fills, see the time to fill report
Merit increasesThe compensation cycle, effective 1 May, from the compensation module
OvertimeHours in the overtime report, priced through payroll
Benefit enrollmentsEmployer cost in the benefit cost report
LeaversTerminations in the turnover report

A bridge is only as good as its receipts. Each driver above is not an estimate: it is the summed pay lines of a named group of workers, and each group is visible in another module of this catalog, built on the same shared tables.

The owned answerthe bridge as a query, not a spreadsheet.

The build compares two periods of the payroll fact worker by worker and component by component, then classifies every non-zero difference: a worker present only in May is a start, present only in April a leaver, same worker with a higher base a merit change. The bridge assembles itself from those classifications each month.

-- May vs April, per worker and component: the raw bridge
SELECT worker_id, component,
  SUM(CASE WHEN period = '2026-05' THEN amount ELSE 0 END)
  - SUM(CASE WHEN period = '2026-04' THEN amount ELSE 0 END) AS delta
FROM fct_payroll_line
WHERE period IN ('2026-04','2026-05')
GROUP BY 1, 2
HAVING delta <> 0

Every delta gets a classification and every classification sums into a driver row. When the drivers stop summing to the move, the bridge fails loudly instead of hiding the residual in the biggest row.

Use case
Problem
Month-over-month payroll moves are explained by hand: two exports, a matching spreadsheet, and a story that cannot be reproduced or checked the following month.
What we build
A worker-and-component comparison of consecutive periods on the payroll fact, with every difference classified into a named driver and the bridge required to sum exactly.
What you get
A bridge that lands on the new month to the cent, drivers with receipts in their own modules, and an answer ready before anyone asks.
Explaining the payroll move by spreadsheet every month?
We build the bridge that assembles itself and refuses to leave a residual.
Talk to us
Terms on this page
bridge
An explanation that walks from one period's total to the next in named steps.
driver
One named cause of movement: starts, merit, overtime, enrollments, leavers.
residual
The part of a move the drivers fail to explain; the target is zero.
as closed
The period total as it stood at close, before any later restatement.
run
One execution of payroll for a period.
merit increase
A base pay raise from the compensation cycle.
final pay
A leaver's last, usually partial, payment.
unassigned
Cost whose department mapping is missing; a classification, not a driver.