Your bank sends balance reporting as a BAI2 file, and Excel turns it into a wall of numbered records. Upload the file and BankXLSX reads the 03 and 16 records into clean rows with date, type code, amount, debit, credit, and balance. Start free, no credit card.
Upload your bank statement
Drop file here or click to upload
PDF, JPG, PNG, BMP, HEIC, TIFF
Uploading...
A BAI2 file is a stream of numbered records built for software, not for people. Drop it into Excel and the structure that makes it useful is exactly what makes it unreadable. Here is what trips up most treasury and accounting teams.
Open a .bai file in Excel and every line piles into column A, with headers, balances, and transactions stacked together and no way to sort them.
BAI2 stores money as whole cents with the sign implied by the type code, so $1,250.00 shows up as 125000 and Excel totals it wrong unless you convert it.
Each transaction is tagged with a three digit code like 142 or 475 rather than a plain label, so the file means nothing until you map the codes.
Long details overflow onto 88 continuation records, which chops a single payment description across two or three rows.
A single BAI2 file can carry dozens of accounts in stacked 02 and 03 groups, so pulling one account out by hand is slow and error prone.
Opening and closing ledger and available balances sit inside the 03 record as codes 010, 015, 040, and 045, not in a tidy column where you can reconcile against them.
Upload the BAI or BAI2 file and the converter reads the record structure for you, then writes every transaction into a spreadsheet you can sort, filter, and reconcile right away.
Each 16 transaction record lands as its own row with date, type code, amount, debit, credit, and description in separate columns.
Implied decimals are restored and signs resolved from the type code, so 125000 reads as 1,250.00 and the columns total correctly.
Opening and closing ledger and available balances are lifted from the 03 status codes into clear fields you can reconcile against.
Files with many 02 and 03 account groups are separated so you can work one account at a time instead of untangling them by hand.
Download a real .xlsx workbook for analysis or a clean CSV mapped for QuickBooks, NetSuite, Sage, or your TMS.
256-bit encryption in transit and you can delete your uploaded files whenever you want.
No software to install and no credit card to start.
Banks deliver BAI2 as plain text, often named .bai or .txt. If yours ends in .bai, rename it to .txt so the uploader accepts it.
Tip: A .txt copy keeps the data identical.
Drag the file into the box above. The converter reads the 02, 03, 16, and 88 records and ignores the headers and trailers.
Tip: Multi account files are fine.
Save the result as XLSX or CSV and open it in Excel, Google Sheets, or your accounting and treasury software.
Tip: Columns are reconciliation ready.
BAI2 is the balance reporting format US banks send to businesses, so the people converting it are usually managing cash, closing the books, or loading another system.
Turn a daily BAI2 balance file into a clean cash position without retyping a single record.
Reconcile bank activity against the ledger using the opening and closing balances pulled from the file.
Map BAI2 transactions into a CSV your client can load into NetSuite, SAP, or a treasury system.
Convert a client BAI file into spreadsheet rows you can categorize and import into QuickBooks.
A BAI2 file is the standard text format US banks use to report account balances and transactions to their business customers, also called Cash Management Balance Reporting. It was published by the Bank Administration Institute and is the dominant balance reporting standard across North America. Your bank delivers it through cash management or treasury portals so you can load yesterday's activity into accounting or treasury software automatically instead of keying it by hand. The file is plain text, but it is organized into numbered records rather than spreadsheet rows, which is why it does not open cleanly in Excel.
Every BAI2 file is a nested set of records, each starting with a two digit code that tells software what the line means. A file holds one or more groups, each group holds one or more accounts, and each account holds its transactions. Here is what each record code marks.
| Record code | Record name | What it marks |
|---|---|---|
| 01 | File Header | Start of the file: sender, receiver, date, and time. |
| 02 | Group Header | Start of a group of accounts for one bank and date. |
| 03 | Account Identifier | One account, with its balance status and summary codes. |
| 16 | Transaction Detail | A single transaction: type code, amount, and description. |
| 49 | Account Trailer | End of an account, with the account control total. |
| 88 | Continuation | Overflow text continued from an 03, 16, or 88 record. |
| 98 | Group Trailer | End of a group, with its control total and record count. |
| 99 | File Trailer | End of the file, with the file control total. |
Inside the 03 and 16 records, a three digit type code says what each line represents, from a closing balance to an ACH debit. These are the codes a BAI code list maps to plain English. The most common ones are below; banks can add their own, so confirm anything unusual against your bank's BAI2 implementation guide.
| Type code | Meaning | Where it appears |
|---|---|---|
| 010 | Opening ledger balance | 03 status |
| 015 | Closing ledger balance | 03 status |
| 040 | Opening available balance | 03 status |
| 045 | Closing available balance | 03 status |
| 100 | Total amount of credits | 03 summary |
| 400 | Total amount of debits | 03 summary |
| 142 | ACH credit received | 16 detail |
| 165 | Preauthorized ACH credit | 16 detail |
| 195 | Incoming money transfer (wire in) | 16 detail |
| 301 | Commercial deposit | 16 detail |
| 354 | Interest credit | 16 detail |
| 451 | ACH debit received | 16 detail |
| 475 | Check paid | 16 detail |
| 495 | Outgoing money transfer (wire out) | 16 detail |
| 555 | Deposited item returned | 16 detail |
| 698 | Miscellaneous bank fee | 16 detail |
BAI1 was the first cash management balance reporting specification, released in 1980. BAI2 replaced it in 1987 and added far more detail and coding flexibility, including extra lending transaction codes added in 2001. Formal support for the older BAI1 ended around 1990, so when a bank or ERP today says BAI, it almost always means BAI2. If someone hands you a BAI file in 2026, treat it as BAI2 and convert it the same way.
BAI2 is the North American balance reporting standard. MT940 is the older SWIFT end of day statement message used widely outside the US, and ISO 20022 camt.053 is the modern XML statement that is gradually replacing both. They all carry the same idea, an opening balance, a list of transactions, and a closing balance, in different shapes. If your bank gives you a choice, BAI2 and CSV are the easiest to turn into a spreadsheet, and BankXLSX converts the BAI2 file into the same clean rows you would get from a PDF statement.
Once the file is in a spreadsheet, the rest is quick. For a complete walkthrough of the manual options as well, see our guide on how to convert a BAI2 bank statement file to CSV or Excel. If you also receive ACH payment files, the same approach works to open a NACHA ACH file in Excel. Loading the data elsewhere? Map it through the bank statement OFX converter, the QuickBooks QBO format, or, for enterprise teams, the NetSuite bank statement converter. If you only have the PDF statement instead of the BAI file, the general bank statement converter and the PDF bank statement to Excel converter produce the same structured output.
Most teams do not stop at Excel. If the next step is QuickBooks Online, you can turn the exported file into an importable QBO with a CSV to QBO converter. For any other business PDF you need as a sheet, a general PDF to Excel converter handles reports and tables, and finance teams that process other documents at volume can extract them with enterprise document OCR.
A BAI file, almost always BAI2, is the text format US banks use to report account balances and transactions to business customers, known as Cash Management Balance Reporting. It is organized into numbered records rather than spreadsheet rows, so it does not open cleanly in Excel until you convert it.
Save the file with a .txt extension if it ends in .bai, then upload it to BankXLSX. The converter reads the 03 and 16 records and writes each transaction to its own row, then lets you download a CSV with date, type code, amount, debit, credit, and balance columns ready to import elsewhere.
You can open it, but every line stacks into one column with amounts that have no decimal point and transactions tagged only by three digit type codes. To get usable rows, convert the BAI2 file first so the records become proper columns and the implied decimals and signs are restored.
BAI1 was the original 1980 balance reporting spec; BAI2 replaced it in 1987 with more detail and coding options and is the standard banks use today. Support for the old BAI1 ended around 1990, so a file labeled BAI in 2026 is effectively BAI2 and converts the same way.
BAI type codes are the three digit codes inside the 03 and 16 records that say what each line is, such as 015 for a closing ledger balance, 142 for an ACH credit, or 475 for a check paid. A BAI code list maps them to plain English, and BankXLSX labels the common ones for you during conversion.
It is plain text made of stacked records, each beginning with a code: 01 for the file header, 02 for a group, 03 for an account and its balances, 16 for each transaction, and 49, 98, and 99 trailers with control totals. Amounts are stored as whole cents with the decimal implied.
No. BAI2 is the North American balance reporting standard, while MT940 is the SWIFT end of day statement message used more widely outside the US, and ISO 20022 camt.053 is the newer XML version. They carry similar data in different shapes, and BankXLSX turns the BAI2 file into clean spreadsheet rows either way.
You can start on BankXLSX free with no credit card, which is enough to test the output on a real file before you commit. Confirm the converted rows match the control totals in the 49 and 98 records, since a clean total is the fastest check that nothing was dropped.
Convert to OFX for finance software import.
Convert PDF statements to Excel instead.
Export to QuickBooks QBO format.
Get started converting bank statements to spreadsheets.
USD
per month
billed as
$288 yearly
Choose speed vs accuracy when extracting
| Base AI Faster | 2,500 pages |
| Pro AI Best accuracy | 500 pages |
Scale statement conversion across your team with automation.
USD
per month
billed as
$888 yearly
Choose speed vs accuracy when extracting
| Base AI Faster | 10,000 pages |
| Pro AI Best accuracy | 2,000 pages |
Enterprise‑grade bank statement conversion and controls.
USD
per month
billed as
$ yearly
Choose speed vs accuracy when extracting
| Base AI Faster | pages |
| Pro AI Best accuracy | pages |