What a BAI2 file contains
A BAI2 file is a daily reporting file. It tells you the opening and closing balances for one or more accounts and lists the transactions that moved money during the reporting period. Banks typically generate it as a prior-day file (yesterday's final activity) or an intraday file (partial, same-day activity).
The core data points are balances and transactions. Balances are reported with type codes, for example an opening ledger balance or a closing available balance. Each transaction carries a type code, an amount, and often a bank reference number and a short text description.
Because it was designed for corporate cash management, BAI2 is oriented around reconciliation and forecasting rather than personal budgeting. It answers the question a treasurer asks each morning: how much cash do I have, in which accounts, and what cleared overnight.
How the format is structured
A BAI2 file is plain text made of records. Each record starts with a numeric code that identifies its role. The common ones are 01 (file header), 02 (group header), 03 (account identifier), 16 (transaction detail), 88 (continuation), 49 (account trailer), 98 (group trailer), and 99 (file trailer).
The records nest. The file wraps one or more groups, each group wraps one or more accounts, and each account wraps its balance and transaction records. Fields inside a record are separated by commas, and each record ends with a slash. Long text that does not fit on one record continues on an 88 record.
Meaning comes from type codes rather than plain words. A three-digit type code tells you whether a number is a balance or a transaction and what kind. For example, codes in certain ranges represent credits like incoming wires or lockbox deposits, and others represent debits like checks paid or ACH withdrawals. To read a file fully you need the bank's list of the codes it uses, because banks do not all populate the same set.
Who uses BAI2 and why
BAI2 is most common in mid-size to large businesses and in treasury, ERP, and cash-management software. Systems such as bank reconciliation modules and treasury workstations import BAI2 to load balances and match transactions automatically each day.
Banks favor it because one file can report many accounts across the same institution in a consistent, machine-readable layout. That makes multi-account and multi-currency reporting practical without a separate download per account.
If you run a small business or do bookkeeping for a few accounts, you may never touch BAI2 directly. It tends to appear when a bank's cash-management portal offers it as an export option, or when an accounting system specifically requests it for automated reconciliation.
BAI2 versus OFX, MT940, and CSV
OFX, QFX, and QBO are XML- or SGML-style formats aimed at accounting and personal finance tools like QuickBooks and Wave. They carry similar balance and transaction data but use tags instead of numeric record codes, and they are the usual choice for small-business imports.
MT940 is the SWIFT bank statement message, widely used in Europe and for international banking. Like BAI2 it is a structured text statement built for reconciliation, but it uses SWIFT field tags rather than BAI record and type codes. CAMT is the newer XML equivalent under the ISO 20022 standard.
CSV is just a table of rows and columns with no fixed standard. It is the easiest to open in a spreadsheet but carries no built-in meaning for balance types or transaction categories. If your accounting or treasury system accepts BAI2, use it for cleaner automated matching; if you only need to review data in Excel, converting to CSV is simpler.
If your bank only gives you a PDF statement but your system wants a structured import, you will need to convert. Tools that turn statement PDFs into CSV, Excel, or accounting formats can bridge that gap; just confirm which format your destination system actually accepts before you export.