Skip to content
StatementSmith
Bank statement converter

Convert a Bank Statement PDF to OFX

Drop in a statement PDF and get an .ofx back, with a balance check that proves nothing was dropped.

No sign-up needed. A PDF is read on our server, never stored.

OFX is the open interchange format that .qbo and .qfx are both built on, and the one to ask for when your software is not part of the Intuit family. Banks hand it over readily in Europe and Australia. What they hand over in most other cases is a PDF, a document meant to be looked at rather than parsed, carrying no transaction list anything can read.

This page bridges that. The statement is read and the transactions are pulled out of it. What comes back is plain OFX 1.0.2 with no vendor-specific tags: a date, a description, an amount and a unique id per transaction, wrapped in a statement period and a ledger balance.

A PDF is not the only thing it takes. A CSV, an .xlsx workbook and the OFX-family files are all read here too, and which one you have is worked out from the contents rather than the extension. If your bank offers a CSV alongside the PDF it is the better file to bring, for the reason in the next paragraph.

One of those 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. Where the statement prints a running balance every step is reconciled against it; where it does not, you can type the opening and closing figures in from the page. Reading a statement off a PDF can drop a row, and that check is what turns a silent loss into a figure on screen.

New to the format? Read what an OFX file is. It covers what is inside one, and what it cannot tell you.

Balance validation

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

Closing balance is 240.18 short

A transaction may be missing. Review the rows below, or re-upload including all pages.

Opening4,210.11
Rows total1,154.46
Computed5,364.57
Statement says5,604.75

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.

Read, then dropped

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.

One request, and you can watch it

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.

Every other format stays put

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.

Should I choose OFX, QBO or QFX?

Pick the one your accounting software asks for by name. All three carry the same transactions. OFX omits the Intuit institution tag that the other two include, which is what you want when the software reading it is not from Intuit. If you are unsure, convert once and download more than one. It costs nothing and takes a second.

Where does the closing balance in the file come from?

From your statement, where there is one to take it from. An OFX document states a ledger balance. The figure written here is the one read off your statement's balance column, or the one you typed into the check above the results. If neither exists, with no balance column on the PDF and nothing typed in, the file falls back to the net of the transactions it contains. That figure is still correct arithmetic, but it is derived from the rows rather than checked against them. It cannot disagree with them, so it is not evidence that nothing went missing. Typing the closing figure off your statement turns it back into evidence, and it takes a moment.

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.

Convert a statement