Payments outside the normal run
The regular run is the easy part. Corrections are where the person gets paid right and the books go wrong. Four kinds, what each does to the accounting, and the check that pairs them.
◆ What goes wrongthe plain version.
Most pay moves in the regular run. The rest moves in corrections: someone was paid wrong, paid late, paid twice, or paid outside the system and the record has to catch up. Payroll offers four kinds of correction, each touching the books differently, and picking the wrong one is a classic way to duplicate or drop cost. The mistake is quiet: the person ends up paid correctly while the accounting behind the payment is wrong.
◆ The four kindswhat each is for, and what it does to the books.
| Kind | When it is used | What it does to the books |
|---|---|---|
| Manual payment | The person was already paid outside the system, a handwritten check in a crisis, say. The record has to catch up. | Creates the accounting entries without moving money. The danger is using it when money did not already move, which records cost for a payment nobody made. |
| On demand | An urgent real payment that cannot wait for the next run: a missed new hire, a final paycheck due by law. | Moves money and creates entries, a full run for one person. Safe but easy to double: if the missed pay is also left in the next regular run, the person is paid twice. |
| Reversal | A payment that should not have happened. | Backs out the original entries in full. The cost disappears from the books, correctly. A reversal without a reissue leaves the person unpaid; the books are right and the person is not. |
| Reissue | Replacing a reversed or lost payment. | A new payment referencing the old. Done right, the pair nets to one payment. Done as a fresh on demand instead, nothing links them and the books carry both. |
Every failure in this table is a pairing failure: a payment and its correction that should reference each other and do not. The source system knows each event. What it does not readily show is the pair.
◆ What we buildcorrections as first-class rows, and the orphan check.
Every fact row carries its run type, and correction rows carry a reference to the payment they correct. That one column turns the pairing failures above into a query.
-- corrections with no partner: reversals and reissues pointing at nothing
SELECT f.run_type,
f.worker_key,
f.amount,
f.corrects_payment_id
FROM fct_payroll_result_line f
JOIN dim_date d ON f.accounting_date_key = d.date_key
LEFT JOIN fct_payroll_result_line p
ON f.corrects_payment_id = p.payment_id
WHERE d.fiscal_period = '2026-05'
AND f.run_type IN ('reversal','reissue')
AND p.payment_id IS NULL
ORDER BY f.amount DESC
Empty result, every correction has its partner. Any rows, and each is a person, an amount, and a correction pointing at a payment that is not there: the exact list to resolve before close, instead of a difference to hunt for after it.
- off cycle
- A payment made outside the regular payroll run.
- manual payment
- Recording a payment already made outside the system. Entries without money movement.
- on demand
- An urgent real payment run for one person. Money and entries both.
- reversal
- Backing out a payment that should not have happened.
- reissue
- A replacement payment referencing the one it replaces.
- run type
- The column on every fact row saying which kind of run produced it.
- orphan
- A correction whose referenced payment cannot be found.
- close
- The monthly process of finalising the books.