Get a bank statement into QuickBooks when there is no feed
Upload the PDF, get a clean CSV you can upload to QuickBooks. Any bank, any language, scanned or digital — with every row checked against the statement’s own balances before you download it.
5 free conversions, no signup, no credit card.
First, the thing most tools won’t tell you: we don’t make .qbo files
If you searched for “PDF to QBO”, you deserve a straight answer before you spend time here. A native QuickBooks Web Connect .qbo file carries an institution identifier that Intuit issues to banks and licensed providers. We are neither, so we don’t generate one, and we don’t call any of our exports “QuickBooks verified”.
We export a standards OFX 1.0.2 document — the format Quicken and GnuCash read. For QuickBooks we don’t promise it: an unsigned OFX may be rejected, and we haven’t verified that path ourselves.
What does work: CSV. QuickBooks accepts a bank transaction upload where you map the columns during import. That is the path this page is about, and the file we hand you is checked before you get it.
When the bank feed isn’t an option
A feed handles the easy months. These are the ones it doesn’t.
The bank won’t connect
Small banks and credit unions frequently have no working QuickBooks feed at all. A PDF statement is what you get.
The history is too old
Feeds reach back a limited window. A catch-up year, a first-year cleanup or a closed account leaves PDFs only.
One PDF, several accounts
On US-style bundled statements we tag each row with its account and reconcile every account separately — and if one account can’t be verified, the whole statement is flagged.
How it works
Upload the PDF
Drag in the statement — digital, scanned or photographed. No bank to pick from a list, no template to configure first.
We extract, then check the extraction
We parse the statement — and where the layout isn’t one we already handle, an AI pass reads it directly. Either way the reconciliation gate then re-derives the running balance and confirms each row agrees with the statement’s own figures.
Review the preview
You see the rows and the reconciliation result before anything downloads. Anything that didn’t reconcile is marked, not hidden.
Download the CSV and upload it to QuickBooks
Export as CSV, then use QuickBooks’ own bank transaction upload and map the columns as part of that flow. The file is yours — we never touch your QuickBooks account.
Why the numbers can be trusted
Reconciled, not guessed
The risk with any AI extraction is output that looks right and isn’t — and a wrong figure uploaded into QuickBooks surfaces weeks later as a reconciliation that won’t close. So every row is checked against the statement’s own running balance: balance + previous amount = previous balance. If any row fails, the download is marked UNVERIFIED in the filename and carries a warning line inside the file.
A scan must also match a printed opening or closing balance, not just chain internally.
On US-style bundled statements every sub-account must reconcile on its own. One account we can’t verify fails the whole file — the gate never blesses a ledger it couldn’t check.
Never written to disk. API, database and the AI step all run in the EU.
CSV cells starting with = + - @ are neutralised, so a client’s statement can’t execute as a formula.
On our reference statement — a real 743-transaction Handelsbanken PDF — all 742 balance checks pass. That is one statement’s result, not an accuracy rate for every bank, and we would rather show you the preview than ask you to take a number on faith.
Questions
Do you produce a .qbo file?
No, and we would rather lose the click than imply otherwise. A native QuickBooks Web Connect .qbo carries an Intuit-issued institution identifier that only a bank or a licensed provider can put in it. We are neither, so we do not generate .qbo files and we do not describe any of our exports as QuickBooks-verified. What we give you is a clean CSV, which QuickBooks accepts as a bank transaction upload where you map the columns during import.
You export OFX — will that import into QuickBooks?
We export a standards OFX 1.0.2 document — the format Quicken and GnuCash read. We are not going to tell you it works in QuickBooks, because we have not verified that ourselves and QuickBooks may reject an unsigned OFX file. Use the CSV for QuickBooks. If OFX happens to work in your setup, that is a bonus we did not sell you.
Does this connect to my QuickBooks account?
No. There is no QuickBooks integration and no bank feed. You upload a PDF, we return a file, and you upload that file to QuickBooks yourself. Nothing we run ever touches your QuickBooks account.
What file formats do I get?
Excel (.xlsx) and CSV on the free tier. JSON, OFX and a Fortnox-style CSV are Pro. For QuickBooks, CSV is the one you want.
How do you know the numbers are right?
Every extracted row is checked against the statement’s own running balance: each balance, plus the previous amount, must equal the previous balance. If any row fails, the download is marked UNVERIFIED in the filename and carries a warning line inside the file — never handed over as if it were clean. On our reference statement, a real 743-transaction Handelsbanken PDF, all 742 balance checks pass. That is one statement’s result, not an accuracy rate for every bank.
My bank has no QuickBooks feed. Will this work?
That is the main reason people are here. We do not work from a list of supported banks: where a statement’s layout isn’t one we already handle, an AI extraction pass reads it directly, so a small bank, a credit union or a foreign bank is the normal case rather than an exception.
Will it read a scanned or photographed statement?
Yes, and scans are held to a stricter standard than digital PDFs. A scan goes through the same reconciliation check, and on top of that we require a printed opening or closing balance to anchor it — a scan that merely chains internally, with no printed endpoint to check against, is marked as needing verification rather than passed. A scan’s text layer can hide dropped rows at the end, and internal consistency alone would not catch that.
Can I get the rows oldest-first?
Yes, and it is exact rather than a date sort — we reverse the statement’s own order, which preserves the sequence within a day that a date sort would scramble.
Try it on a real statement
Five free conversions, no signup. Check the reconciliation preview before you download anything.
Using Xero instead? Bank statement to Xero