Convert a Bank Statement PDF to QBO
Drop in a statement PDF and get a .qbo file back, with a balance check that proves nothing was dropped.
No sign-up needed. A PDF is read on our server, never stored.
- PDF, CSV, Excel and the OFX family are all read, and which one you have is taken from what is inside the file rather than its name
- Only a PDF is read on our server, held in memory and dropped when the request ends. Every other format is read in this browser tab
- No account and no card, a handful of PDFs an hour, and no limit at all on the rest
A .qbo file is Web Connect: an OFX 1.0.2 document carrying an Intuit institution identifier. It is what a bank hands over when it offers a direct download. It is also exactly what you do not have when your bank offers a PDF and nothing else, which is most of the reason this page exists.
Whatever you were given is read here. A PDF, a CSV, an .xlsx workbook, or one of the OFX-family files (.ofx, .qfx or .qbo) all become the same list of transactions, and that list is written back out as a .qbo. Nothing needs choosing first. The format is worked out from what is inside the file, not the name on the end of it. Banks are careless about extensions, and a CSV called .txt is a weekly occurrence.
The institution identifier is the part worth understanding, because it is about your bank rather than your statement. Every .qbo names the institution it claims to have come from, and the value is specific rather than generic. The bank pages on this site carry the number read by hand from Intuit's own directory. Roughly three in five banks in that directory publish no downloadable statement file at all. Where a bank has no valid identifier, the file is written without the tag rather than with somebody else's.
Every transaction is also given an id of its own. That sounds like housekeeping until two identical charges land on the same day. Software that recognises transactions by their id can then treat the second as a copy of the first and drop it without saying so. Same-day duplicates are given distinct ids here, which is the difference between a statement that arrives whole and one that arrives a coffee short.
One of the inputs leaves your machine and the rest do not. Reading a PDF needs a parser too large to hand to a browser, and a scanned statement has to be looked at rather than parsed. So a PDF goes to our server, is held in memory while it is read, and is dropped when the request ends. It is never written to disk and never stored. A CSV, a workbook or an OFX file is read in this browser tab and goes nowhere. Whichever arrived, the balance check runs before anything is downloaded.
New to the format? Read what a QBO file is. It covers what is inside one, and what it cannot tell you.
A converter that tells you when it missed something.
Most tools hand you a file and let you find out in your ledger. Every conversion here is reconciled against the closing figure first. That figure is read from your statement’s balance column, or typed in from the page when there isn’t one.
When the totals don’t meet you get the exact size of the gap, every row that did read, and the converted file anyway.
Sample balance check
A transaction may be missing. Review the rows below, or re-upload including all pages.
A sample result. This is the same component the converter uses.
Your statement is read, not kept
Reading a PDF needs a server. Here is exactly what happens on it.
The PDF is held in memory while it is read, then dropped when the request ends. It is never written to disk and never stored. There is no copy to delete, lose or be compelled to produce.
Open your browser's network tab and convert. You will see one request, to this site, and nothing after it. The transactions come back as text. The file you download is written here, in this tab.
PDF is the only one that leaves. A CSV or a spreadsheet from the same bank is converted in your browser and never crosses the network. Take that instead when your bank offers both.
Questions people actually ask
Does my statement get uploaded?
Only if it is a PDF. Reading one needs a parser far too large to send to your browser. A scanned statement is a picture of a page, so it has to be looked at rather than parsed. It goes to our server, is held in memory while it is read, and is discarded when the request finishes. It is never written to disk and never stored, so there is no copy to delete afterwards. Every other format this page takes, CSV, Excel, .ofx, .qfx and .qbo, is converted inside this browser tab and never crosses the network. Open your browser's network tab while you convert one and you will see that for yourself.
What can I actually drop in?
A PDF, a CSV, an .xlsx spreadsheet, or an .ofx, .qfx or .qbo file. Which one you have is worked out from the contents rather than the extension. That matters because banks are careless about naming. A CSV arrives called .txt often enough, and the three OFX extensions are used interchangeably for the same document. If a layout cannot be read automatically, you are shown the file and asked to point at the date, amount and description columns yourself.
What is a .qbo file?
An OFX 1.0.2 SGML document with an Intuit institution identifier attached, the format usually called Web Connect. Inside is a list of transactions, each with a date, an amount, a description and a unique id, wrapped in a statement period and a ledger balance. A .qfx is the same document registered against a different product. A plain .ofx is the same document with no vendor identifier at all.
Will the file be accepted by my accounting software?
That is not something we are able to promise, and saying so plainly is better than implying otherwise. A .qbo is taken or refused on the institution identifier it carries. The values used here were read by hand from Intuit's published directory, but we have not put them through a real installation. What this page can stand behind is the part it controls: the transactions are complete, the arithmetic is reconciled against your closing balance, and the document is valid OFX 1.0.2. If a file is refused, start from the bank pages on this site. Choosing the page for your own bank is the single thing most likely to change the outcome, because it changes the identifier.
What are FITIDs, and why do they matter?
A FITID is the unique id carried by each transaction. Importers use them to recognise entries they have already seen, which is what stops the same statement being brought in twice. The failure worth knowing about is the opposite one. When two genuine transactions share an id, say two identical charges on the same day, the second can be discarded as a duplicate of the first. Every row here is given a distinct id, same-day duplicates included.
Does it read scanned or photographed statements?
Yes. A PDF either carries its own text or is an image of a page. Where there is text, only that text is read. Where there is not, as with a scan, a photograph or a fax, the pages are read as images instead. You are told which of the two happened. They are not equally exact, and you should know which one you are checking.
How do I know every transaction came through?
Check the balance panel above the results. If your statement prints a running balance, the opening and closing figures are taken from it and every step is reconciled against the transactions. A row that went missing breaks the chain and is reported as a figure rather than passed on quietly. Where a statement prints no running balance there is nothing to check against on its own. Type the opening and closing figures in from it and the same check runs.
Do I need an account?
No. There is no sign-up, no email capture and no card. PDFs are capped at a handful an hour, because reading one costs something to run. Every other format is converted in your browser and has no limit.
Try it on the statement that’s annoying you right now.
No account, no card, no limit. If the layout isn’t recognised you will know immediately, rather than after a support ticket.