A spreadsheet can produce a valid NACHA file. Whether it should depends on three things: how many entries you send, how often the recipients change, and what a rejected or returned file costs you. This post covers what the manual route involves, the errors it produces, the cost of those errors, and a rule for deciding.
Nacha's return-rate thresholds below were read from nacha.org on 2026-10-29.
What "manual" actually means
Building a NACHA file by hand is three jobs, whichever tool you use.
- Keep the data. Company name, company ID, immediate origin, your bank's routing number, and for every recipient a name, routing number, account number, account type and amount.
- Build the records. One 94-character line per record, with every field padded to its width and in its position. The structure is covered in How to Create a NACHA File.
- Check the math. Entry hash, entry and addenda counts, debit and credit totals, block count, and a routing check digit for every entry.
A spreadsheet handles the first job well and the second adequately. The third is where it fails, because the checks are arithmetic over every row and nothing tells you when a formula was overwritten by a typed value.
Keying payments into your bank's portal avoids the file entirely, but it is manual in a different way: every payment is typed every time, and the recipient list lives inside one bank.
The four kinds of error a spreadsheet produces
Formatting. A line that is 93 or 95 characters, a field one column off, trailing spaces trimmed by the editor, a byte-order mark or Windows line endings the bank does not expect. The bank rejects the whole file.
Arithmetic. An entry hash, total or count in a batch control record that no longer matches the entries, usually because a row was added or deleted after the totals were computed. The bank rejects the whole file.
Reference. A routing number that fails its check digit, an effective date on a weekend or Federal Reserve holiday, a debit in a credits-only batch, or an SEC code that does not fit the entry. Some of these reject the file; some go through and come back as returns.
Data. A stale account number for a recipient who changed banks, a trace number copied from last month's row, an amount pasted into the wrong row. These produce a valid file that pays the wrong amount to the wrong account. The file is accepted and the error surfaces days later as a return or a complaint.
The first three classes are what Common ACH File Errors and How to Fix Them walks through one by one, and the 12-point validation checklist catches all of them. The fourth class is invisible to any validator, because the file is correct. Only the process that produced it can prevent it.
What a bad file costs
A rejected file costs a day. Most banks process ACH files at fixed cutoff times, so a rejection discovered after the cutoff moves every payment in the file to the next banking day, and someone has to find the fault, rebuild the file and upload it again.
A returned entry costs more. Your bank typically charges a per-item fee for each return, which it sets, and the payment has to be corrected and sent again. If the return is a notification of change (a NOC), Nacha's rules require you to update the recipient's details within six banking days or before the next entry, whichever comes first.
Return rates are monitored. Nacha tracks returns by originator through its network operators and ODFIs. Three figures matter:
| Return category | Return reason codes | Nacha level |
|---|---|---|
| Unauthorized | R05, R07, R10, R11, R29 | 0.5%, a Rules threshold |
| Administrative | R02, R03, R04 (closed, missing or invalid account) | 3.0%, triggers an inquiry through your bank |
| Overall | all return reasons | 15.0%, triggers an inquiry through your bank |
Administrative returns are the ones a data-entry process produces, because they come from stale or mistyped account details. A small originator sending 40 entries a month reaches the 3.0% level with two bad account numbers. Exceeding a level does not fine you directly, but your bank will ask questions and may tighten or withdraw your origination approval.
Manual versus software, side by side
| Spreadsheet and editor | Bank portal | ACH file software | |
|---|---|---|---|
| Recipient data | Rows in a workbook | Keyed per payment, inside one bank | Stored once, reused in every file |
| Record building | Formulas you maintain | Done by the bank | Done by the software |
| Hash, totals, counts, block count | Formulas you maintain | Not your problem | Computed from the entries |
| Routing check digits | A formula, if you wrote one | Checked by the bank at upload | Checked as you enter them |
| Effective date, SEC and code agreement | Your knowledge of the rules | Checked by the bank at upload | Checked before the file exists |
| Validation before sending | A separate step you remember | At upload, after the cutoff if you are late | The file cannot be generated until it passes |
| Delivery | Upload through the portal | Already there | Download and upload, or send by SFTP |
| Returns and NOCs | Read the bank's report, update the workbook | Read the bank's report, retype | Browse the bank's return files and read each code in plain language |
| Record of who did what | None | The bank's log | A log of who created and sent each file |
ACH Drafter is the right-hand column. Company and bank details are entered once, recipients are added by hand or imported from a CSV, and each file is checked against the NACHA rules before it can be downloaded. Sending by SFTP and browsing return files are on the higher plans; current plan details are on the pricing page. FiSTWorks never holds or moves money, and your bank makes the final decision on every file and every payment.
When manual is fine
A spreadsheet is a reasonable choice when all of the following are true:
- You send a handful of entries, to the same recipients, on the same schedule.
- One person owns the workbook and understands the hash, totals and block-count rules.
- Every file goes through a validator before it is uploaded, every time.
- A one-day delay on a rejected file is an inconvenience, not a missed payroll.
When any of those stop being true, usually because the recipient list grows or changes, the cost of the manual route is no longer the hour it takes to build the file. It is the returns, the delays and the question from your bank.
Whichever route you take, run the file through the free ACH Validator before you upload it. It needs no account, and it catches the first three error classes in seconds.
Sources
- Nacha, ACH Network Risk and Enforcement Topics, read 2026-10-29.