Calculation rules: Jan 1, 2026
← Back to the Payroll Audit

How the payroll register audit works

Export one pay run from your payroll system with one row per employee, and drop it on 2 · Register & deductions. The page matches your column names to the fields below, runs fifteen checks and lists every flag with its severity.

The scan and its totals are free and need no account. Employee names, the detail on each flag, the five Pro checks and the Excel workbook need Pro; without it, a Pro check that finds something shows as a count. The file is read in your browser and never uploaded.

Start from the template

The blank template has the seventeen column headers the checks know. The example is the forty-person weekly register behind Run the sample register on the audit page, with six mistakes planted in it: 46 hours with no overtime, Social Security withheld at 5.2%, a negative check, one person paid twice, a $50.00 gap between gross and net, and pay that works out to $6.10 an hour. It comes back with 4 critical findings, 2 warnings and 34 clean employees.

The columns

Only Employee ID, Gross Pay and Net Pay are required. Every other column switches on the checks that need it. When a column is missing, its check is skipped and named on the Summary tab as “Check not run”; nothing is guessed. Column order doesn't matter.

The header row is the one that names every column, left to right, across the full width of the table. Anything above it, like a report title, the prompts the report was run with or a label over a group of columns, is kept as report info: it's listed under the file name and on a Report Info tab in the workbook. A file with its headers on row 1 reads the same way, with no report info.

Employee ID

What it's used for
Required. Duplicate payments and shared bank accounts are found by it.
Also accepted as
Emp ID, EE ID, File #, Associate ID, Employee Number, Worker ID

Employee Name

What it's used for
The no-name check. Without this column, or First Name and Last Name, every row is flagged as having no name.
Also accepted as
Name, Employee, Full Name, Associate Name, Worker Name

First Name, Last Name

What it's used for
Joined into the name when there's no name column, as in Workday's Payroll Register.
Also accepted as
Legal First Name, Given Name; Legal Last Name, Surname, Family Name

Department

What it's used for
The By Department tab.
Also accepted as
Dept, Cost Center, Division, Home Department

Location

What it's used for
The By Location tab.
Also accepted as
Work Location, Site, Branch

FLSA Status

What it's used for
Whether 40+ hours with no overtime is critical (non-exempt) or a review item (exempt or unknown).
Also accepted as
FLSA, Exempt Status, Exempt, OT Status

Pay Period End

What it's used for
Shown on flags and in the Data tab. The employment-dates check reads the period from it.
Also accepted as
Period, Period End Date, Period Ending, Week Ending

Pay Date

What it's used for
Shown on flags and in the Data tab. With no period, the employment-dates check uses it.
Also accepted as
Check Date, Payroll Date, Payment Date

Pay Rate

What it's used for
Can be added to the flags tab. Left out of the Data tab and the Excel file. A blank rate marks a salaried worker for the salary and no-pay checks.
Also accepted as
Rate, Hourly Rate, Base Rate

Annual Salary

What it's used for
The salary check, for salaried workers.
Also accepted as
Annual Rate, Annual Pay, Annual Base Salary, Annualized Salary

Hire Date

What it's used for
The employment-dates check: pay for a period that ended before it.
Also accepted as
Original Hire Date, Date of Hire, Employment Start Date

Termination Date

What it's used for
The employment-dates check: pay for a period that began after it.
Also accepted as
Term Date, Termination Effective Date, Separation Date

Regular Hours

What it's used for
The overtime and minimum-wage checks.
Also accepted as
Hours, Hours Worked, Reg Hours, Reg Hrs

Overtime Hours

What it's used for
The overtime and minimum-wage checks. A column named just Overtime is marked needs review when its first 50 values look like dollars (a $ sign, or anything over 200), since that's pay, not hours.
Also accepted as
OT Hours, Overtime, OT Hrs

Gross Pay

What it's used for
Required.
Also accepted as
Gross, Total Gross, Gross Earnings, Gross Wages, Total Earnings

Federal Income Tax

What it's used for
The gross-to-net check, which won't run without it.
Also accepted as
FIT, Fed Tax, Federal Withholding, Fed WH, FITW

Social Security Tax

What it's used for
The Social Security rate check.
Also accepted as
OASDI, Social Security, SS Tax, FICA SS

Medicare Tax

What it's used for
The Medicare rate check.
Also accepted as
Medicare, FICA Med, Med Tax

