NACHA File Format: Record Layout, Field Positions, and How to Open a NACHA File in Excel

A NACHA file has no headers, no delimiters and no decimal points. Every line is exactly 94 characters and every field sits at a fixed position. This page documents all six record types position by position, and the converter above turns the file into spreadsheet rows without you counting characters.

Free to try, no credit card
256-bit encryption
All six record types parsed

Last updated July 2026

PDF, JPG, PNG, BMP, HEIC, TIFF, MT940

Upload your bank statement

Extract:

What is the NACHA file format?

The NACHA file format is the fixed-width ASCII layout US banks use to exchange batches of ACH payments. Every line is exactly 94 characters and the first character is the record type code: 1 opens the file, 5 opens a batch, 6 is one payment, 7 carries addenda detail, 8 closes a batch with control totals, and 9 closes the file. There are no delimiters, so each field is identified by its character position rather than by a comma or a header.

Why a NACHA File Falls Apart in Excel

Opening the file is easy. Getting usable numbers out of it is where the format fights back, and each of these failures is silent.

Everything Lands in One Column

There are no commas or tabs anywhere in the file, so Excel treats each 94 character line as a single cell. Nothing splits until you tell Excel the exact character positions of all eleven fields.

Amounts Have No Decimal Point

The Amount field holds whole cents right justified and zero filled. A payment of $1,250.00 is stored as 0000125000, so every total is 100 times too large until you divide.

Routing Numbers Lose Their Leading Zeros

Excel reads the eight digit Receiving DFI Identification as a number and drops any leading zero, which silently corrupts routing numbers for a large set of US banks.

Long Account Numbers Turn Into Scientific Notation

A seventeen character account number imported as a number becomes something like 1.23457E+16, and the original digits are gone. It has to come in as text.

The Direction Is a Code, Not a Sign

Nothing in the file is negative. Whether a line is money in or money out lives in the two digit Transaction Code, so a raw sum of the Amount column is meaningless.

Six Record Types Share One Shape

Header, batch, entry, addenda and control records are all 94 characters wide but hold completely different fields. Split them with a single rule and the control totals land in the middle of your payment data.

Read the File Without Counting Characters

Upload the ACH file and get one row per payment with the fields already separated, decoded and typed correctly.

Fields Split by Position

Each record type is parsed on its own layout, so entry detail lines become columns and control records are read as totals rather than dumped in with the payments.

Amounts With the Decimal Restored

Whole cent values are converted to real currency numbers, so a 0000125000 field arrives as 1250.00 and the column totals correctly on the first try.

Identifiers Kept as Text

Routing numbers, account numbers and fifteen digit trace numbers keep every leading zero and never flip into scientific notation.

Transaction Codes Decoded

The two digit code becomes a readable direction and account type, so you can filter credits from debits and checking from savings without a lookup table.

Control Totals Carried Through

Batch and file control counts, hashes and dollar totals come through as their own rows, which is what you need to prove the file balances before release.

Private by Default

ACH files carry full account and routing numbers. Uploads use 256-bit encryption and you can delete files whenever you want.

From a 94 Character ACH File to a Spreadsheet in 3 Steps

Nothing to install and no credit card to start.

1

Confirm What You Have

Open the file in a text editor. If every line is the same width and starts with 1, 5, 6, 7, 8 or 9, it is a NACHA ACH file rather than a statement.

Tip: A .ach, .txt or .nacha extension all hold the same thing.

2

Upload

Drag the file into the box above. Each record type is read on its own layout and the entry detail lines become the transaction rows.

Tip: Multi batch files are fine.

3

Check It Balances

Save as XLSX or CSV, then compare your debit and credit totals against the dollar totals in the file control record before you send anything to the bank.

Tip: A file that does not balance gets rejected outright.

Who Needs the Record Layout

Anyone who has to prove what is inside an ACH file before it goes to the bank, or work out what went through after it came back. Reading the file by eye means knowing where each field starts and stops.

Payroll and AP Teams

Verify names, amounts and account numbers in a payroll or vendor batch before release, when a single wrong digit sends money to a stranger.

Treasury and Controllers

Tie batch control totals to the general ledger and confirm the file the bank received is the file that was approved.

Developers and Integrators

Build or test an ACH generator against the real field positions instead of guessing at offsets from a sample file.

Bookkeepers

Turn an ACH batch into rows that can be matched against the bank statement line the batch settled as.

Auditors

Test a population of payments against the originating file rather than a summary report someone assembled by hand.

Risk and Compliance

Review SEC codes and entry descriptions across batches to confirm the authorization type matches how the payment was collected.

Common Search Terms

