QBO File Format Explained: OFX Structure and the INTU.BID Tag
Jul 20, 2026
Convert your bank statement to Excel now
PDF, JPG, PNG, BMP, HEIC, TIFF, MT940
Upload your bank statement
Drop file here or click to upload
PDF, JPG, PNG, BMP, HEIC, TIFF, MT940
Uploading...
Last updated July 2026.
A QBO file is Intuit's QuickBooks Web Connect version of an OFX file. It is a plain-text file built from a short header block followed by SGML markup that carries a sign-on section, the bank account details, and a list of transactions, each wrapped in a STMTTRN tag. What makes a .qbo different from a plain .ofx is a pair of Intuit-specific tags, INTU.BID and INTU.USERID, that QuickBooks checks before it will accept the file. Learn the header, the transaction tags, and those two Intuit tags and a QBO file reads cleanly and maps straight into spreadsheet columns.
QBO stands for QuickBooks Web Connect. Banks that support Web Connect let you download a .qbo file that imports transactions into QuickBooks in a few clicks, no live bank feed required. If your bank only gives you a PDF, the bank statement to QBO converter builds a Web Connect file with the right tags. This guide explains the structure so you can read and check the file yourself.
QBO is OFX with two Intuit tags added
Internally, a QBO file is almost identical to an OFX file. Both follow the OFX 1.x SGML specification, both open with the same header lines, and both wrap each transaction in the same STMTTRN block with the same amount, date, and ID tags. The difference is that a QBO file adds an Intuit financial-institution section so QuickBooks knows the file is meant for it and can match the bank. Everything you already know about reading OFX carries over; the QBO-specific part is just those extra tags.
The header block
A QBO file starts with a block of colon-separated header lines in plain text, before any tags. They declare the format version and encoding.
| Header line | What it declares |
|---|---|
| OFXHEADER:100 | OFX header version |
| DATA:OFXSGML | The body is SGML, not XML |
| VERSION:102 | OFX message-set version (102 is typical for QBO) |
| SECURITY:NONE | No message-level security |
| ENCODING:USASCII | Character encoding |
If this preamble is missing or malformed, QuickBooks refuses the file before it even reads a transaction, which is why a hand-built OFX often fails until the header is corrected.
The Intuit tags: INTU.BID and INTU.USERID
Inside the sign-on section, a QBO file carries two tags a plain OFX file does not. These are what turn an OFX file into a QuickBooks-ready QBO file.
| Tag | Meaning |
|---|---|
| <INTU.BID> | Intuit Bank ID: a number identifying the financial institution. QuickBooks checks it against its list of Web Connect-enabled banks. |
| <INTU.USERID> | Intuit user ID associated with the download. |
The INTU.BID is the tag that trips people up. QuickBooks matches it against its internal list of institutions enabled for Web Connect, and if the number is missing or does not correspond to a supported bank, the import fails with a generic error even when the transactions themselves are perfect. Adding a valid INTU.BID is the usual fix, and it is the main thing a converter supplies that a raw bank OFX might not.
The transaction tags: STMTTRN
The transaction list lives in a bank-statement section, and each transaction is a STMTTRN block. These are the tags that become your spreadsheet columns.
| Tag | Field | Spreadsheet column |
|---|---|---|
| <TRNTYPE> | Type, such as DEBIT, CREDIT, CHECK, or POS | Type |
| <DTPOSTED> | Posted date, in YYYYMMDD form | Date |
| <TRNAMT> | Signed amount, negative for money out | Amount |
| <FITID> | Unique transaction ID the bank assigns | ID (duplicate check) |
| <NAME> or <PAYEE> | Payee or description | Description |
| <MEMO> | Extra detail | Memo |
The FITID is worth knowing about because it is how QuickBooks avoids importing the same transaction twice. Each transaction carries a unique FITID, and QuickBooks skips any FITID it has already seen, so re-importing an overlapping date range does not create duplicates.
A worked example mapped to Excel
Here is one transaction as it appears inside a QBO file:
<STMTTRN> <TRNTYPE>DEBIT <DTPOSTED>20260314 <TRNAMT>-85.40 <FITID>202603140001 <NAME>Comcast <MEMO>Internet </STMTTRN>
Mapped into a sheet, that is one row: date 03/14/2026 (from DTPOSTED, read YYYYMMDD), description Comcast, memo Internet, amount -85.40, and FITID 202603140001 kept in a column so you can spot duplicates. Every STMTTRN block becomes one row the same way, which is exactly the layout a spreadsheet or an accounting import wants. From there you can categorize the transactions and, once they are posted in QuickBooks, produce clean financial statements from the booked data.
Reading a QBO file or building one
You can open a QBO file in any text editor because the SGML is human-readable: look for the STMTTRN blocks to see the transactions and check the INTU.BID value in the sign-on section. To get the numbers into a spreadsheet, the QBO to CSV converter reads each STMTTRN into Date, Description, Amount, and FITID columns and returns a CSV or Excel file. Going the other way, from a bank statement PDF to an importable Web Connect file, the bank statement to QBO converter builds the header, the INTU.BID, and the STMTTRN list so QuickBooks accepts it. For every QuickBooks import path and its limits, see the QuickBooks bank statement converter.
QBO works for both QuickBooks Online and QuickBooks Desktop. If you are on Desktop and prefer a journal-style import with categories built in, the tab-separated IIF file format is the alternative, and the OFX vs QFX vs QBO comparison covers how the three related formats differ.
Ready to convert your bank statement?
Upload a PDF and get clean Excel or CSV in seconds. Works with statements from any bank.
Convert to Excel nowFree to try, no credit card required