For anyone holding the PDF and needing the .QBO file

Bank statement to QBO. The Web Connect file is written after the balance chain has been walked, not before.

Every converter can emit a file called .QBO. What decides whether the import is usable is what the file claims: which institution, which account, which currency, and a transaction ID per row that QuickBooks can use to refuse a duplicate. Those four are read from the statement before a single row is written.

Drop a bank statement here

Or click to pick the file. It opens in the same page you would have used anyway — the balance chain starts re-adding on the next screen.

Three files free, 60 pages in total, no card needed. Paid plans are priced by the page — one page of the original is one page, up to 500 pages in a single file.

Dates on file: MM/DD/YYYY → written out as ISOCurrency: USD ($)No bank login, ever

QBO is an account identity with rows attached, not a spreadsheet format

A .QBO carries the institution ID, the routing number, the account, the currency and a transaction ID per line. A file that leaves those generic lands all your rows in a newly created account that you then have to fix by hand — and a file written without transaction IDs imports twice and doubles the ledger. Both failures look like success at the moment you click import.

What gets checked before you download

Every line below is arithmetic on the paper you sent — not a supplier's claim about how good its reading is. Where the arithmetic fails, you get the row and the exact difference, and the statement is not called balanced.

Institution and routing number from the page

When the statement prints its own routing number, that is what is written. When it does not, the bank is matched against our table (Chase, Bank of America, Wells Fargo, Citibank, Capital One, U.S. Bank) and the stored routing number is used. An unrecognised bank gets a generic identity, and the workspace says so instead of inventing one.

Checking, savings or credit card

The message type differs: a card statement is written as a credit-card message, not a bank message. Getting this wrong is the difference between an import that matches your account and one that does not.

One FITID per row

Each transaction ID is derived from date, amount and payee, so re-importing the same statement is rejected as a duplicate rather than appended.

The balance chain before the file exists

Opening + deposits − withdrawals = closing is recomputed row by row. Where it breaks you get the row, the page and the exact difference, and the statement is not called balanced.

Where a bank statement goes wrong quietly

None of these announce themselves. Each one produces a file that looks correct.

A generic institution ID

The file imports, the rows appear — in an account called something like Standard Financial Institution. The fix afterwards is manual and nobody notices until the reconciliation does not match.

No transaction IDs

Without a stable ID per row, importing the same file twice doubles the register, and QuickBooks has no way to tell you it happened.

Dates with no year

Some statements print 03/01 with the year only in the header. The year is taken from the statement period, and when it cannot be established the row is flagged rather than dated by assumption.

What we will not claim

We will not promise that your QuickBooks version accepts the file without a warning — we have not run your version, and the import screen owns its own rules. What we can tell you is exactly what the file claims and which rows failed the checks before it was written.

The same goes for the arithmetic: a clean run means the checks we ran found nothing to flag. It does not mean the document is correct — it means nothing in it failed the checks listed above.

How it runs

STEP 1

Upload the statement

A native PDF, a scan, or a phone photo of the bank statement. No bank connection, no credentials, nothing to authorise.

STEP 2

The ledger is rebuilt and walked

Rows are put back in the order the statement prints them, page furniture is removed, and the balance chain is re-added line by line.

STEP 3

Check the flags, then export

Anything that did not add up is listed first, with its page and exact difference. Then take the QuickBooks (.QBO) file, the other export shapes, and the review sheet.

What lands on your disk

  • The .XLSX register — one row per transaction, no merged cells, amounts as numbers
  • A Review sheet: who confirmed or corrected which cell, and what it said before
  • Plain CSV, Xero-shaped CSV, and QuickBooks .QBO with unique transaction IDs
  • A check report stating the rows printed, the rows exported, and every difference found
  • Every cell still clickable back to the page and region it was read from
  • Files are read, then destroyed — a second upload is a second read

Questions

QuickBooks Desktop or QuickBooks Online?+

Both accept a .QBO, through different screens. Desktop imports it from File → Utilities → Import → Web Connect; Online uploads it from the bank-transactions screen. The file is OFX Web Connect in either case.

Why not just export a CSV?+

A CSV has no institution, no account and no transaction ID. It is the right answer when something else is doing the matching; it is the wrong one when QuickBooks is meant to recognise duplicates and file the rows under the right account.

What if the statement does not balance?+

You still get the file, and you get the list of rows that failed first, with page and exact difference. Yellow means look at this — it does not mean we decided the row is wrong, and it does not mean we changed it.

What does it cost?+

Three files are free, 60 pages in total, with no card and no account needed to try. Paid plans are sold by the page — $19 a month buys 1,000 pages — and a page is one page of the original document.