KibiPay
HomeBlog › Legacy Protocols

NACHA and the ACH File Format

7 min read Legacy Protocols
ACHNACHAUS payments
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:

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

See these rails in motion

KibiPay connects UK Faster Payments, Bacs, CHAPS, Mojaloop mobile money and Solana behind one API, with ISO 20022 messaging and real-time fraud & AML screening.

Open the live console How it works