NACHA and the ACH File Format

The US Automated Clearing House (ACH) network moves payroll, bill payments, and business transfers by the trillions of dollars a year. It runs on a file format governed by NACHA, the organisation that writes the ACH rules. That format is old, rigid, and fixed-width — and understanding it is a rite of passage for anyone building US payments.
A file of 94-character records
An ACH file is a plain text file composed of records, each exactly 94 characters long. There is no XML, no JSON, no delimiters — every field sits at a fixed column position, and the meaning of a record is determined by its first character, the record type code. Get a field one column off and the whole file can be rejected. This fixed-width rigidity is a hallmark of legacy financial formats designed in an era of tape and mainframes.
The nested structure
ACH files are hierarchical, built from a strict nesting of record types:
- File Header (type 1). One per file, identifying the originating and receiving institutions and file creation date and time.
- Batch Header (type 5). Opens a batch of related entries, carrying the company name, a Standard Entry Class (SEC) code, the company entry description, and the effective entry date.
- Entry Detail (type 6). The individual transactions — each debit or credit to a specific routing and account number, with an amount and an identifier.
- Addenda (type 7). Optional extra information attached to an entry, such as remittance data.
- Batch Control (type 8). Closes a batch with totals and hash checks.
- File Control (type 9). Closes the file with grand totals. Files are padded with filler records so the total record count is a multiple of ten (a blocking factor of 10).
The control records carry entry hash totals and dollar totals so the receiver can verify nothing was corrupted or dropped.
SEC codes define the transaction type
The Standard Entry Class code in the batch header is one of the most important fields, because it tells everyone what kind of authorisation underlies the entries. PPD is for consumer payments like payroll and recurring bills. CCD is for corporate-to-corporate payments. WEB covers consumer payments authorised over the internet, and TEL covers telephone-authorised payments. The SEC code affects the applicable NACHA rules, the consumer's rights to dispute, and the risk controls that apply, so choosing the correct one is a compliance matter, not just a formatting detail.
Timing: ACH is a batch rail
ACH is not instant. Files are submitted to an ACH operator — the Federal Reserve's FedACH or The Clearing House's EPN — which sorts and delivers entries to receiving banks in scheduled windows. Standard ACH settles in one to two business days. Same Day ACH exists with multiple daily processing windows and a per-transaction dollar cap set by NACHA, but even that is windowed rather than real-time. The effective entry date in the batch header tells the system when the originator intends funds to post.
Returns: how ACH reverses
When an entry cannot be honoured, the receiving bank sends it back with a return code. R01 means insufficient funds; R02 means the account is closed; R03 means no account or unable to locate; R10 historically signalled an unauthorised debit. Each return code has an associated timeframe within which the return must be made — administrative returns are generally quick, while consumer unauthorised-debit claims allow a longer window. Building an ACH integration means handling these returns systematically, because they are how the network communicates failure and disputes.
Why it still matters
Despite its age, ACH is not going away; it is cheap, ubiquitous, and deeply embedded in US business. But its constraints shape products: batch timing means you cannot promise instant settlement, fixed-width fields limit how much remittance data you can carry, and return handling is asynchronous. Newer US instant rails like RTP and FedNow address the speed gap, but they do not replace the enormous installed base of ACH.
Key takeaways
- An ACH file is fixed-width, built from 94-character records identified by a leading record type code.
- Records nest as file header, batch header, entry detail, optional addenda, batch control, and file control, padded to a blocking factor of 10.
- The Standard Entry Class code (PPD, CCD, WEB, TEL) defines the transaction type, authorisation, and applicable rules.
- ACH is a batch rail settling in one to two business days; Same Day ACH adds windowed processing with a NACHA dollar cap.
- Returns use codes like R01, R02, R03, and R10 with defined timeframes, and handling them is essential to any integration.