. The validator flags any SSN value that does not match the XXX-XX-XXXX format.\n\n**Privacy note:** If the file is being shared with an external reviewer before import, mask SSN values before validation. See [How to Mask SSNs and Bank Routing Numbers in Payroll CSVs](/blog/mask-ssn-bank-routing-payroll-csv).\n\n---\n\n### Check 7 — Earning Codes Match Company Configuration\n\n**Manual only**\n\n[icon: alert-triangle]\n\nEarning codes are employer-specific, case-sensitive strings registered in your company's ADP (or Workday, Gusto) configuration. No browser-local validator can know which codes your company has registered — this comparison requires you to pull the current earning code list from your platform's admin panel and compare it manually against the codes in your file.\n\n**How to validate manually:** Export the earning code list from your ADP admin panel (Company Setup → Earning Codes). Get a distinct list of all earning code values in your import file. Compare the two lists. Flag any code in the file that is not in the admin list.\n\n**How to partially automate with Data Validator:** If you know your company's full earning code list, you can add an `enum` rule to the EarningCode column with the approved values. The validator then flags any earning code that is not in the list you provided. You must supply and maintain the list — the validator cannot fetch it from your ADP configuration.\n\n**Example enum configuration:**\n- Column: EarningCode\n- Rule type: Enum\n- Allowed values: REG, OT, VAC, SIC, HOLIDAY (replace with your actual codes)\n- Severity: Error\n\n---\n\n### Check 8 — Column Count Matches Import Template\n\n**Manual only**\n\nThe number of columns in your file must match what the import platform expects. For positionally-mapped imports (ADP standard imports), a column count mismatch silently shifts all downstream columns into wrong fields — the import succeeds with no error, but data lands in the wrong places.\n\n**How to validate manually:** Open your import template (the ADP import layout, Workday EIB template, or Gusto Smart CSV template). Count the expected columns. Count the columns in your file. They must match exactly. If your export was recently modified to add or remove columns, verify the count before every import.\n\nFor Workday EIB specifically: the EIB template has a rigid column schema. Adding a column without adding all required trailing columns breaks row-length validation. See [Workday EIB CSV Errors: Row Length, Date and Validation Fixes](/blog/workday-eib-csv-errors).\n\n**Intra-file column count consistency vs. template comparison:** [SplitForge Format Checker](/tools/format-checker) validates whether every row in your file has the same field count — it catches intra-file inconsistency where some rows have more or fewer columns than others (for example, a trailing comma on some rows that creates an extra empty field). This is a different check from comparing your file's column count against the platform import template, which requires manual comparison against the template schema.\n\n---\n\n### Check 9 — File Encoding Is UTF-8\n\n**Handled by Format Checker (separate tool)**\n\nGusto requires UTF-8 encoding. ADP and most other platforms accept UTF-8 and some also accept Windows-1252 (ANSI). A file with special characters (accented names, em dashes) exported from Excel as ANSI encoding may fail encoding validation on upload.\n\n**How to validate:** Use [SplitForge Format Checker](/tools/format-checker) to detect file encoding before import. Format Checker also identifies the delimiter character and validates column count consistency across rows — catching intra-file column count mismatches at the structural level.\n\n---\n\n### Check 10 — No Formula Residue in Any Cell\n\n**Partially automated**\n\nFormula residue — `=SUM(C2:C440)`, `#REF!`, `#VALUE!`, `#DIV/0!` — appears in CSV exports when Excel formulas are not collapsed to values before export. These values fail numeric type validation in cells that expect numbers.\n\n**How to validate:** Data Validator's `dataType: decimal` rule catches formula residue in numeric columns — `=SUM(...)` fails as not a decimal, `#REF!` fails as not a decimal. For text columns where formula residue is also possible but where the expected value is also a string, a `regex` rule can catch Excel error strings specifically.\n\n**How to prevent:** In Excel, before saving as CSV, select all cells, copy, and paste special as \"Values Only.\" This collapses all formulas to their current computed values.\n\n---\n\n## Checklist Summary\n\n| Check | Type | Tool |\n|---|---|---|\n| Required columns present | Automated (with setup) | Data Validator — requiredColumns |\n| No blank required fields | Automated | Data Validator — required rule |\n| Date values valid | Automated | Data Validator — dataType: date |\n| Employee IDs unique | Automated | Data Validator — uniqueness rule |\n| Salary/rate numeric, ≥0 | Automated | Data Validator — dataType: decimal + range |\n| SSN format consistent | Automated (with regex setup) | Data Validator — regex rule |\n| Earning codes match company config | Manual (or enum with your list) | ADP admin panel + enum rule |\n| Column count matches template | Manual | Count against import template |\n| File encoding is UTF-8 | Separate tool | Format Checker |\n| No formula residue | Partially automated | Data Validator — decimal/regex rules |\n\n---\n\n## Using the HR Employee Data Preset\n\n[icon: arrow-right]\n\nData Validator includes an **HR Employee Data** preset that pre-configures rules for common employee data columns: EmployeeID (required + unique), Email (required + email format + unique), FirstName and LastName (required + length), HireDate (date type), and Salary (decimal + non-negative range).\n\nLoad the preset from the presets panel, then add company-specific customizations — earning code enum rules, SSN regex, department length bounds — on top of the preset foundation. The preset does not know your company's specific ADP earning codes or Workday EIB schema — those additions are yours to configure.\n\n---\n\n## Privacy Note: Validating Without Upload\n\n[icon: shield]\n\nPayroll CSV files contain SSNs, routing numbers, salary data, and medical leave codes. Running these through an online validation tool transmits payroll data to a third-party server.\n\nData Validator runs entirely in your browser. The file is read locally through the browser's File API and processed in a Web Worker thread. No payroll data is transmitted. Verify this with DevTools Network tab: zero POST requests appear during file loading or validation. For the full privacy analysis, see [Never Upload a Payroll CSV to an Online Tool](/blog/never-upload-payroll-csv-online-tools). For the privacy-first processing framework, see [Privacy-First Data Processing Guide](/blog/privacy-first-data-processing-guide).\n\n---\n\n## FAQ\n\n### Does Data Validator check all columns automatically?\n\nNo. Data Validator validates columns against rules you configure in the schema builder. It does not auto-inspect the file and determine which rules apply — it applies the rules you define. The HR Employee Data preset gives you a starting point for common employee columns, but you must review and extend it for your specific file and platform requirements.\n\n### Can I save my validation schema for repeated use?\n\nYes. After building a schema with your column rules, save it as a preset in the tool. On the next payroll cycle, load the preset and run validation without re-configuring the rules. If your earning code list or required columns change, update the preset to reflect the new configuration.\n\n### What happens if I validate a file with the wrong schema?\n\nValidation will report results against the rules you configured, not against rules that would apply to your specific platform. If your schema is missing a rule for a column that your platform validates, the validator will not catch errors in that column. This is why the earning code check and column count check are marked manual — the tool can only validate what you tell it to look for.\n\n### How many rows can Data Validator handle?\n\nData Validator validates standard payroll files — hundreds to tens of thousands of rows — in under a second. Very large payroll exports (enterprise-scale, millions of rows) validate in seconds to minutes depending on rule complexity and hardware.\n\n---\n\n## Validate Payroll CSVs Before They Reach the Platform\n\n✅ Automated checks for required fields, date types, uniqueness, and numeric values — configured once, reused each cycle\n✅ HR Employee Data preset for common employee column rules — extend with your earning codes and platform requirements\n✅ No file upload — SSNs and salary data stay on your machine throughout validation\n\n**[Validate Payroll CSVs with Data Validator](/tools/data-validator)**\n"};
Navigated to blog › payroll-csv-validation-checklist
Back to Blog
csv-guides

