NACHA file validator
A free ACH file validator. Drop a NACHA file to find every error, line by line, with a fix for each.
Drop your ACH file here
This site does not upload your file.
Free. No signup. This site does not upload your file.
How to use the NACHA file validator
- Drop your file on the box, choose it, or paste its text. Files usually end in .ach or .txt.
- Read the result. You see “Valid” or the number of errors and warnings, with the totals the file contains.
- Fix each issue. Every issue shows the line, the field, what is wrong and how to fix it. The bad characters are marked in the line.
- Download a corrected copy if the page offers one. It fixes the totals, counts and padding that can be worked out again. Read the list of changes first.
- Check again after you fix the file. You can download the report as text or CSV to share with a colleague.
What the validator checks
| Check | What it looks for |
|---|---|
| Record length | Every record is exactly 94 characters |
| Record order | File header, then batches (header, entries with their addenda, control), then file control, then padding |
| File header | Routing number of the destination, creation date, file ID modifier, record size 094, blocking factor 10, format code 1 |
| Batch header | Service class code, company name and ID, a valid SEC code, entry description, effective date, originating bank |
| Entries | Transaction code, routing number checksum, amount, addenda indicator, trace number in ascending order |
| Addenda | Type code, sequence numbers, return codes and change codes |
| Batch control | Entry count, entry hash, total debits, total credits, matching company ID and batch number |
| File control | Batch count, block count, entry count, entry hash and totals |
| Blocking | The number of records is a multiple of 10, padded with lines of 9s |
How the entry hash works
The entry hash catches a lost or changed entry. Take the first 8 digits of the routing number on each entry and add them up. If the sum is longer than 10 digits, keep the last 10. The batch control holds the sum for the batch. The file control holds the sum of the batch hashes.
Download a corrected copy
Some values can be worked out again from the payments in the file. An issue with such a value carries the mark “Can be fixed for you”. The page lists every change (line, field, old value, new value), checks the corrected copy again, and then lets you download it.
| The corrected copy can change | It never changes |
|---|---|
| Batch control: entry and addenda count, entry hash, total debits, total credits | Names |
| File control: batch count, block count, entry and addenda count, entry hash, totals | Routing numbers and account numbers |
| Padding lines of 9s at the end of the file | Amounts and dates |
| Line endings, when the file mixes two kinds | IDs and SEC codes |
| Spaces cut from the end of the file control record, or from a file header that lost only its last 8 positions | Trace numbers. They are not renumbered |
The totals are recalculated from the payments in the file. Check that every payment is one you mean to send. A wrong total can mean a payment was lost or changed, and that is what the totals are there to catch.
Three more things to know:
- A short entry, addenda, batch header or batch control line is not padded. Its last positions hold a trace number or a batch number, so the line stays an error.
- A return file or a Notification of Change file from a bank is never changed. Neither is a file with lines in the wrong order, with a batch control line missing, or with a character that is not allowed, such as an accented letter or a tab.
- The corrected copy is checked against the public NACHA format only. Test with your bank before you send real payments.
Common mistakes and how to fix them
- Trailing spaces removed. Text editors and email programs often strip spaces from the end of lines. Every record must still be 94 characters.
- Totals not updated after an edit. If you delete or change an entry by hand, the entry count, hash and totals in the batch control and the file control must change too. The corrected copy works them out again.
- Missing padding lines. Add lines of 94 nines until the number of lines is a multiple of 10. The corrected copy adds them for you.
- A routing number with a wrong digit. The validator names the entry. Check it with the routing number checker.
- Service class code that does not match. 220 is credits only and 225 is debits only. Use 200 for a mix.
Questions and answers
What does this ACH file validator check?
It checks six things. Every line is 94 characters. The lines are in the right order. Required fields are filled, and number fields hold only numbers. Every routing number passes its checksum. The SEC code and service class code are valid and match the payments. The entry counts, entry hash, debit and credit totals, batch count and block count all add up.
Is my ACH file uploaded?
No. The file is read by your browser on your own device. This site does not send it to our server or to anyone else, which matters because ACH files hold names and bank account numbers. Check it yourself. Wait until the page has fully loaded, then turn off Wi-Fi or switch on airplane mode. The tool still works, because it does not send your file anywhere.
If the validator says "Valid", will my bank accept the file?
It means the file follows the public NACHA format. Many banks add their own requirements, such as a certain company ID, a balancing entry or upper-case text. Send a test file to your bank before you send real payments.
What is the difference between an error and a warning?
An error breaks the NACHA format, and a bank or ACH Operator is likely to reject the file or the entry. A warning is allowed by the format but worth checking, for example missing padding lines or an effective date in the past.
Which kinds of ACH files can it read?
Files with PPD, CCD, WEB, TEL and CTX entries, return files, Notification of Change files and international (IAT) batches. It accepts Windows and Unix line endings and files with no line breaks at all.
Can the validator fix my ACH file?
It can fix what can be worked out again from the payments in the file. That is the counts, the entry hash and the totals in the control records, missing padding lines, mixed line endings, and spaces cut from the end of the file control record. You see every change before you download the corrected copy. It never changes a name, a routing number, an account number, an amount, a date or a trace number. Check that every payment is one you mean to send, because a wrong total can mean a payment was lost or changed.
Sources
- ACH file details (record layouts), Nacha
- ACH file overview (record sequence, padding, service class codes), Nacha
- NACHA File Specifications, First Citizens Bank
- NACHA File Layout Guide, Regions Bank
- moov-io/ach (open-source library and test files, used as a cross-check), Moov
General information, not legal or financial advice. Rules change and banks set their own requirements. Check with your bank before you act. ACH Forms is not affiliated with Nacha.