Designed for finance exports
The parser recognises date, description, amount, debit/credit, memo, category, and transaction id fields, including headers like Narration or Withdrawal Amt. used by many banks.
Finance file converter
Read BAI2 bank reporting files and export their transaction (16) records as CSV. Upload a file or paste its contents, check the parsed transactions, then download the CSV file.
1 · Source
2 · Result
Nothing converted yet
A sample BAI2 file is loaded — press “Convert to CSV” to see how the output looks.
The parser recognises date, description, amount, debit/credit, memo, category, and transaction id fields, including headers like Narration or Withdrawal Amt. used by many banks.
Each conversion shows the parsed transactions with money in, money out, and date range, plus warnings about ambiguous dates or missing account details.
PDFs and text files are read by your browser and never sent to a server. Close the tab and the data is gone.
BAI2 is the bank reporting format the Bank Administration Institute defined for US corporate balance and transaction reporting. A BAI2 file is a sequence of short comma-separated records, each ending with a slash: 01 for the file header, 02 for the group header that carries the as-of date, 03 for each account, 16 for each transaction, 88 for continuation text, and 49, 98 and 99 for the trailers. Amounts are whole cents with no decimal point, so 3999 means $39.99.
This BAI2 to CSV Converter reads the 16 transaction records and writes one CSV row for each. The date comes from the group header, the amount is converted to dollars and signed by the transaction type code, the bank reference goes to ID, and the customer reference goes to Memo. The text in each record, including any 88 continuation records, becomes the description. The file is processed in your browser.
A transaction record looks like 16,475,3999,S,BK1001,CUST1,Cloud hosting invoice 4411/. After the record code, the fields are type code, amount in cents, funds type, bank reference, customer reference and text. The type code decides the direction: codes 100 to 399 are credits, and codes 400 to 699 are debits. The converter writes debits as negative amounts.
A BAI2 file has no transaction dates of its own. The date is taken from the as-of date in the 02 group header. Files that cover several as-of dates have one 02 record per group, and the converter applies each group’s date to the 16 records that follow it.
The converter splits the file into records at each slash that ends a line, then reads the group header for the date and each 16 record for the transaction.
Text from the 16 record and any following 88 records is concatenated in order, with no separator added. The description is that combined text, and if it is empty the row falls back to a generic transaction label.
BAI2 (trimmed)
02,CUSTOMERX,BANKXXXX,1,260503,0900,USD,2/
16,475,3999,S,BK1001,CUST1,Cloud hosting invoice 4411/
16,195,240000,V,BK1002,CUST2,Client payment/CSV
date,description,amount,memo,category,id,type
2026-05-03,Cloud hosting invoice 4411,-39.99,CUST1,,BK1001,475
2026-05-03,Client payment,2400.00,CUST2,,BK1002,195Reading amounts as dollars without conversion. The converter divides the cents for you, so 3999 appears as 39.99. A manual import into the spreadsheet would show 3999.00.
Expecting a debit total to be in the file. BAI2 summary records (49, 98 and 99) hold control totals. The converter does not check them, so reconcile the sum of the rows with the closing ledger balance in the file.
Trusting the sign of unusual codes. Codes outside 100 to 399 and 400 to 699 are kept as positive amounts and flagged in the warnings. Check those rows against the bank’s list of type codes.
Expecting every funds-availability detail. The funds type field is not written to the CSV. A funds type that carries extra date fields can shift later columns in unusual files, so check a few rows that have one.
Why are my amounts 100 times too big or too small?
BAI2 amounts are in cents. The converter divides by 100, so if you see 3999 in a spreadsheet, the file was not converted and the amount needs dividing by 100.
Does the converter handle every BAI2 variant?
It reads the record types a transaction report needs: file, group, account, transaction and continuation records. Bank-specific extensions beyond those records are not interpreted.
For more background on data formats and conversion workflows, read our format guides.