OFX, QFX, QBO and QIF: Which Format Does Your Software Want?
Four formats, three of them nearly identical, and picking the wrong one gets your file rejected with no useful error. What each is, which software takes which, and the one tag that decides it.
Your bank offers a download. The menu says OFX, or QFX, or QBO, or QIF, and your accounting software wants one specific one of those. Pick wrong and you get an error that does not tell you what is wrong.
Here is the part nobody explains: three of these four are the same format. OFX, QFX and QBO are one specification with different labels, and the entire difference between them is a handful of characters near the top of the file.
The short answer
| Your software | Ask for | If it is not offered |
|---|---|---|
| QuickBooks Online | QBO | Convert from CSV or OFX |
| QuickBooks Desktop | QBO, or IIF | QBO for bank feeds, IIF to post directly |
| Quicken | QFX | Convert from OFX — Quicken refuses plain OFX |
| Xero | CSV or OFX | Either is well supported |
| GnuCash | OFX (plain) | It may refuse a QFX carrying Intuit tags |
| MYOB | QIF | Convert from anything |
| Sage | CSV or OFX | Check which your version takes |
| TallyPrime | XML | Nothing else imports as vouchers |
| A spreadsheet | CSV or Excel | Never a ledger format |
OFX is the actual format
Open Financial Exchange is an open specification from the late 1990s. It describes a statement: an account, a date range, a list of transactions, a closing balance. Everything else on this page is OFX wearing a hat.
There are two versions in the wild and they look nothing alike. OFX 1.x is SGML — a format where tags open and never close:
`<STMTTRN><TRNTYPE>DEBIT<DTPOSTED>20240301<TRNAMT>-42.50<NAME>TESCO</STMTTRN>`
OFX 2.x is proper XML and closes everything. This matters more than it sounds: most QFX and QBO files banks hand out today are still the 1.x SGML form, and an XML parser refuses them outright. If you have ever fed a QFX to a tool that said it was malformed, this is usually why — the file is fine, the tool was reading it as XML.
QFX is OFX plus one tag, for Quicken
Intuit added their own extensions. The one that matters is `<INTU.BID>` — a bank identifier that names the institution the file came from.
Quicken checks for it before it looks at a single transaction. Without it you get the file is not a valid Web Connect file, whatever was actually wrong. This is why you cannot simply rename an .ofx to .qfx and have it work.
QBO is the same again, for QuickBooks
QBO — QuickBooks Web Connect — is OFX 1.0.2 with the same Intuit extensions. A QBO and a QFX are close to byte-identical. What differs is which product is expected to open it and, in practice, which bank id is inside.
That bank id is worth taking seriously. It identifies the issuing institution, and a file carrying a real one from your actual bank behaves differently in QuickBooks from one carrying a generic placeholder. If you convert a file that already has a real `<INTU.BID>`, that id should survive the conversion. Overwriting it with a generic value is a common way for a converter to turn a file QuickBooks would have accepted into one it refuses — which is why our OFX to QBO and QFX to QBO converters carry the source file's own id across rather than stamping ours over it.
QIF is the odd one out, and much older
Quicken Interchange Format predates the others and shares nothing with them. It is line-based plain text: one letter per field, a caret to end each record.
It is simultaneously the least capable and the most widely accepted format here. When a package documents no import format at all, QIF is usually the one it turns out to read — MYOB takes it, older Quicken takes it, and a long tail of software takes nothing else.
What about IIF?
IIF is Intuit's other format, for QuickBooks Desktop, and it does a different job. A QBO arrives through the bank feed and waits for you to approve each transaction. An IIF posts directly into the ledger.
It is tab-delimited, and the tabs are structural — a tab inside a payee name silently shifts every field after it along by one, so your memo gets imported as the amount. It also names its own columns inline on lines beginning with `!`, and the order varies between files, so anything reading one has to map by name rather than counting across.
Picking one, in order
- Ask your software, not your bank Whatever your accounting package's import screen lists is the answer. The bank's download menu is a list of what it can produce, not what you need.
- If your bank offers it, take it directly A file straight from the bank needs no conversion and carries its own real bank id.
- If not, convert from the closest thing OFX to QBO and QFX to QBO are near-identical files, so nothing is interpreted. CSV to anything involves more work and more places to be wrong.
- Check the first import before doing twelve months Import one month, open the register, and compare a handful of transactions against the statement. Then do the rest.
Frequently asked questions
Can I just rename a .ofx file to .qfx?
No. Quicken checks for the <INTU.BID> tag inside the file, not the extension. A renamed OFX has no such tag and is refused. Use OFX to QFX instead, which adds what Quicken needs.
Is QBO the same as a QuickBooks company file?
No, and the name collision causes real confusion. A .qbo is a Web Connect statement file. A .qbw is your company file. They are unrelated.
Which format keeps the most detail?
The OFX family. It carries payee, memo, cheque number, transaction type and a unique id per transaction. QIF carries less; CSV carries whatever columns the exporter chose.
My bank only offers CSV. What now?
Convert it. CSV to QBO, CSV to QFX, CSV to QIF and CSV to OFX all start from the file you have.
Convert a statement now
Convert a bank statement PDF to Excel, or see every format. More in the guides.