Payroll file check
Check payroll files for missing columns, duplicate employee IDs, invalid hours, pay-code values, and row count issues.
Your file is read in your browser. It is never uploaded.
Every default rule on this page
These run as soon as you drop a file in. Nothing is uploaded - the whole check happens in this browser tab. Edit or remove any of them in the rule editor above before you run it.
| Column | What it checks | What fails | Reported as |
|---|---|---|---|
| Employee ID | must have a value in every row | the cell is empty, or the column is missing entirely | Error |
| Employee ID | every value appears once, ignoring capitalisation | the same value appears in two or more rows | Error |
| Hours | a number between 0 and 80 | the cell is text, blank, or a number outside that range | Error |
| Pay Date | a date between 2000-01-01 and 2099-12-31 | the cell is not a date, or falls outside that window | Error |
| Pay Code | one of Regular, Overtime, Bonus or Commission, ignoring capitalisation | any other value, including a blank cell | Warning |
| the whole sheet | at least 1 data row | the sheet has fewer than that | Warning |
An error is a row you almost certainly need to fix before sending the file on. A warning is a row worth looking at, most often a value that is legitimate in your process but unusual in this one - change the rule to match how your team works rather than editing the data to satisfy it.
Missing or renamed employee ID column
Payroll exports often use headers like 'Emp ID' or 'EmployeeNo' instead of 'Employee ID'. Without a stable identifier, duplicate and row-level checks cannot associate errors with the correct employee. The column must be present and named consistently before the file is checked.
Hours stored as text
Values like '8.5' or '40' sometimes appear with trailing spaces, apostrophes, or mixed text formatting. Numeric range rules cannot compare text values, so those rows are flagged even when the underlying hours are valid. All hours cells need to be stored as numbers.
Duplicate employee ID values
The same employee ID may appear more than once when a payroll export includes adjustments or combines multiple files. Duplicate rows make totals unreliable and hide missing records. Only one detail row per employee should remain for the pay period.
Pay code variation across rows
One export may use 'Regular', 'OT', and 'Bonus', while another uses 'REG', 'Overtime', and 'Bon'. Inconsistent pay codes break downstream mapping and produce avoidable warnings. The file shape should apply one stable set of allowed pay codes across all rows.
How to fix
- Rename any employee ID header variation to exactly 'Employee ID' before upload.
- Clear text formatting from the Hours column, remove spaces and apostrophes, and confirm all values are numeric.
- Remove duplicate Employee ID rows or keep only the row intended for the current pay period.
- Map every pay code to the same allowed set, such as Regular, Overtime, Bonus, and Commission.
- Delete totals rows, subtotals, and blank rows so only detail rows remain in the data area.
FAQ
What columns should a payroll file contain?
The default rules check Employee ID, Hours, Pay Date and Pay Code. Keep those header names consistent and they run without mapping. Amount and pay-rate columns are left unchecked - payroll systems name them differently, so add a numeric range rule for yours.
Why does the check flag duplicate employee IDs?
A duplicate means the same ID appears in more than one data row. This can happen with adjusted exports or merged files. Remove duplicates or keep only the correct row for the current pay period to avoid inflated totals and misleading results.
Can hours be stored as text?
Hours should be numeric for range checks to work. Text values, spaces, or apostrophes are treated as invalid unless the file shape intentionally uses a text code. Convert the column to a number format before running the check.
What pay code values are allowed by default?
The default rules allow a stable set such as Regular, Overtime, Bonus, and Commission. If your payroll export uses different labels, change the allowed values to match your file. Consistent pay codes help downstream mapping work correctly.
Should totals rows be included?
No. Summary rows, totals rows, and blank rows are treated as data rows by row-level checks. They create false failures and make row counts misleading. Keep only detail employee rows in the sheet before checking.