Payroll CSV Validation Checklist Before HRIS Import

May 23, 2026
11
By SplitForge Team

Quick Answer

A payroll CSV is import-ready when it passes seven verifiable checks: required columns present, no blank required fields, date values in a consistent recognized format, employee IDs unique, salary/rate values numeric and non-negative, SSN format consistent if present, and no formula residue in any cell. SplitForge Data Validator automates the first six against rules you configure. Earning code validation against your company's approved list, and column count comparison against your specific import template, require manual review — no tool can know your employer's ADP configuration or the exact schema of your Workday EIB template without you supplying that information.


Not legal or compliance advice. Payroll data handling requirements vary by jurisdiction and platform version. Confirm import requirements against your HRIS documentation.


TL;DR: Payroll CSV import failures fall into two categories: failures the validator catches before submission (blank required fields, wrong date type, duplicate employee IDs, non-numeric salary values) and failures only visible once the platform rejects the file (earning code not in company configuration, column count mismatch against the import template, platform-specific encoding requirement). The checklist below separates these. Data Validator automates checks in the first category against rules you configure in the schema builder. Checks in the second category are marked "manual" — they require you to compare the file against your platform's configuration or template before import.


The Reality: What a Pre-Import Validation Failure Looks Like

A payroll administrator submits a 440-row ADP Workforce Now import file on Friday morning. The import returns an error set:

