---
title: "BAI2 File Viewer — Free BAI2 Bank Statement Reader"
description: "Open a BAI2 file in your browser: each account’s balances and transactions, every type code explained, every control total checked. Free, nothing uploaded."
canonical: https://nacha-navigator.com/bai2-viewer
updated: 2026-10-30
---

# Read any BAI2 file, account by account.

Free BAI2 file viewer

Upload a BAI2 file to analyze its structure and contents: each account’s balances and transactions, every type code explained and every control total checked against the BAI2 specification. It reads BAI version 2 files, and version 3 (BTRS) files with BAI2 code meanings. All processing happens locally in your browser - no data is sent to any server.

- Balances & transactions per account
- Every type code explained
- Control totals checked

## 100% in-browser.

Your file never leaves this device.

### Parsed on your device

JavaScript on this page reads the file. Nothing is uploaded, stored or transmitted.

### No account, no cost

Every tool is free to use. No sign-up, no paywall, ever.

### Open about usage

Our [public analytics](https://nacha-navigator.com/analytics) show exactly what we count — never what your files contain.

**0 bytes** of your file are uploaded; the only requests are anonymous counters (a page view, a file opened). Check it yourself in your browser’s developer tools (Network tab).

Anatomy of a BAI2 file

## Commas, codes and continuations, decoded.

BAI2 is comma-delimited: each line starts with a two-digit record code, commas separate the fields and a slash ends the record. Fields have numbers, not positions — the viewer names, decodes and checks every one.

Lines 07–09 · one transaction

### Transaction Detail, field by field

1. 1 **Record code** `16` Transaction Detail
2. 2 **Type code** `115` Lockbox Deposit, a credit
3. 3 **Amount** `4512575` 45,125.75 USD — two implied decimals
4. 4 **Funds type** `S` Distributed availability: three amounts follow
5. 5 **Available now** `2500000` 25,000.00
6. 6 **In one day** `1500000` 15,000.00
7. 7 **In two days or more** `512575` 5,125.75
8. 8 **Bank reference** `LBX204417` On the first 88 line
9. 9 **Customer reference** `BATCH 0007` Spaces are part of the value
10. 10 **Text** `LOCKBOX 4417 DEPOSIT, 23 CHECKS …` Runs to the end of the record, commas included, across both 88 lines

A short BAI2 primer

## Eight record types, one nested report.

BAI2 is how banks report balances and transactions to their corporate customers, typically a final report for the previous day and interim reports during the day. Every file nests the same way.

1. 01 **File Header** Who sent the file and when, the file ID, and version 2.
2. 02 **Group Header** One per originating bank and as-of date: status, as-of date and time, currency.
3. 03 **Account Identifier** Account number, currency, balances (status codes) and summary totals.
4. 16 **Transaction Detail** One per transaction: type code, amount, availability, references, text.
5. 88 **Continuation** Carries the rest of the record above it onto another line.
6. 49 **Account Trailer** Closes the account: control total and number of records.
7. 98 **Group Trailer** Closes the group: control total, accounts and records.
8. 99 **File Trailer** Closes the file: control total, groups and records.

- ### Amounts have no decimal point

  The currency implies the decimals: `150000` is 1,500.00 in USD, 150,000 in JPY and 150.000 in KWD.
- ### Type codes say what an amount is

  `001–099` balances, `100–399` credits, `400–699` debits, `900–999` bank-defined.
- ### Funds types add fields

  `S` adds three availability amounts, `V` a value date and time, `D` a list of days and amounts.
- ### Trailers prove the totals

  Each 49, 98 and 99 carries a control total and record count. The viewer recomputes every one and shows the difference.

What it shows

## From raw lines to a readable statement.

Every view shares one selection: pick a transaction in the statement and the tree, its raw line and its fields follow.

1. No. 01

   ### Statement

   Balances from every status code, summary totals, and each transaction with its type, credit or debit, amount, references and full text — account by account.
2. No. 02

   ### Structure

   The file as a tree: groups, accounts, transactions, trailers and the 88 lines under each record, with a field-by-field record view.
3. No. 03

   ### Raw data

   Every line color-coded field by field. Hover or select a field for its number, decoded value and what the specification says.
4. No. 04

   ### Validation

   Every account, group and file control total and record count recomputed, plus field formats, type codes and record order — with the line to fix.

Related tools

## More free tools for payment files.

The same private, in-browser approach for the other formats that land on an operations desk.

- ACH · NACHA files

  ### NACHA Viewer

  Decode every record field by field, check control totals, hashes and routing check digits, and build reversal files.

  .ach · .txt

  [Open the NACHA Viewer](https://nacha-navigator.com/)
- ACH · Reversals

  ### ACH Reversal

  Reverse a whole NACHA file or the entries you choose: transaction codes flipped, REVERSAL as the entry description and the control totals recalculated.

  .ach · .txt

  [Reverse an ACH file](https://nacha-navigator.com/ach-reversal)
- New

  X9.37 · Image cash letter

  ### X9 Viewer

  Open X9.37 check image files in your browser: every item’s front and back images, its MICR line and the records behind it.

  .x9 · .x937 · .icl

  [Open X9 Viewer](https://nacha-navigator.com/x9-viewer)
- Build files · REST API

  ### NACHA Generator

  Build a valid NACHA file with a visual form, or from JSON with the REST API. Control totals, entry hash and block padding are done for you.

  [Read the API docs](https://nacha-navigator.com/nacha-generator/api)

  [Open the generator](https://nacha-navigator.com/nacha-generator)

## Limits

- It reads the BAI2 files your bank sends. It doesn’t connect to your bank or fetch reports for you.
- It doesn’t reconcile transactions against your books.
- Type codes 900–999 are defined by each bank. The viewer says whether one is a status, credit or debit code, not what your bank means by it.
- Version 3 (BTRS) files are read with BAI2 meanings, which BTRS changed for a few codes. BTRS-only records (89 and 90) are shown as raw text.
- Exports are CSV and JSON. It doesn’t convert reports to other formats, such as camt.053.

## Reference

- [BAI2 type codes](https://nacha-navigator.com/bai2-type-codes) Every code with its level and direction.
- [BAI2 file format](https://nacha-navigator.com/bai2-file-format) Records, fields, continuations and control totals.
- [Sample files](https://nacha-navigator.com/sample-files) Example NACHA, BAI2 and X9 files to download and open.

Last updated October 30, 2026