Other Deductions

What it's used for
The gross-to-net check. One column only: if deductions are split across several, add a total.
Also accepted as
Total Deductions, Deductions, 401k, Benefits, Garnishment

Net Pay

What it's used for
Required.
Also accepted as
Net, Check Amount, Take Home, Net Amount, Net Check

Payment Amount

What it's used for
Split deposits. A register with one row per payment repeats gross and net on each deposit row. Rows with the same ID, gross and net whose payment amounts add up to net are read as one payment.
Also accepted as
Deposit Amount, Paid Amount

Payment Method

What it's used for
The live-check list.
Also accepted as
Method, Pay Method, Payment Type, Deposit Type

Bank Account

What it's used for
The shared-account check. Shown masked as ••••1234, never in the Data tab or the Excel file.
Also accepted as
Account Number, Acct No, DDA, Direct Deposit Account

It also recognizes Company Code, Supervisor, Manager and HR or HRBP columns, which you can add to the flags with + Columns. Bonus and commission columns are recognized too but don't feed any check: gross should already include them. FLSA values containing “non”, or N, NE or Hourly, read as non-exempt; Exempt, E or Salaried read as exempt.

How your headers are matched

A header matches when it equals one of the names above once case, spaces and punctuation are dropped, so GROSS_PAY and Gross Pay both work. Close isn't enough: Gross Pay Amount won't match anything.

The first 50 rows are then checked against each match. A Gross Pay column full of names is marked needs review, and so is any unrecognized column holding dollar amounts. If two columns both look like Net Pay, both are marked. Pick a field for each one at the top of the results, or open Adjust column mapping to change any column. If Employee ID, Gross Pay or Net Pay can't be found, a banner says so; the checks that can still run, do.

Save as template keeps your mapping and report settings in this browser. The next file with the same set of column names gets them back automatically, even with the columns in a different order. Totals rows at the bottom of a register (Total, Grand Total, Report Total, or a row with no ID and no name) are dropped before anything is counted.

The fifteen checks

Negative or zero net pay

What it flags
Net pay below $0.00, or $0.00 when there was gross to pay. A row with no gross and no net is listed under No gross and no net pay instead.
Severity
Critical

Net pay exceeds gross

What it flags
Net pay more than a cent above gross.
Severity
Critical

Social Security withholding off-rate

What it flags
Withheld more than $1.00 away from 6.2% of gross, or more than 2% of that 6.2% amount if that's larger. Rows with no gross are skipped.
Severity
Critical

Medicare withholding off-rate

What it flags
The same test at 1.45%.
Severity
Critical

Over 40 hours with no overtime premium

What it flags
Regular plus overtime hours over 40 on a row with no overtime hours. Critical for non-exempt; a review item for exempt or unknown.
Severity
Critical or Review

Effective rate below minimum wage

What it flags
Gross divided by all hours comes to less than $7.25.
Severity
Critical

Gross-to-net reconciliation break

What it flags
Gross minus federal tax, Social Security, Medicare and other deductions lands more than $1.00 away from net. A deduction column you don't have counts as zero.
Severity
Warning

Possible duplicate payment

What it flags
The same employee ID with the same net pay, to the cent, more than once in the file, after split deposits are combined.
Severity
Warning

Payment with no employee name

What it flags
A row whose name is blank or the same as its ID.
Severity
Review

Bank account shared across employees

What it flags
One account number paid to more than one employee ID. A masked value like ****1234 is matched on its last digits alone, and the flag then says to confirm it's the same account.
Severity
Review

Salary doesn't match pay (Pro)

What it flags
A salaried worker (marked exempt, or no pay rate where others have one) whose gross is more than 10% off annual salary divided by the pay periods in a year. Workers paid $0 are skipped.
Severity
Review

Net pay leaves no room for FICA (Pro)

What it flags
Net pay above 92.35% of gross, so Social Security and Medicare (7.65%) can't both have come out. Runs only when the file doesn't have both tax columns; with them, the rate checks above say more.
Severity
Review

Paid by live check (Pro)

What it flags
A payment whose method says check (Check, Manual, Paper, Live). Rows paid $0 are skipped.
Severity
Review

No gross and no net pay (Pro)

