Skip to content
StatementSmith
Bank statement converter

Convert a bank statement PDF to CSV

Drop in a statement PDF and get a CSV back, with a balance check that shows you if a row went missing on the way.

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

A PDF is the format banks are happiest to give you and the one nothing else will take. It is a document meant to be looked at, not read by a machine. That is why a statement that is perfectly legible on screen turns into nothing usable in a spreadsheet.

This page reads it and hands back a CSV: a date, a description and an amount for every transaction, plus the running balance where the statement printed one. From there the same page will write any of the other formats, all of them produced in your browser from the transactions you can see on screen.

What it will not do is read a PDF that is not a bank statement. The output is a transaction table, and finding those columns means reading the layout a statement uses. An invoice, a payslip or a report is a different document with a different structure, and a general-purpose PDF table extractor is the right thing to reach for there. This page is built for statements and says so here rather than letting you find out after the file has gone.

Reading a PDF is also the one thing this site does not do in your browser. It needs a parser too large to hand to a browser, and a scanned statement has to be looked at rather than parsed. So the file 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. If your bank will also give you a CSV or a spreadsheet, those are converted without leaving your machine, and they are the better choice when you have one.

New to the format? Read what varies in a bank statement CSV. 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

Will it convert any PDF, or only a bank statement?

Only a bank statement. What comes back is a transaction table: a date, a description, an amount, and a running balance where the statement printed one. Finding those columns means reading the layout a statement uses. An invoice, a payslip or a report in a PDF has none of that structure, so this page will not give you anything useful for one. A general-purpose PDF table extractor is the better tool for those.

Does my PDF get uploaded?

Yes, and a PDF is the only file on this site that this is true of. 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. The file 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 on this site is converted in your browser and never crosses the network.

Can I convert a statement without sending it anywhere?

Usually, yes. Most banks offer CSV or Excel from the same screen that gave you the PDF. Those are converted entirely in your browser. Nothing is uploaded, and you can confirm that in your browser's network tab. If the PDF is all you have, because the account is closed or the download window has passed, this page is here for that.

Does it read scanned or photographed statements?

Yes. A PDF either carries its own text or is an image of a page. If there is text, only that text is read. If 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 figures, and check the table. Reading a statement off a page can miss a row. That is why every conversion shows a balance check 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 that chain and is reported as a figure rather than passed on quietly. Where a statement prints no balance, 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 us something to run. Every other format is converted in your browser and has no limit.

What comes back?

A CSV with a date, a description and an amount for every transaction, plus a running balance column where the statement had one. Money out is negative and money in is positive. From there you can download it as CSV, or pick any of the other formats on the page. All of them are written in your browser from the same transactions.

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