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.
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.
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
Employee Name
First Name, Last Name
Department
Location
FLSA Status
Pay Period End
Pay Date
Pay Rate
Annual Salary
Hire Date
Termination Date
Regular Hours
Overtime Hours
Gross Pay
Federal Income Tax
Social Security Tax
Medicare Tax
Other Deductions
Net Pay
Payment Amount
Payment Method
Bank Account
| Column | What it's used for | Also accepted as |
|---|---|---|
| Employee ID | Required. Duplicate payments and shared bank accounts are found by it. | Emp ID, EE ID, File #, Associate ID, Employee Number, Worker ID |
| Employee Name | The no-name check. Without this column, or First Name and Last Name, every row is flagged as having no name. | Name, Employee, Full Name, Associate Name, Worker Name |
| First Name, Last Name | Joined into the name when there's no name column, as in Workday's Payroll Register. | Legal First Name, Given Name; Legal Last Name, Surname, Family Name |
| Department | The By Department tab. | Dept, Cost Center, Division, Home Department |
| Location | The By Location tab. | Work Location, Site, Branch |
| FLSA Status | Whether 40+ hours with no overtime is critical (non-exempt) or a review item (exempt or unknown). | FLSA, Exempt Status, Exempt, OT Status |
| Pay Period End | Shown on flags and in the Data tab. The employment-dates check reads the period from it. | Period, Period End Date, Period Ending, Week Ending |
| Pay Date | Shown on flags and in the Data tab. With no period, the employment-dates check uses it. | Check Date, Payroll Date, Payment Date |
| Pay Rate | 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. | Rate, Hourly Rate, Base Rate |
| Annual Salary | The salary check, for salaried workers. | Annual Rate, Annual Pay, Annual Base Salary, Annualized Salary |
| Hire Date | The employment-dates check: pay for a period that ended before it. | Original Hire Date, Date of Hire, Employment Start Date |
| Termination Date | The employment-dates check: pay for a period that began after it. | Term Date, Termination Effective Date, Separation Date |
| Regular Hours | The overtime and minimum-wage checks. | Hours, Hours Worked, Reg Hours, Reg Hrs |
| Overtime Hours | 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. | OT Hours, Overtime, OT Hrs |
| Gross Pay | Required. | Gross, Total Gross, Gross Earnings, Gross Wages, Total Earnings |
| Federal Income Tax | The gross-to-net check, which won't run without it. | FIT, Fed Tax, Federal Withholding, Fed WH, FITW |
| Social Security Tax | The Social Security rate check. | OASDI, Social Security, SS Tax, FICA SS |
| Medicare Tax | The Medicare rate check. | Medicare, FICA Med, Med Tax |
| Other Deductions | The gross-to-net check. One column only: if deductions are split across several, add a total. | Total Deductions, Deductions, 401k, Benefits, Garnishment |
| Net Pay | Required. | Net, Check Amount, Take Home, Net Amount, Net Check |
| Payment Amount | 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. | Deposit Amount, Paid Amount |
| Payment Method | The live-check list. | Method, Pay Method, Payment Type, Deposit Type |
| Bank Account | The shared-account check. Shown masked as ••••1234, never in the Data tab or the Excel file. | 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.
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.
Negative or zero net pay
Net pay exceeds gross
Social Security withholding off-rate
Medicare withholding off-rate
Over 40 hours with no overtime premium
Effective rate below minimum wage
Gross-to-net reconciliation break
Possible duplicate payment
Payment with no employee name
Bank account shared across employees
Salary doesn't match pay (Pro)
Net pay leaves no room for FICA (Pro)
Paid by live check (Pro)
No gross and no net pay (Pro)
Paid outside employment dates (Pro)
| Check | What it flags | Severity |
|---|---|---|
| Negative or zero net pay | 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. | Critical |
| Net pay exceeds gross | Net pay more than a cent above gross. | Critical |
| Social Security withholding off-rate | 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. | Critical |
| Medicare withholding off-rate | The same test at 1.45%. | Critical |
| Over 40 hours with no overtime premium | Regular plus overtime hours over 40 on a row with no overtime hours. Critical for non-exempt; a review item for exempt or unknown. | Critical or Review |
| Effective rate below minimum wage | Gross divided by all hours comes to less than $7.25. | Critical |
| Gross-to-net reconciliation break | 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. | Warning |
| Possible duplicate payment | The same employee ID with the same net pay, to the cent, more than once in the file, after split deposits are combined. | Warning |
| Payment with no employee name | A row whose name is blank or the same as its ID. | Review |
| Bank account shared across employees | 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. | Review |
| Salary doesn't match pay (Pro) | 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. | Review |
| Net pay leaves no room for FICA (Pro) | 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. | Review |
| Paid by live check (Pro) | A payment whose method says check (Check, Manual, Paper, Live). Rows paid $0 are skipped. | Review |
| No gross and no net pay (Pro) | 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. | Warning or Review |
| Paid outside employment dates (Pro) | 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. | 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.
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.