The timesheets that never arrived
A reconciliation checks the timesheets you have. It cannot check the ones that never came. A worker who submits nothing is not a discrepancy but an absence, invisible to any check that starts from submitted rows, and unpaid until someone notices.
◆ What a reconciliation cannot seeit checks the rows it has, not the rows that never came.
The reported-to-paid reconciliation is precise about the timesheets it has: every submitted hour traced to what payroll paid. But it starts from submitted rows, and a worker who submits nothing has no row. They are not a discrepancy the reconciliation can flag; they are an absence it cannot see, and their hours go unpaid until someone notices at the desk.
Every control that begins with the data present shares this blind spot. Completeness is the one question that must start from the population that should be there, not the rows that are.
◆ The completeness check, workedexpected, submitted, and the ones missing.
| Pay period, hourly population | Workers |
|---|---|
| Expected to submit | 120 |
| Submitted a timesheet | 114 |
| Missing: no timesheet at all | 6 |
Expected equals submitted plus missing, checked by the battery. The six who submitted nothing are the finding, and the reconciliation processed the other 114 without ever noticing they were short a population. Each of the six is named, with a status, so the follow-up is a call, not a census.
| The six, by status | Workers |
|---|---|
| Never opened a timesheet | 4 |
| Opened, never submitted | 2 |
| Missing total | 6 |
Sample values are illustrative, never client data.
◆ The owned answerstart from who should be there, run before the deadline.
Derive the expected population from the schedule fact, left join it to the time entries, and the workers with no entry fall out as the missing list. Run it daily through the approval window, the same rhythm as the pre-deadline control on the reconciliation, and the missing timesheet becomes a nudge on the day rather than a short paycheck after it.
-- expected to submit, with no timesheet for the period: the missing list
SELECT s.worker_key
FROM (SELECT DISTINCT worker_key FROM fct_schedule_day
WHERE pay_period = '2026-05-B' AND is_hourly) s
LEFT JOIN fct_time_entry t
ON t.worker_key = s.worker_key AND t.pay_period = '2026-05-B'
WHERE t.worker_key IS NULL
ORDER BY 1
With this control beside the reconciliation, the loop closes: expected equals submitted plus missing, and submitted reconciles to paid. Every hourly worker is either paid correctly or on a named list, and no one falls silently into the gap between.
- completeness
- Whether every expected row is present, checked from the population, not the data.
- expected population
- The workers who should submit a timesheet, from the schedule.
- submitted
- A timesheet entered and put forward for approval.
- missing timesheet
- No entry at all for a worker expected to submit.
- hourly
- A non-exempt worker who records time, versus a salaried exempt one.
- left join
- A join keeping every expected worker whether or not an entry matches.
- deadline window
- The days before the payroll cutoff when the control runs.
- control
- A recurring check that surfaces a gap before it becomes a problem.