What it flags
A worker listed with $0.00 gross and $0.00 net: on the register, not paid. A warning for a salaried worker, who's paid every period; a review item for anyone else, or anyone hired after the period or terminated before it.
Severity
Warning or Review

Paid outside employment dates (Pro)

What it flags
Gross pay for a period that ended before the hire date or began after the termination date. The flag names the dates. Final pay, a PTO payout or severance after termination can be right.
Severity
Warning

Both tax checks compare against gross pay, at a flat 6.2% and 1.45%. A row can be right and still sit off that rate, and the flag text says which way it is off and names what can explain it. Pre-tax medical, dental or vision under a Section 125 plan lowers Social Security and Medicare wages, so someone with a large pre-tax premium shows as under-withheld when nothing is wrong. A 401(k) deferral doesn't lower either one, so it never explains a gap. Pay past the Social Security wage base ($184,500 for 2026, $176,100 for 2025) owes no Social Security, and a worker who doesn't pay FICA, like a nonresident F-1 or J-1 student, owes neither. Wages past $200,000 in a year owe an extra 0.9% Medicare from the pay period that crosses it, which shows as over-withheld. The tool doesn't read year-to-date wages or a pre-tax breakdown, so it can't tell you which of these it was. The tax year setting changes only the wage base named in the flag text; the rates are the same both years.

The salary check needs the pay frequency. It's read from a Pay Group or Period prompt above the headers (Weekly 52, Biweekly 26, Semi-monthly 24, Monthly 12), or from the date range in a Pay Period column: 7 days is weekly, 14 biweekly, 13 to 16 days semi-monthly and 28 to 31 monthly. The Summary says which it used. With neither, or with any other length, such as a quarter, the check is listed as not run.

The employment-dates check needs the period's dates: a date range in a Period prompt or Pay Period column, or a period end date plus the pay frequency. A range can be written 09/13/2026 - 09/19/2026, with an en dash, “to” or “through” between the dates, or as 2026-09-13 - 2026-09-19. With only a pay date, it checks for pay before hire and not pay after termination, since final pay routinely lands after the last day.

Nonresident F-1 and J-1 students and some public employees don't pay FICA, and a worker past the Social Security wage base owes only Medicare, so the no-room-for-FICA list can hold people who are right. It's there for registers with no tax columns, where it's the only sign FICA was missed.

The overtime check reads each row as one week. On a biweekly register, 80 regular hours with no overtime will flag. Run weekly registers, or read those flags as a list to confirm.

Report type changes what's shown, never what's checked: Full audit dashboard, Exceptions report (critical and warnings), Controller summary (critical only, with the breakdown) and Department cost report (totals, no flags). The counts on the Summary tab always cover every finding.

Steps

  1. In your payroll system, run the pay register (also called the payroll journal or gross-to-net report) for one pay date, with one row per employee per check. Export it to Excel or CSV. On Workday, the delivered Payroll Register drops in as it comes, but carries no taxes or hours, so only some checks run.
  2. Rename headers that don't match the names above, or paste your columns under the template's. You can also fix them on the page after you drop the file.
  3. Drop it on 2 · Register & deductions on the Payroll Audit page.
  4. Confirm any column marked needs review, then check that Employees, Total gross and Total net match your register's own totals before you read the flags.

What you get

The results open as a workbook preview. Summary has eight counts and totals, plus a note for every check that didn't run. Audit Flags lists findings by severity; the page shows the first 250. By Department or By Location totals headcount, gross, net and hours. Breakdown is a pivot you build from your own columns, on the page only. Data shows the cleaned rows, the first 100 on screen.

With Pro, Download Excel report saves a file named like payroll-audit-full-audit-2026.xlsx with the Summary, Audit Flags, breakdown and Data tabs. It has every finding, not just the first 250, and its totals are live formulas.

What it doesn't check

  • Daily overtime (California and other daily-overtime states) or overtime across more than one row.
  • State and local minimum wages. The floor is the federal $7.25.
  • Tip credits, or who is exempt. The minimum-wage check takes gross as the register shows it, so a tipped worker whose gross is only the cash wage (the federal floor for it is $2.13 an hour, with tips making up the rest) flags, and so does a salaried exempt worker whose gross over the hours listed works out under $7.25.
  • Federal income tax amounts, or any state or local tax.
  • Changes from last period. That's the close checks, which also tie the register to your GL.
  • Deduction and tax exports with one row per deduction. Those have their own checks.