LedgerDrop

QBO vs OFX vs QIF: which file your accounting software actually wants

Published 1 October 2026 · by Tekiba

Short answer: use the format your software names. QuickBooks Desktop's Web Connect takes QBO and nothing else. OFX is the open standard the other two grew from, and carries an ID for every transaction and a closing balance. QIF is the oldest and simplest: plain text, no IDs, no balance — which is why importing two overlapping QIF files can give you the same payment twice.

The three side by side

FormatWhat it isID per transactionClosing balance
OFXOpen Financial Exchange, a published specification. Version 2 is XML; version 1 is an older SGML form.Yes, FITIDYes, required
QBOIntuit's Web Connect file: OFX with Intuit's own additions, such as a bank identifier. Intuit does not publish the format.Yes, as OFXYes, as OFX
QIFQuicken Interchange Format, a line-by-line text file.NoNo

You may also see QFX offered beside OFX. YNAB's import guide puts the two together — “QFX and OFX files are options. Your bank may refer to these formats as 'Quicken' or 'Money' files.” — and this article does not go further than that about QFX.

OFX: the standard underneath

An OFX file names the account, lists the transactions between two dates, and states the balance at the end. The specification's documents, kept by the Internet Archive now that the consortium's site is gone, give each transaction an identifier and say that “FITIDs must be unique within the scope of an account”. That one field is what lets software recognise a transaction it has already imported.

The balance is not optional. A statement that prints neither a closing balance nor a running balance that is surely the last one cannot honestly be written as OFX, and LedgerDrop refuses rather than invent one: your software might set the account to it.

QBO: OFX for QuickBooks Desktop

Web Connect is how QuickBooks Desktop imports a file downloaded from a bank. Intuit's help page on fixing Web Connect import errors says to make sure the file “is a .qbo file, the only type Web Connect can read”. The same page lists a refusal that matters for any converted file: “QuickBooks is unable to verify the Financial Institution information for this download.” QuickBooks checks the bank a QBO names, and Intuit does not publish which it accepts, so a QBO that did not come from a bank may be refused however well it is made. Bank statement PDF to QBO without uploading goes through what LedgerDrop puts in one.

QIF: simple, and blind to duplicates

Intuit's own description of the format, Quicken Interchange Format (QIF) files, calls it “a specially formatted text (ASCII) file”. A bank account's file, as LedgerDrop writes it, looks like this:

!Type:Bank
D01/05/2026
T-42.10
PCard purchase - Lumen Stationery
^
D01/07/2026
T-14.60
PCard purchase - Thornbury Cafe
^

Each transaction is a date, an amount, perhaps a check number and a payee, ended by ^. There is no field for an ID and none for a balance. That makes QIF the format that can carry a statement OFX cannot — one with no closing balance — and it is why LedgerDrop still offers it when it refuses an OFX for want of one.

It also means an importer has nothing certain to recognise a transaction by. Import January to mid-February, then mid-February to March, and the rows in the overlap can arrive twice. A program may try to match them on date, amount and payee, or may not; two real coffees on one day look exactly like a duplicate, so no rule is right every time. An OFX or QBO from your bank carries the bank’s own FITID for each transaction, the same in both files. IDs made by a converter are another matter: see below.

How LedgerDrop builds its IDs

A converted statement has no bank-issued IDs, so LedgerDrop makes them from the row: its date, a short hash of the date, amount, description and check number, and a count for rows that are otherwise identical, such as two coffees on one day. Convert the same statement again with the same settings and every row gets the same ID, so a second import of the same file can be recognised. Two different statements that overlap are not covered: a description read differently gives a different ID. Whether it is skipped is up to your software; look at the first import before relying on it.

Convert a statement → The CSV is free for one statement of up to three pages; longer statements, and QBO, OFX and QIF, are LedgerDrop Pro, $39 once. The PDF stays in your browser either way.

Which to choose

QuickBooks Desktop: QBO, through Web Connect. If QuickBooks will not verify the bank, the refusal is QuickBooks's, and another file type is not a way round it for Web Connect.

YNAB: YNAB's file-based import guide says “CSV files are the recommended and preferred file format”, lists QFX and OFX as options, and lists QIF as well.

Anything else that reads OFX: OFX, for the IDs and the balance. QIF when the software asks for it, or when the statement printed no closing balance.

A spreadsheet: the CSV. It carries the rows and running balances as printed, and nothing needs to recognise anything.

What this will not tell you

Which formats QuickBooks Online accepts is not covered here: we have not checked Intuit's current help for it for this article, so check it before choosing. Nothing here is a promise that a particular program will accept a converted file; only importing one shows that.

Questions

Why does LedgerDrop refuse to write an OFX for some statements?

Because an OFX states a closing balance, and some statements print neither a closing balance nor a running balance that is surely the last; others print one that the rows do not add up to. LedgerDrop will not make one up or write one it knows is out. QIF carries no balance, so a statement that printed none can still be written as QIF. One whose rows do not add up is written as none of the three, only as the CSV, for you to check against the PDF.

Why did I get duplicate transactions after importing a QIF?

Because QIF has no transaction ID, so the importer cannot tell a transaction it already has from a new one with the same date and amount. Import files that do not overlap. A bank’s own OFX gives each transaction an ID software can recognise; the IDs LedgerDrop makes repeat only for the same statement converted again.

Can I convert a QIF into an OFX?

Not honestly without the statement. An OFX states a closing balance, and a QIF does not carry one. Convert the statement PDF itself, which prints the balance, to OFX instead.

Next: bank statement PDF to QBO without uploading, should debits be negative in a bank CSV?, and how to check a converted bank statement CSV for errors.