nacha file format nacha file format excel nacha file layout ach file format nacha record types ach transaction codes nacha entry detail record

Transaction Types We Handle

ACH credits
ACH debits
Payroll direct deposit
Vendor payments
Customer collections
Prenotes
Returns
Notifications of change

The six NACHA record types

A NACHA file is a strict hierarchy, and the order is not optional. One File Header opens the file, then one or more batches, then one File Control closes it. Inside every batch, a Batch Header opens the group, an Entry Detail record represents each payment, an optional Addenda record follows an entry that carries extra remittance data, and a Batch Control closes the group with its totals. Read down the first character of every line and you should see 1, then 5, then a run of 6 and 7, then 8, repeating for each batch, and finally 9. Out of sequence records or a missing mandatory record cause the bank to reject all or part of the file.

CodeRecordWhat it doesHow many
1File HeaderIdentifies the sending and receiving institutions and stamps the file with a creation date and time.Exactly one, first line
5Batch HeaderOpens a batch and carries the company name, the SEC code, the entry description and the effective date.One per batch
6Entry DetailOne individual payment: who is being paid or debited, at which bank and account, and for how much.One per payment
7AddendaOptional remittance or supporting detail attached to the entry immediately above it.Zero or more per entry
8Batch ControlCloses the batch with its entry count, entry hash and separate debit and credit dollar totals.One per batch
9File ControlCloses the file with batch count, block count, total entries, entry hash and file level dollar totals.Exactly one, last meaningful line

Files are also blocked in groups of ten records, which is why the File Header carries a blocking factor of 10 and why real files end with lines of nothing but the digit 9 repeated. Those filler lines are padding to reach a multiple of ten, not data, and they should be dropped before analysis.

NACHA File Header record layout (record type 1)

The first line of the file. Immediate Destination is the receiving bank routing number and Immediate Origin is normally your company identification, both ten characters wide with a leading space or zero.

PositionLengthField
01-011Record Type Code (always 1)
02-032Priority Code
04-1310Immediate Destination
14-2310Immediate Origin
24-296File Creation Date (YYMMDD)
30-334File Creation Time (HHMM)
34-341File ID Modifier
35-373Record Size (always 094)
38-392Blocking Factor (always 10)
40-401Format Code (always 1)
41-6323Immediate Destination Name
64-8623Immediate Origin Name
87-948Reference Code

NACHA Batch Header record layout (record type 5)

This is the record that decides how the whole batch is treated. Service Class Code says whether the batch holds credits, debits or both, and the SEC code at 51-53 states the authorization type, which is what determines the return window for every entry in the batch.

PositionLengthField
01-011Record Type Code (always 5)
02-043Service Class Code (200 mixed, 220 credits only, 225 debits only)
05-2016Company Name (what the receiver sees on their statement)
21-4020Company Discretionary Data
41-5010Company Identification
51-533Standard Entry Class Code (PPD, CCD, WEB, TEL, CTX)
54-6310Company Entry Description (PAYROLL, PURCHASE, and so on)
64-696Company Descriptive Date
70-756Effective Entry Date (YYMMDD)
76-783Settlement Date, Julian (inserted by the ACH operator)
79-791Originator Status Code
80-878Originating DFI Identification
88-947Batch Number

NACHA Entry Detail record layout (record type 6)

The record you actually want in a spreadsheet. One line is one payment. This layout covers the common SEC codes including PPD, CCD, WEB and TEL. CTX and IAT entries use variations on it, so check the field positions against the SEC code in the batch header before you parse a corporate or international file.

PositionLengthFieldNotes
01-011Record Type CodeAlways 6
02-032Transaction CodeCarries the direction and the account type
04-118Receiving DFI IdentificationFirst eight digits of the routing number
12-121Check DigitNinth digit of the routing number
13-2917DFI Account NumberLeft justified, space filled, must stay text
30-3910AmountWhole cents, zero filled, no decimal point
40-5415Identification NumberYour employee or invoice reference
55-7622Individual or Company NameThe receiver name
77-782Discretionary DataFree for the originator to use
79-791Addenda Record Indicator1 means a type 7 record follows
80-9415Trace NumberThe unique reference you quote when tracing a payment

NACHA Addenda, Batch Control and File Control layouts (records 7, 8 and 9)

The addenda record hangs off the entry above it and its Entry Detail Sequence Number at 88-94 is what ties the two together. The two control records are where a file proves it balances, and they are the first thing the bank checks.

