What is a .QBO file?
A .QBO file is a bank statement in Intuit's Web
Connect format. Underneath it is an OFX 1.x document — tagged plain
text, not XML — with two extra Intuit fields in the header that tell QuickBooks which
bank the file came from. It holds a list of transactions and a closing balance. That is all it
holds.
🔒 Open or create one here — read a
.QBO into a spreadsheet, or turn a CSV, Excel or PDF statement into one. Free,
runs in your browser, nothing uploaded.
A real one, in full
Most explanations of this format describe it without showing it. Here is a complete, valid
.QBO, produced by this site's own writer and shortened only by cutting three of
its five transactions. The data is synthetic — a test fixture, not anyone's statement.
OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:NONE
<OFX>
<SIGNONMSGSRSV1>
<SONRS>
<STATUS>
<CODE>0
<SEVERITY>INFO
</STATUS>
<DTSERVER>20261030063658
<LANGUAGE>ENG
<FI>
<ORG>Test Bank
<FID>3000
</FI>
<INTU.BID>3000
</SONRS>
</SIGNONMSGSRSV1>
<BANKMSGSRSV1>
<STMTTRNRS>
<TRNUID>1
<STATUS>
<CODE>0
<SEVERITY>INFO
</STATUS>
<STMTRS>
<CURDEF>USD
<BANKACCTFROM>
<BANKID>000000000
<ACCTID>000000001
<ACCTTYPE>CHECKING
</BANKACCTFROM>
<BANKTRANLIST>
<DTSTART>20260401
<DTEND>20260428
<STMTTRN>
<TRNTYPE>DEBIT
<DTPOSTED>20260401
<TRNAMT>-82.40
<FITID>202604012OR98M
<NAME>DIRECT DEBIT ACME LTD REFERENCE
<MEMO>DIRECT DEBIT ACME LTD REFERENCE 889912334455
</STMTTRN>
<STMTTRN>
<TRNTYPE>CREDIT
<DTPOSTED>20260402
<TRNAMT>2000.00
<FITID>20260402QQ5ETD
<NAME>SALARY PAYMENT APRIL
</STMTTRN>
</BANKTRANLIST>
<LEDGERBAL>
<BALAMT>0.00
<DTASOF>20260428
</LEDGERBAL>
</STMTRS>
</STMTTRNRS>
</BANKMSGSRSV1>
</OFX>
It is not XML, and that is why your parser fails
Look at <TRNAMT>-82.40. There is no </TRNAMT>. OFX
1.x is SGML, and in SGML a tag holding a value does not need closing — only
the container tags (<STMTTRN>, <OFX>) are closed. Hand
this to an XML parser and it will reject the whole document as malformed, which is the single
most common reason people conclude the file is corrupt when it is perfectly fine. OFX 2.x
is real XML; Web Connect files are 1.x, as the VERSION:102 header line
says.
The practical consequence: a .QBO can be read with a text editor and edited
by hand, but it cannot be loaded by anything that insists on well-formed XML.
The header block
The nine colon-separated lines before <OFX> are not XML either; they are
a fixed preamble. The two that matter are DATA:OFXSGML and
VERSION:102, which together declare the dialect everything after them is written
in.
The institution block: the two numbers that decide everything
Inside <SONRS> sit the fields that make this a QuickBooks file
rather than a generic OFX one:
<ORG>— the institution's name as the directory lists it.<FID>— its numeric id.<INTU.BID>— Intuit's own bank id. TheINTU.prefix is the giveaway: this field is an Intuit extension to the OFX spec, and its presence is largely what distinguishes a.QBOfrom a plain.OFX.
Get these wrong and QuickBooks refuses the import with “cannot verify the financial institution” — the file's transactions are never even looked at. The codes for 8,448 institutions are on the FID and INTU.BID lookup, and that error has its own guide.
A transaction, field by field
Each <STMTTRN> is one line on your statement:
<TRNTYPE>—DEBITorCREDIT, among others. It is a label; the sign on the amount is what actually counts.<DTPOSTED>— the posting date asYYYYMMDD. Unambiguous, unlike the day-versus-month guessing a CSV forces. Dates importing wrongly is almost always a CSV problem, not a QBO one.<TRNAMT>— the amount, negative for money out. A full stop for the decimal, no thousands separators.<FITID>— the unique id. See below; it matters more than it looks.<NAME>— the payee, capped at 32 characters by the spec, which is why the first transaction above is truncated.<MEMO>— the longer description. Note that it carries the full text the<NAME>had to cut.
Ampersands are escaped as &, as in a transaction reading
CARD PURCHASE M&S SIMPLY FOOD. An unescaped & is one of
the few things that will genuinely break a file.
FITID: the field behind the most confusing QuickBooks message
The <FITID> is the bank's unique id for a transaction. QuickBooks keeps
every FITID it has ever imported and silently skips any it recognises, then reports
“Nothing imported. This account is up to date.” So re-importing the same
file deliberately does nothing — which looks exactly like a bug and is not one.
The full explanation is here.
What a .QBO does not contain
No chart of accounts, no categories, no splits, no attachments, no invoices, no customers.
A bank file carries what the bank knows: dates, amounts, descriptions, types, and the balance
in <LEDGERBAL>. No converter can produce the rest from it, and any tool
claiming otherwise is guessing at your bookkeeping.
.QBO, .OFX, .QFX — the difference in one line each
- .OFX — the open format. Same structure, no Intuit fields.
- .QBO — OFX plus
FIDandINTU.BID, for QuickBooks. - .QFX — the Quicken equivalent, with Quicken's own id fields.
A fuller comparison, including QIF and CSV, covers which one to ask your bank for.
Reading one, and making one
To read a .QBO, the practical route is to
convert it to CSV and open that in a spreadsheet — a
text editor shows you the raw tags, which is rarely what you wanted. To make one from
a statement your bank gave you as CSV, Excel or PDF, that is
the other direction, and the institution codes get
written for you.
Sources
- The example above was produced by this site's own OFX writer and is checked on every release against an independent third-party OFX parser.
- Field names and the 32-character
<NAME>cap are from the OFX 1.0.2 specification, published at ofx.net. - Intuit's institution directory, searchable — the source of
FIDandINTU.BIDvalues.