PacsLintPayment file checker

ACH file checker: what a Nacha file needs, and the rules that changed in 2026

A Nacha ACH file is a stack of 94-character records whose counts, hashes and totals must add up. One short line, a wrong routing digit or a missing padding line is enough for a bank to reject the whole file. PacsLint checks the file in your browser, explains each problem in plain English and fixes the mechanical ones.

Check an ACH file now Free · runs in your browser · nothing is uploaded

Rules from Nacha’s ACH Guide for Developers and the rules published on nacha.org · checked 21 October 2026

  • Since 20 March 2026: PPD credits paying wages, salaries, bonuses or commissions must have “PAYROLL” as the first 7 characters of the Company Entry Description. Consumer WEB debits for online purchases of goods must say “PURCHASE”.
  • From 1 January 2027: the Nacha Rules document which single-byte characters the two ACH Operators accept. A character outside that set can get a batch or file held or rejected, or be replaced. Multi-byte characters such as é are not recommended.
  • Unchanged: the record layout. Every record is 94 characters, files come in blocks of 10 records, and the control records must match the entries exactly.

What PacsLint checks

AreaChecks
LayoutEvery record 94 characters; record types 1, 5, 6, 7, 8, 9 in the right order; one file header and one file control; padding lines of 9s only at the end; files with no line breaks are read too
File headerPriority code 01, record size 094, blocking factor 10, format code 1; destination routing number and its check digit; creation date and time; File ID Modifier A–Z or 0–9
Batch headerService class 200, 220 or 225; company name and ID; SEC code; Company Entry Description, including PAYROLL and PURCHASE; effective date (weekends, dates in the past); ascending batch numbers
EntriesTransaction codes and whether they fit the service class; routing-number check digit (with the right 9th digit when it is wrong); account number filled and left-justified; amount in cents; prenotes and zero-dollar entries at zero; receiver name; trace numbers unique, ascending and starting with your bank’s routing number
AddendaAddenda indicator matches the addenda records; type 05; one addenda for PPD, CCD and WEB, none for TEL, the declared number for CTX; sequence numbers and the link to the entry’s trace number
ControlsBatch and file entry/addenda counts, entry hash (rightmost 10 digits), debit and credit totals, batch count and block count, and the batch control fields that repeat the header
CharactersAnything outside single-byte ASCII, named with its code point and field (“É” (U+00C9) in Receiving Name), and tabs or control characters

PPD, CCD, WEB, TEL and CTX batches are checked in full. Other SEC codes, such as IAT, are checked for layout and control totals only.

The errors that get files rejected most

  1. A line shorter than 94 characters. Editors and copy-paste remove the spaces at the end of a record, usually the file header or file control. PacsLint fills the blank end back in.
  2. No padding. The last block must be filled with lines of 94 nines up to a multiple of 10 lines. Some banks accept unpadded files; others reject them. PacsLint adds the lines and checks the block count.
  3. Entry hash or totals that don’t match. The batch control adds up the first 8 digits of every receiving routing number and every debit and credit. A mismatch usually means an entry was added, removed or changed after the totals were written. PacsLint shows what the entries add up to but doesn’t rewrite the totals: fix them where the file is made.
  4. A wrong routing number. The 9th digit is a check digit. PacsLint names the digit that would be right, but never changes a routing number: confirm it with the receiver.
  5. Payroll without PAYROLL. “SALARY”, “WAGES” or “OCT PAYROLL” in the description of PPD wage credits no longer meets the rule. PacsLint offers PAYROLL as a fix to check before use, because pensions, expense refunds and vendor payments are excluded.

What the fixes never change

Amounts, account numbers, routing numbers, trace numbers, dates, and the control totals, counts and entry hashes stay exactly as they are. Nothing is ticked in advance: you choose each fix, see the value before and after, and download a corrected copy. Your original file is not changed.

Check an ACH file in your browser

Drop a Nacha file on PacsLint. It checks the layout, routing numbers, trace numbers, entry hash, totals and the 2026 rules, then lets you fix the mechanical problems one by one. Your file never leaves your browser.

Check a file

Sources