RecordPositionLengthField
Addenda (7)02-032Addenda Type Code (05 is the common remittance type)
Addenda (7)04-8380Payment Related Information
Addenda (7)84-874Addenda Sequence Number
Addenda (7)88-947Entry Detail Sequence Number
Batch Control (8)05-106Entry and Addenda Count
Batch Control (8)11-2010Entry Hash
Batch Control (8)21-3212Total Debit Dollar Amount in Batch
Batch Control (8)33-4412Total Credit Dollar Amount in Batch
Batch Control (8)88-947Batch Number (matches the batch header)
File Control (9)02-076Batch Count
File Control (9)08-136Block Count
File Control (9)14-218Entry and Addenda Count
File Control (9)22-3110Entry Hash
File Control (9)32-5120Total Debit Dollar Amount in File
File Control (9)52-7120Total Credit Dollar Amount in File

The Entry Hash is the sum of every Receiving DFI Identification in the batch, truncated to its rightmost ten digits. It is a checksum, not a dollar figure, and it is the field most often computed wrong by a homegrown generator. Our guide on validating a NACHA file before sending it to the bank walks through the checks that catch a bad hash or an unbalanced batch before the bank does.

ACH transaction codes in the entry detail record

Positions 02-03 carry the transaction code, and it is the only thing in the file that tells you whether money is moving in or out. Nothing is stored as a negative number, so summing the amount column without splitting on this code gives you a total that means nothing.

CodeAccountDirectionMeaning
22CheckingCreditDeposit into a checking account, the payroll direct deposit code
23CheckingCreditPrenotification of a checking credit, zero dollars
27CheckingDebitCollection from a checking account
28CheckingDebitPrenotification of a checking debit, zero dollars
32SavingsCreditDeposit into a savings account
33SavingsCreditPrenotification of a savings credit, zero dollars
37SavingsDebitCollection from a savings account
38SavingsDebitPrenotification of a savings debit, zero dollars
42General ledgerCreditCredit to a financial institution general ledger account
47General ledgerDebitDebit to a financial institution general ledger account
52LoanCreditPayment applied to a loan account

Codes 21 and 31 carry a Notification of Change, where the receiving bank is telling you an account or routing number has moved. Those arrive back from the bank rather than going out in your file, and they need acting on or the next batch fails the same way.

SEC codes in the batch header

The Standard Entry Class code at positions 51-53 of the batch header states how the payment was authorized. It is not cosmetic. The SEC code sets the return window and the documentation you have to keep, and using the wrong one is a rules violation even if the money moves.

SEC codeNameTypical use
PPDPrearranged Payment and DepositConsumer accounts: payroll direct deposit and recurring consumer debits
CCDCorporate Credit or DebitBusiness to business payments and vendor settlement
WEBInternet Initiated EntryConsumer debits authorized online or through an app
TELTelephone Initiated EntryConsumer debits authorized over the phone
CTXCorporate Trade ExchangeBusiness payments carrying structured remittance data in addenda records
IATInternational ACH TransactionPayments where part of the transaction is outside the United States

The full list also covers ARC, BOC, POP and RCK for check conversion, plus COR for notifications of change and ADV for accounting advices. The full ACH SEC codes list covers when each one applies, and what to put in the company entry description covers the field right next to it.

How to open a NACHA file in Excel by field position

You can do this by hand if you only need to eyeball one batch. Open the file with Excel set to All Files, and when the Text Import Wizard appears choose Fixed width rather than Delimited. Then place break lines at the character positions from the entry detail table above, and set the account number, routing number and trace number columns to Text before you finish, or Excel destroys them.

The break positions for an entry detail line are 1, 3, 11, 12, 29, 39, 54, 76, 78, 79. That gives you the eleven fields in order. Two things still need fixing afterward: divide the amount column by 100 to restore the decimal, and add a column that translates the transaction code into a direction so the debits can carry a negative sign.

The catch is that this only works cleanly if you first split the file so that only type 6 lines are in the sheet. Import the whole file at those break positions and the header, batch and control records get sliced at meaningless points, because they hold entirely different fields at those same offsets. That is the main reason people give up on the manual route on a real multi batch file and use the NACHA file to Excel converter instead, which reads each record type on its own layout in one pass. The step by step manual method is written up in how to open a NACHA ACH file in Excel.

What a NACHA file does not contain

This trips up people who are handed one expecting a statement. A NACHA file is a payment instruction: it tells the bank what to do. It has no opening balance, no closing balance, no running balance and no record of anything that was not originated in this file. It will not tell you whether a payment settled, was returned, or bounced. For that you need the statement or a returns file coming back from the bank.

If you are trying to reconcile, remember the whole ACH batch usually lands on the bank statement as a single summarized line, not as one line per payment. Matching the two means totaling the file by settlement date and comparing that to the statement line, which reconciling an ACH file against your bank statement works through. When a payment comes back, the reason arrives as a return code, and the ACH return codes list from R01 to R85 decodes them.

