BAI3
BAI3 is a generic BAI-format parser that skips file version validation, includes inline text from 16 records, ignores negative-amount transactions, and uses account-level currency with a static decimal map and no FX or bank charge configuration.
How to identify a BAI3 file
Structurally similar to BAI2 but no version check is performed on the first line. Any file with 02, 03, 16,, and 88, records will be attempted. There is no bank-specific variant — BAI3 is a single generic parser.
Key differences from all BAI2 parsers
A. No file version validation
BAI2 parsers reject files where the first line does not end with 2/. BAI3 attempts to parse regardless.
B. Inline text on the 16, record itself
BAI2 parsers only extract description text from 88, continuation records. BAI3 also reads text that appears inline on the 16, record, after the customer reference number field. If tokens exist beyond the reference fields, they are included in the description. This is the most significant behavioral difference.
C. Negative amounts are skipped
If a transaction amount starts with -, the transaction returns null and is excluded from results. BAI2 parsers do not have this filter — they process all transactions regardless of sign.
D. Currency source
Currency comes from the account header (03, token[2]) only. There is no file-level currency from the bank header.
E. Currency decimal map
Uses a hardcoded static map (same style as Truist BAI2). Unknown currencies default to 0 decimal places.
F. No configuration for FX or bank charges
BAI3 has no configurable parameters for exchange rate or bank charge extraction.
Record parsing
02 – Bank Header: Bank ID, as-of date
03 – Account Header: Account number, currency, sign
16 – Transaction Detail: Detail type code, amount, fund type, refs, inline text
88 – Continuation: Additional narrative appended to inline text
What is parsed: All BAI2 fields plus inline text on the 16, record itself
What is not parsed: Negative-amount transactions, file version header, FX rates, bank charges