Row 1: Bad employee number
Row 187: Invalid date value: 20260032
Row 302: Duplicate employee number: EMP-10447
Row 311: Unrecognized earning code: VAC

Row 1 is the header row — ADP processed it as an employee record and the column label "EmployeeID" failed format validation. (See ADP CSV Import Errors for the full diagnosis.)

Row 187 has an impossible date: month 00, day 32. This came from a formula that produced a placeholder when a hire date was missing — 00/00/0000 — exported as a string.

Row 302 has a duplicate employee number — the same employee appeared in both the US and Canadian export files before concatenation.

Row 311 has an earning code "VAC" where the employer's ADP configuration expects "VACATION." (See ADP CSV Import Errors for the earning code mismatch diagnosis.)

Three of these four failures are catchable before submission. One — the earning code mismatch — requires knowing your company's ADP configuration. The checklist below covers all four root causes with a clear automated/manual label on each check.


The Checklist

Use this checklist before every payroll CSV import submission. Checks marked Automated can be configured in Data Validator's schema builder. Checks marked Manual require comparison against your platform's configuration or template — no browser-local tool can perform these automatically.


Check 1 — Required Columns Present

Automated (with manual setup)

The file must contain every column the import platform expects. Missing a required column causes either an immediate rejection or, in positionally-mapped imports like ADP, silently shifts all subsequent columns into wrong fields.

How to validate: In Data Validator, add each required column name to the global requiredColumns list in the schema. The validator reports any missing columns before row-level validation begins.

Reality artifact:

Before: EmployeeID,FirstName,LastName,HireDate,PayGrade
After:  EmployeeID,FirstName,LastName,SSN,HireDate,EarningCode,PayGrade

The file before had no SSN or EarningCode column. The import template expected both. ADP mapped columns by position — without those columns, every field from HireDate onward landed in the wrong slot.


Check 2 — No Blank Values in Required Fields

Automated

Required fields — employee ID, first name, last name, hiring date — must not be blank in any row. A blank in a required field either rejects the row or, in update imports, overwrites an existing field value with a blank.

How to validate: In Data Validator's schema builder, add a required rule to each required column. Set severity to error and blocking to true. The validator flags every row where a required field is blank.

Example schema rule for EmployeeID:

  • Column: EmployeeID
  • Rule type: Required
  • Severity: Error

Check 3 — Date Values in a Recognized Format

Automated

All date values — hire date, termination date, pay period dates — must be in the format the import platform expects. Placeholder dates like 00/00/0000 or formula errors exported as date strings fail platform date validation.

How to validate: Add a dataType: date rule to each date column. The validator checks whether each cell value can be parsed as a valid date. A value like 20260032 (month 00, day 32) fails the date type check.

Note: The validator checks whether values parse as dates — it does not enforce a specific format like MM/DD/YYYY vs. YYYY-MM-DD. A file with mixed formats (some rows MM/DD/YYYY, others YYYY-MM-DD in the same column) may pass date type validation but fail the platform import if the platform expects one specific format. For mixed-format detection and normalization, see How to Prepare Employee CSV Files for HRIS Import.


Check 4 — Employee IDs Are Unique

Automated

Every employee must appear once in the import file. Duplicate employee IDs cause platform-dependent behavior: some platforms reject the second occurrence with an error, others silently process the duplicate as an update to an already-imported record.

How to validate: Add a uniqueness rule to the EmployeeID column with severity error. The validator identifies every employee ID that appears in more than one row and reports the row numbers of the duplicates.

Reality artifact:

Row 302: EMP-10447,Chen,David,2021-03-15,Operations,P2,REG
Row 303: EMP-10447,Chen,David,2021-03-15,Operations,P2,REG

The second occurrence came from a second regional export file concatenated without a deduplication pass. The uniqueness check surfaces this before import.


Check 5 — Salary and Pay Rate Values Are Numeric and Non-Negative

Automated

Salary and pay rate fields must be numeric decimal values. Text values, formula residue (=SUM(), #REF!, #VALUE!), or negative values in pay rate fields cause import rejection or silent data corruption.

How to validate: Add a dataType: decimal rule and a range: min 0 rule to salary/pay rate columns. The decimal type check catches formula residue and text values. The range check catches negative values.

Reality artifact:

EMP-10392,Martinez,Rosa,04/15/2018,Finance,P3,=C12*1.1

The salary cell contains an Excel formula that was not collapsed to a value before export. The formula string =C12*1.1 fails the decimal type check. The fix: in the source spreadsheet, copy the salary column, paste as values only, then re-export as CSV.


Check 6 — SSN Format Consistent (If SSN Column Is Present)

Automated (requires regex rule configuration)

If the file contains an SSN column, each value must conform to the expected format. ADP Workforce Now validates SSN format on import — a value without hyphens (547823901 instead of 547-82-3901) fails format validation.

How to validate: Add a regex rule to the SSN column with pattern ^\d{3}-\d{2}-\d{4}$. The validator flags any SSN value that does not match the XXX-XX-XXXX format.

Privacy note: If the file is being shared with an external reviewer before import, mask SSN values before validation. See How to Mask SSNs and Bank Routing Numbers in Payroll CSVs.


Check 7 — Earning Codes Match Company Configuration

Manual only

Earning codes are employer-specific, case-sensitive strings registered in your company's ADP (or Workday, Gusto) configuration. No browser-local validator can know which codes your company has registered — this comparison requires you to pull the current earning code list from your platform's admin panel and compare it manually against the codes in your file.

How to validate manually: Export the earning code list from your ADP admin panel (Company Setup → Earning Codes). Get a distinct list of all earning code values in your import file. Compare the two lists. Flag any code in the file that is not in the admin list.

How to partially automate with Data Validator: If you know your company's full earning code list, you can add an enum rule to the EarningCode column with the approved values. The validator then flags any earning code that is not in the list you provided. You must supply and maintain the list — the validator cannot fetch it from your ADP configuration.

Example enum configuration:

  • Column: EarningCode
  • Rule type: Enum
  • Allowed values: REG, OT, VAC, SIC, HOLIDAY (replace with your actual codes)
  • Severity: Error

Check 8 — Column Count Matches Import Template

Manual only

The number of columns in your file must match what the import platform expects. For positionally-mapped imports (ADP standard imports), a column count mismatch silently shifts all downstream columns into wrong fields — the import succeeds with no error, but data lands in the wrong places.

How to validate manually: Open your import template (the ADP import layout, Workday EIB template, or Gusto Smart CSV template). Count the expected columns. Count the columns in your file. They must match exactly. If your export was recently modified to add or remove columns, verify the count before every import.

For Workday EIB specifically: the EIB template has a rigid column schema. Adding a column without adding all required trailing columns breaks row-length validation. See Workday EIB CSV Errors: Row Length, Date and Validation Fixes.

Intra-file column count consistency vs. template comparison: SplitForge Format Checker validates whether every row in your file has the same field count — it catches intra-file inconsistency where some rows have more or fewer columns than others (for example, a trailing comma on some rows that creates an extra empty field). This is a different check from comparing your file's column count against the platform import template, which requires manual comparison against the template schema.


Check 9 — File Encoding Is UTF-8

Handled by Format Checker (separate tool)

Gusto requires UTF-8 encoding. ADP and most other platforms accept UTF-8 and some also accept Windows-1252 (ANSI). A file with special characters (accented names, em dashes) exported from Excel as ANSI encoding may fail encoding validation on upload.

How to validate: Use SplitForge Format Checker to detect file encoding before import. Format Checker also identifies the delimiter character and validates column count consistency across rows — catching intra-file column count mismatches at the structural level.


Check 10 — No Formula Residue in Any Cell

Partially automated

Formula residue — =SUM(C2:C440), #REF!, #VALUE!, #DIV/0! — appears in CSV exports when Excel formulas are not collapsed to values before export. These values fail numeric type validation in cells that expect numbers.

How to validate: Data Validator's dataType: decimal rule catches formula residue in numeric columns — =SUM(...) fails as not a decimal, #REF! fails as not a decimal. For text columns where formula residue is also possible but where the expected value is also a string, a regex rule can catch Excel error strings specifically.

How to prevent: In Excel, before saving as CSV, select all cells, copy, and paste special as "Values Only." This collapses all formulas to their current computed values.


Checklist Summary

CheckTypeTool
Required columns presentAutomated (with setup)Data Validator — requiredColumns
No blank required fieldsAutomatedData Validator — required rule
Date values validAutomatedData Validator — dataType: date
Employee IDs uniqueAutomatedData Validator — uniqueness rule
Salary/rate numeric, ≥0AutomatedData Validator — dataType: decimal + range
SSN format consistentAutomated (with regex setup)Data Validator — regex rule
Earning codes match company configManual (or enum with your list)ADP admin panel + enum rule
Column count matches templateManualCount against import template
File encoding is UTF-8Separate toolFormat Checker
No formula residuePartially automatedData Validator — decimal/regex rules

Using the HR Employee Data Preset

Data Validator includes an HR Employee Data preset that pre-configures rules for common employee data columns: EmployeeID (required + unique), Email (required + email format + unique), FirstName and LastName (required + length), HireDate (date type), and Salary (decimal + non-negative range).

Load the preset from the presets panel, then add company-specific customizations — earning code enum rules, SSN regex, department length bounds — on top of the preset foundation. The preset does not know your company's specific ADP earning codes or Workday EIB schema — those additions are yours to configure.


Privacy Note: Validating Without Upload

Payroll CSV files contain SSNs, routing numbers, salary data, and medical leave codes. Running these through an online validation tool transmits payroll data to a third-party server.

Data Validator runs entirely in your browser. The file is read locally through the browser's File API and processed in a Web Worker thread. No payroll data is transmitted. Verify this with DevTools Network tab: zero POST requests appear during file loading or validation. For the full privacy analysis, see Never Upload a Payroll CSV to an Online Tool. For the privacy-first processing framework, see Privacy-First Data Processing Guide.


FAQ

No. Data Validator validates columns against rules you configure in the schema builder. It does not auto-inspect the file and determine which rules apply — it applies the rules you define. The HR Employee Data preset gives you a starting point for common employee columns, but you must review and extend it for your specific file and platform requirements.

Yes. After building a schema with your column rules, save it as a preset in the tool. On the next payroll cycle, load the preset and run validation without re-configuring the rules. If your earning code list or required columns change, update the preset to reflect the new configuration.

Validation will report results against the rules you configured, not against rules that would apply to your specific platform. If your schema is missing a rule for a column that your platform validates, the validator will not catch errors in that column. This is why the earning code check and column count check are marked manual — the tool can only validate what you tell it to look for.

Data Validator validates standard payroll files — hundreds to tens of thousands of rows — in under a second. Very large payroll exports (enterprise-scale, millions of rows) validate in seconds to minutes depending on rule complexity and hardware.


Validate Payroll CSVs Before They Reach the Platform

Automated checks for required fields, date types, uniqueness, and numeric values — configured once, reused each cycle
HR Employee Data preset for common employee column rules — extend with your earning codes and platform requirements
No file upload — SSNs and salary data stay on your machine throughout validation

Continue Reading

More guides to help you work smarter with your data

csv-guides

Do You Need a Database for a Large CSV File? (2026 Answer)

The internet's answer to every big CSV is 'import it into a database.' Sometimes that's right. Usually it's a weekend of setup to answer one question. Here's the honest decision.

Read More
csv-guides

How to Open a Large CSV File — Even 10 GB, No Database (2026)

Excel dies at 1,048,576 rows, text editors choke, and 'just use a database' is a weekend project. Here's every real way to open a huge CSV — receipts included.

Read More
excel-guides

Excel File Too Large to Open? Fix Every Memory Error (2026)

Excel freezes, throws 'not enough memory,' or crashes outright — on a file that's only 40 MB. Here's why file size lies about memory, and the fix per error.

Read More