runbookify
← All plans
Payroll & Timekeeping / Payroll Prep & Runs

Payroll Register Diff: Catch a Fat-Fingered Rate Before You Finalize

Diff your payroll provider's draft register against your own approved hours, rates, and planned changes line by line — so a wrong rate or a dropped deduction is caught and resolved before you finalize the run.

IntermediateA weekendBuilds onNext.jsSupabaseResend
What you'll build

A web tool where you import the provider's draft register and your own source-of-truth file, the tool matches by employee and diffs every field (hours, rate, gross, deductions, net), and you resolve each mismatch — accept the provider's value or flag a correction — before the run gets a clean 'matched' confirmation and an exception report.

Gated download

Enter your email — the plan downloads instantly and a copy lands in your inbox.

By submitting your email you'll also receive the weekly runbookify newsletter. You can unsubscribe at any time.

Before you start

  • A Supabase account (free)
  • A Vercel account (free)
  • A Resend account (free)
  • Your provider's draft register CSV
  • Your source-of-truth CSV (approved hours, rates, deductions)
  • Claude Code or any AI coding agent

The problem this kills

You key the pay-period changes into your provider's portal — the new hire's rate, the raise that started mid-cycle, the garnishment that just landed, the overtime someone approved on Friday. Then the provider hands back a draft register, and you have a narrow window to confirm it's right before you click finalize. So you do the thing everyone does: print it, put it next to your own spreadsheet, and eyeball it row by row, hoping you catch the one number that's off.

That's how a transposed rate sails through. How a deduction you entered silently drops because a field didn't save. How someone's overtime hours got rounded the wrong way. Once you finalize, the money moves — and unwinding an overpayment or a missed garnishment is painful, awkward, and sometimes a compliance problem. You don't need a bigger screen or a steadier finger. You need the two files compared for you, every difference surfaced, and a record that you checked. And you do not need to be a developer to build that.

What you'll build

A simple internal web tool. You import two CSVs: the provider's draft register and your own source-of-truth file (approved hours, rates, planned deductions — whatever you intended this run to be). The tool matches the two sides by employee ID, then diffs every field that matters — hours, rate, gross, each deduction, and net — and shows you a clean mismatch list: exactly where the provider's output disagrees with what you intended, and by how much. It tolerates the tiny rounding differences you don't care about (you set the threshold), and it specifically calls out the dangerous cases: an employee on the register who isn't in your file, or in your file but missing from the register. You work the list, resolving each mismatch — accept the provider's value, or flag it as a correction to send back — and only when every diff is resolved does the tool give you a "matched / clean" confirmation plus an exception report you can keep as proof.

What's inside the Implementation Plan

The downloadable plan is a step-by-step file you paste into an AI coding agent. It opens by interviewing you about your business — which provider you run (ADP, Paychex, Gusto, Rippling, a bureau), exactly how your draft register and your source-of-truth file are laid out and named, what your match key looks like, how big your typical and peak runs are, which fields you actually need to reconcile, your rounding tolerance, and the messy edge cases that bite you — and then it tailors the data model, the match logic, and every later step to your answers. This is not a generic template; the agent reflects a short spec back to you and waits for your thumbs-up before it builds anything. From there it walks the agent through importing both files, matching by employee, diffing field by field with your rounding tolerance, surfacing one-sided employees, the resolve-each-mismatch workflow, the clean-run confirmation, and the exception report — each step with a ready-to-copy prompt. The whole tool is CSV-in, CSV-out, so there's nothing to integrate: you can build and use it today.

The governance it includes (this is the point)

This sits right before money moves, so it ships with the controls a payroll team needs: login so only your team can use it, row-level security so you only ever see your own organization's runs, a complete audit trail of who imported, who resolved which mismatch (and how), and who confirmed the run clean — and when. There's a hard human-in-the-loop gate: the tool never declares a run reconciled on its own; a person must resolve every difference, and the "matched / clean" stamp only appears once nothing is outstanding. Duplicate guards keyed on the match key and the run mean you can't accidentally import the same register twice or double-count an employee.

Who it's for

Payroll admins, payroll managers, and HR-ops people who key changes into a provider portal and need real proof the provider's output matches what they intended — not a hopeful eyeball pass under deadline. If you can describe how you check a register today, you can build this.

You've got this — start with the plan, paste the first prompt, answer the interview, and you'll see your first mismatch list light up the same afternoon.

Gated download

Enter your email — the plan downloads instantly and a copy lands in your inbox.

By submitting your email you'll also receive the weekly runbookify newsletter. You can unsubscribe at any time.