10 Common NACHA File Rejections (and How to Prevent Them)
“Rejected” can describe two different failures. A generator or file validator can stop a malformed NACHA file before it reaches the bank. An ACH return can happen later, after a structurally valid file is submitted. Treating both as the same problem wastes time: first fix the errors you control in the source data, then investigate bank-side returns separately.
Ten errors the product catches before submission
- No transactions. The generator refuses an empty input set. Upload or map at least one payment row before generating.
- Invalid receiving routing number. A routing number must be present, exactly nine digits after spaces and hyphens are removed, and pass the ABA check digit. See ABA Routing Number Validation for the exact calculation.
- Invalid ODFI routing number. The file-level originating-bank routing number in Company Settings uses the same ABA validation. Correct Company Settings, not an individual payment row.
- Missing receiving account number. An empty mapped account number produces a row-specific
NACHA Data Error. Map the account column separately from routing number. - Receiving account number longer than 17 characters. The row schema rejects a value beyond the Entry Detail account field width. Do not trim it manually; confirm the bank-provided account identifier and mapping.
- Missing receiver name. The generator requires a receiver name from
creditorNameorindividualName. A blank name cannot produce a valid Entry Detail record. - Invalid, zero, or negative amount. The generator parses the mapped amount and rejects values that are not positive. Keep the source amount as a numeric value, not a label or blank cell.
- Amount too large for the NACHA amount field. A single entry cannot exceed
$99,999,999.99, the largest value that fits in the generator's ten-digit cents field. The generator fails instead of retaining only low-order digits. - Unsupported SEC code. The supported profiles and settings schema permit only
PPDandCCD. CTX, WEB, TEL, and any other SEC code are not generated. See PPD vs CCD for the supported decision. - Edited or malformed fixed-width file. The independent validator catches records that are not 94 characters, unknown record types, missing headers/controls, routing check-digit failures, incorrect control totals, invalid block counts, and bad post-control padding. Generate a fresh file instead of editing fixed-width text by hand.
Control totals are calculated, not entered
Batch and file counts, entry hash, debit/credit totals, trace numbers, and block count are calculated by the generator from the entries. They are not Excel mappings a user can mistype. If an existing file has been modified after generation, the validator recomputes those values and reports a mismatch between the control record and actual entries.
The current generator has no separate effective-entry-date policy such as a future-date rule. It formats the supplied generation-time date into the Batch Header; confirm your bank's own cut-off and dating requirements before submission.
Bank-side ACH returns are a separate category
A structurally valid file can still return after the bank attempts the entry. Common ACH return-code examples include R01 (insufficient funds), R02 (account closed), and R03 (no account or unable to locate account). These are bank/network outcomes, not generator validation messages: the converter cannot know a receiver's balance, whether an account is open, or whether bank-held account data matches the payment.
Pre-submission checklist
- Confirm every routing number retains all nine digits, including a leading zero where applicable.
- Confirm ODFI routing, company identification, immediate destination, and immediate origin are set in Company Settings.
- Check each row has account number, receiver name, and a positive amount within the supported maximum.
- Select PPD or CCD intentionally; do not rely on an unsupported SEC code.
- Do not hand-edit counts, hashes, totals, or padding after generation.
- Run an existing bank file through the validator when the portal reports a structural rejection.
Building a payroll batch?
Salary Mode helps prepare payroll data before NACHA validation and generation.
Try Salary ModeReady to generate bank-compliant SEPA XML files?
Stop struggling with manual formatting. Generate compliant ISO 20022 XML files in seconds directly in your browser.
Start Converting Now (Free)