When CSV is the right input

CSV works well when your accounting system, payroll provider, or internal export already produces a flat payment list. If you only have Excel, you can also upload .xlsx on the Excel to ACH page or paste tab-separated rows directly into the importer.

Prepare your CSV file

  1. Export or build a comma-separated file with one header row and one row per payment.
  2. Keep routing numbers and account numbers as plain text — never let a spreadsheet strip leading zeros before export.
  3. Use checking or savings for the account type column. The importer also accepts c, s, chk, or sav.
  4. Write amounts as dollars with or without a currency symbol, such as 123.45 or $1,234.50.
  5. Remove subtotal rows, blank lines, and report footers that are not individual payments.
  6. Upload the file below or paste tab-separated rows copied from a spreadsheet.

Required and optional columns

ColumnRequiredDescriptionExample
Recipient nameYesPayee or employee name as it should appear on the bank statement.FICTIONAL VENDOR
Routing numberYesNine-digit ABA routing number including check digit. Store as text so leading zeros are preserved.990000000
Account numberYesRecipient bank account number, up to 17 characters. Store as text so leading zeros are preserved.000EXAMPLE001
Account typeYesUse checking or savings.checking
AmountYesPayment amount in dollars. Use 0 for prenote files.123.45
Recipient IDNoOptional employee or vendor ID carried in the entry detail record.VENDOR001
AddendaNoOptional 80-character payment reference written to an addenda record.INVOICE 1001
Remittance detailsNoOptional invoice or credit memo text used only for the downloadable remittance CSV report.INVOICE 1001 AND CREDIT MEMO 20

Header names the importer recognizes

You do not need exact header spelling. The generator suggests mapping from common export labels such as:

Common CSV headerMaps to
Recipient / Payee / Vendor / Employee nameRecipient name
Routing / ABA / Bank routing numberRouting number
Account / Bank account numberAccount number
Account type / TypeAccount type
Amount / Payment / TotalAmount
Employee ID / Vendor IDRecipient ID
Invoice / Memo / ReferenceAddenda

Example CSV row

All sample data below is fictional.

Recipient nameRouting numberAccount numberAccount typeAmountRecipient IDAddendaRemittance details
FICTIONAL VENDOR990000000000EXAMPLE001checking123.45VENDOR001INVOICE 1001INVOICE 1001 AND CREDIT MEMO 20

1. Import payment data

Choose a CSV/XLSX file or paste rows copied from a spreadsheet. The first row must contain column names. Data is read only in this browser. In Excel, format routing and account number columns as Text to preserve leading zeros. For recurring rosters, leave the amount blank to mark a recipient as unpaid in this run; the app will show every skipped row for confirmation.

Or enter payments manually

3. Confirm bank compatibility

ACH file upload is not included with every business bank account. Ask your bank whether your account can upload NACHA files and request its current ACH file instructions before entering configuration values.

Confirm both items to continue to bank configuration.

Validation before download

After mapping, the generator checks each row locally before you create the NACHA file:

Need to inspect an existing file instead? Use the ACH file validator.

CSV to ACH FAQ

What columns does a CSV need for ACH?

At minimum: recipient name, routing number, account number, account type, and amount. Recipient ID, addenda, and remittance details are optional.

Can I paste CSV data instead of uploading a file?

Yes. Copy rows from Excel or Google Sheets and paste them into the importer. Tab-separated pasted data works the same way as a CSV upload.

Does the CSV leave my computer?

No. The file is parsed in your browser. Routing numbers, account numbers, and generated ACH files are not uploaded to a server.

Related tools

Excel to ACH, QuickBooks to NACHA, and export pricing.