Gearyforgemore tools
sheetcheck

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.

Rule sets are saved in this browser only.

required
unique
numericRange
dateRange
allowedValues
rowCount

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.

ColumnWhat it checksWhat failsReported as
Employee IDmust have a value in every rowthe cell is empty, or the column is missing entirelyError
Employee IDevery value appears once, ignoring capitalisationthe same value appears in two or more rowsError
Hoursa number between 0 and 80the cell is text, blank, or a number outside that rangeError
Pay Datea date between 2000-01-01 and 2099-12-31the cell is not a date, or falls outside that windowError
Pay Codeone of Regular, Overtime, Bonus or Commission, ignoring capitalisationany other value, including a blank cellWarning
the whole sheetat least 1 data rowthe sheet has fewer than thatWarning

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

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.

Related checks