ACH File Overview
On this page
An ACH file is a fixed-width, ASCII file, with each line exactly 94 characters in length. Each line of characters is known as a “record” and is comprised of various “fields” that are at specific positions within that line. In a properly formatted file, records must follow a specific order.
ACH files contain one or more batches. Batches consist of one or more transactions. Certain data elements are captured at different levels within the ACH format (file, batch or transaction). As such, certain transactions will be batched together – where the Standard Entry Class (SEC) Code, effective entry date, company ID, and Batch descriptor are identical, based on similar information required at the element level. See detailed specifications below.
Below is the basic sequence of records. Note that for every “header” record that starts a section, there is a matching “control” record that ends that section (like braces or XML tags).
Each record type above is identified by a specific single digit known as a “type code.” One can always determine the record by the first number of the line. The above example would look like this in a file:
101… File Header Record
520… Batch Header Record
627… Entry Detail Record
637… Entry Detail Record
7XX… Addenda Record
. . . . . .
820… Batch Control Record
520… Batch Header Record
622… Entry Detail Record
7XX… Addenda Record
622… Entry Detail Record
. . . . . .
820… Batch Control Record
. . . . . .
900… File Control Record
999… File Padding
An ACH file always begins with a single "File Header Record," which will always begin with “101” followed by the routing number of the originating (sending) bank. It also includes a date time stamp, as well as the name of the originating bank and company name.
The ACH File format is designed to allow various levels of ACH processing (the difference between you sending a file to your bank, and the bank sending a file to the ACH Network). Your bank (or ODFI) may have specific formatting requirements and data elements to process your ACH files. These differences often are generated in the File Header record, which helps the ODFI recognize which client sent the particular file. ODFIs will then process the ACH files to create larger ACH files to be sent to the ACH Network that contain many originators’ batches.
A file can contain multiple batches. Each batch starts with a single "Batch Header Record," which begins with "5," and describes the type (debits and/or credits) and purpose of all transaction entries within the batch. This record identifies your company as the originator, as well as provides a description (e.g., “gas bill” or “salary”) for all of the transactions in the batch.
This record also specifies the date the transactions are supposed to post in the Receiver’s account. Any variation of any of the information in a batch header would call for a separate batch (like a different description of “bonus” instead of “salary,” different effective date, or company ID or name). All payments within a single batch represent transactions for a single company or originator.
Beginning with a “6,” each "Entry Detail Record" contains information about the Receiver, including their account name and account number, as well as the transaction details, such as the amount and transaction type (debit or credit). There is also a unique trace number used to identify the Entry. For more complicated entries, there may be additional "Addenda Records," which each begin with a “7,” to help describe the transaction.
Each batch is closed by the "Batch Control Record," known as the “8” record and sums up the count and dollar amount of all entries in the batch. It also includes a hash total (i.e., checksum) to ensure validity of the batch.
Each file always ends with the "File Control Record," or the “9” record. This record contains various counts (number of batches, number of entries, etc.), sums (debit total and credit total), and another hash total to ensure that the file was generated correctly.
ACH files have a blocking factor of 10. ACH files are padded with lines of 9s, so that the number of lines in the file are a multiple of 10. If the line count is already divisible by 10, no extra padding is needed.
Data Specifications
There are various specifications that must be followed for records:
- An alphanumeric field must be left-justified and post-padded with spaces.
- A numeric field must be unsigned, right-justified and pre-padded with zeros.
- Certain fields, like those that denote codes, must have uppercase characters only.
- Trace numbers, which are assigned by the ODFI, must be ascending (although not necessarily consecutive) within a batch.
- An unbalanced file is a file that does not carry the offset (settlement) account within the file. The offset (settlement) account is managed by the ODFI.
- A balanced file is a file that does carry the offset (settlement) account within the file.
The effective date is the date on which the Originator wants the transactions to occur. Each Originator must confirm a valid and correct effective date for the ACH file. The company must consider whether the file is being sent traditionally or via Same Day ACH.
ACH transactions must have effective dates that align with the valid ACH processing dates. ACH is not processed on weekends, or on specific federal holidays. An ODFI will have specific deadlines and processing dates around processing of transactions. An ODFI will also have specific contractual requirements for when a transaction is able to be processed based on the effective date, and what happens to a batch or file that has an invalid effective date. (e.g. process with the next possible effective date, even if that results in Same Day ACH processing).
It is recommended that pre-notifications are sent at least three business days prior to initiating a live authorized Entry. Also, it is recommended to initiate a pre-notification when any changes are made to an account number or financial institution.
Note: It is a Nacha Rules violation to debit a Receiver prior to the authorization date.
Same Day ACH is an option to move funds more quickly than traditional ACH. This faster payments mechanism allows ACH credit and/or debit transactions to be originated and received on the same banking day. Each Same Day ACH Entry:
- Must be less than or equal to $1,000,000.
- Must not contain the SEC Code of IAT.
- Must be received by the originating bank’s Same Day ACH processing deadline.
The transaction code identifies a transaction as a debit or credit – and indicates the type of account to which the transaction is intended (i.e. checking or savings). The transaction code is a mandatory numeric field for the Entry Detail Record (‘6’) and is in positions 02-03.
Checking (DDA) Accounts | Savings Accounts |
---|---|
22 – Credit | 32 – Credit |
23 – Credit Prenote | 33 – Credit Prenote |
27 – Debit | 37 – Debit |
28 – Debit Prenote | 38 – Debit Prenote |
The Service Class Code identifies whether the batch contains both debit and credit transactions, only credit transactions, or only debit transactions. The Service Class Code is a mandatory numeric field for the Batch Header Record (‘5’) and the Batch Control Record (‘8’). The codes are in positions 02-04 in both records, and the code values within a single batch must be the same.
- 200 – Mixed Debits and Credits
- 220 – Credits only
- 225 – Debits only