Related bank file formats

NACHA is one of several fixed layouts a US business gets from its bank, and they are easy to confuse because several are positional text. BAI2 is the balance reporting format and, like NACHA, stores amounts as whole cents, so the BAI to Excel converter covers that one. MT940 is tag based and comes from SWIFT, handled by the MT940 to Excel converter, and camt.053 is the ISO 20022 XML equivalent read by the camt.053 to Excel converter. If you are not sure which one you were sent, the bank file format converter compares them side by side, and the plain bank statement converter handles the PDF statement itself. Once the payments are in a sheet, teams that also want the receipts and card spend behind those payments read automatically tend to pair this with automated expense capture.

Why People Convert Instead of Counting Characters

94
characters in every record
6
record types parsed
Under 1 min
to convert a file

Security & Privacy

  • 256-bit encryption on every upload
  • Delete your files at any time
  • No reselling or sharing of your financial data
  • Runs in your browser, nothing to install

NACHA File Format: Common Questions

A NACHA file, also called an ACH file, is the standard fixed-width text file US banks use to move batches of ACH payments such as payroll, vendor payments and direct debits. Nacha governs the ACH network and publishes the format, so the two names describe the same thing.

Exactly 94 characters, for every record type. Files are also blocked in groups of ten records, which is why the file header carries a blocking factor of 10 and why real files end in filler lines made entirely of the digit 9 to reach a multiple of ten.

The first character of each line: 1 is the file header, 5 is a batch header, 6 is an entry detail record holding one payment, 7 is an addenda record, 8 is a batch control record with the batch totals, and 9 is the file control record that closes the file.

Positions 30 to 39, ten characters, right justified and zero filled. It holds whole cents with the decimal point implied, so $1,250.00 is written as 0000125000. Divide by 100 after import or every total comes out a hundred times too large.

From the transaction code at positions 02 to 03 of the entry detail record. 22 is a checking credit and 27 a checking debit, 32 and 37 are the savings equivalents. No amount in the file is ever stored as a negative number, so the code is the only direction signal.

Open it with Excel set to All Files, choose Fixed width in the Text Import Wizard, and set break points at 1, 3, 11, 12, 29, 39, 54, 76, 78 and 79 for entry detail lines. Format the account, routing and trace columns as Text first, otherwise Excel strips leading zeros.

A checksum, not a dollar amount. It is the sum of every Receiving DFI Identification in the batch, truncated to the rightmost ten digits. Banks use it to confirm no entry was added, dropped or altered in transit, and a miscalculated hash rejects the file.

No. A NACHA file is a payment instruction, not a statement. It carries no opening balance, closing balance or running balance, and it cannot tell you whether a payment settled or was returned. For that you need the bank statement or a returns file.

Related Resources

Other Bank Statement Converters

ICICI Bank JPMorgan Chase Bank of America Citigroup Wells Fargo Goldman Sachs Morgan Stanley U.S. Bancorp PNC Financial Services Truist Capital One TD Bank Charles Schwab Fidelity Vanguard E*TRADE TD Ameritrade Bank of New York Mellon State Street BMO USA Ally Financial Regions Fifth Third Bank Huntington KeyBank Citizens Financial Group First Citizens Synchrony Financial M&T Bank First Horizon Cathay Bank USAA Navy Federal Comerica Zions Bank East West Bank First National of Nebraska Frost Bank BOK Financial Fulton Financial Associated Banc-Corp Valley National Wintrust Financial First Midwest Bancorp Commerce Bancshares UMB Financial Pinnacle Bank Webster Bank Cadence Bank Old National First Interstate BancSystem Umpqua Bank First Hawaiian Bank Prosperity Bank SouthState First Merchants First Bank Holding Glacier Bank First Financial Bancorp Independent Bank Columbia Banking System Western Alliance Pacific Premier Bancorp Bank OZK United Community Banks Customers Bank Texas Capital SVB Financial Group Signature Bank First Republic Bank New York Community Bancorp Sterling Bancorp First Bank Bank United First Commonwealth Financial Flagstar Bank Synovus Bank Santander Bank Commonwealth Bank (CommBank) ANZ Bank Westpac NAB ServisFirst Bancshares Renasant Corporation Simmons First National Trustmark Corporation First Busey Community Bank System First Mid Bancshares Ameris Bancorp Hancock Whitney First BanCorp Third Coast Bancshares Home Bancshares Byline Bancorp Simmons Bank United Bankshares Peoples United Financial American Express HSBC Bank USA

From the same family of tools