neatstatement

Do you actually need a QBO file?

Small pale squares scattered across a dark surface, suggesting rows of data

Before converting anything, check which QuickBooks you are on. It decides the answer, and half the people looking for a CSV to QBO converter do not actually need one.

Which format your QuickBooks wants

Which format your accounting software needs QuickBooks Online takes CSV directly and needs no conversion. QuickBooks Desktop needs a QBO file. Quicken needs a QFX file. What are you importing into? QuickBooks Online QuickBooks Desktop Quicken Use CSV directly Banking, then Upload transactions. Convert nothing. Convert to .qbo CSV is not accepted for bank feeds. It never was. Convert to .qfx Same OFX base, different header. Renaming fails. Half the people searching for a CSV to QBO converter are on QuickBooks Online and do not need one.
Check which product you are on before converting anything. It is the difference between two minutes and an afternoon.
Product Takes CSV Takes QBO What to do
QuickBooks Online Yes, natively Yes Use CSV. Skip the conversion.
QuickBooks Desktop (US) No Yes Convert to QBO.
QuickBooks Desktop (UK, CA, AU) No Yes Convert to QBO.
QuickBooks Self-Employed Yes Yes Use CSV.
Quicken No QFX Convert to QFX, not QBO.

If you are on QuickBooks Online, stop here. Banking, then Upload transactions, then drop the CSV in and map the columns. You will spend less time than you would finding a converter. The CSV needs a date column, a description column, and either one amount column or separate debit and credit columns. That is the whole requirement.

The conversion is for QuickBooks Desktop, which has never accepted CSV for bank feeds and is not going to start.

What a QBO file actually is

QBO is Intuit’s flavour of OFX, an XML-ish format banks have used for financial data exchange since the late nineties. A QBO file for a single transaction looks roughly like this:

<STMTTRN>
  <TRNTYPE>DEBIT
  <DTPOSTED>20260812120000
  <TRNAMT>-42.18
  <FITID>20260812-3
  <NAME>WHOLE FOODS MKT
</STMTTRN>

Four of those fields matter to you.

TRNAMT is signed. Money out is negative, money in is positive. If your CSV has separate debit and credit columns, they have to be collapsed into one signed number, and getting the sign backwards on the debit column is the single most common way an import ends up mirrored.

DTPOSTED is a timestamp, not a date. QuickBooks reads the date portion and ignores the rest, which is why converters pad it with a fixed midday time.

FITID is the transaction’s unique ID, and it is the reason a good conversion matters. QuickBooks uses it to recognise a transaction it has already seen. Import the same file twice with stable FITIDs and the second import brings in nothing. Import it twice with regenerated FITIDs and you get every transaction duplicated.

NAME is capped at 32 characters in the spec. Longer descriptions get truncated. Some converters silently drop the overflow; better ones move it to a MEMO field.

The FI ID problem

Beyond the transactions, a QBO file carries a header identifying the bank that supposedly produced it: an <FID> and an <INTU.BID>. QuickBooks Desktop checks these against the account you are importing into.

This is where most failed imports come from. The error usually reads that the file is from a different financial institution than the account expects, and there is no obvious place to fix it.

Two ways through:

  1. Import into an account that has never been bound to a bank feed. A fresh account binds to whatever the first import claims, and then stays consistent.
  2. Match the ID to your bank. Converters that let you pick your institution set the right one for you. If yours does not, you are editing XML by hand, which works but is not a good use of an afternoon.

Getting from a statement PDF to QBO

Most people asking about CSV to QBO started with a PDF, converted it to CSV, and hit the QuickBooks wall. That is one step too many.

Our QuickBooks converter goes straight from the statement PDF to QBO. You pick the institution, the statement year, and the account type, and it writes the file with the right header and stable FITIDs derived from the transaction contents rather than from row order. That last part matters: FITIDs built from row numbers change if you reconvert, and then QuickBooks stops recognising duplicates.

The whole thing runs in your browser. Your statement is not uploaded anywhere, which is worth caring about given what is in it.

Before you import, check for duplicates

The most common accounting mess is not a failed import. It is a successful import of overlapping periods.

You export January to March, then March to May, and March exists in both. Stable FITIDs catch this, but only if both files came from the same converter with the same settings. Mixed sources, hand-edited files, or a bank export sitting alongside a converted PDF will slip through.

Run the merged file through the duplicate finder before importing. It flags rows matching on date, amount, and description. Two minutes there beats an afternoon of unpicking a reconciliation later.

Quicken, briefly

Quicken wants QFX, not QBO. Same underlying OFX structure, different header fields, and Quicken is stricter about them because QFX is tied to its paid Web Connect service.

Our converter emits both. Pick the one your software actually reads, because renaming the extension does not work.

Common questions

Is QBO the same as OFX?

QBO is Intuit's variant of OFX. The structure is nearly identical, but a QBO file carries Intuit-specific header fields that QuickBooks checks before it will import. An OFX file renamed to .qbo will usually be rejected.

Why does QuickBooks say my QBO file is from the wrong financial institution?

The file carries an FI ID and an INTU.BID identifying the bank that issued it. QuickBooks matches that against the account you are importing into. Import into the right account, or set up the account fresh and let QuickBooks bind it on the first import.

Can I convert a CSV to QBO for free?

Yes. Most tools that charge do so per file or per page. Ours is free and runs in your browser, which also means the file never leaves your machine, which matters more than the price when the file is a year of your transactions.