QBOKit

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:

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:

Ampersands are escaped as &amp;, as in a transaction reading CARD PURCHASE M&amp;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

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

Related