PDF bank statement to CSV converter
The fastest path from a statement PDF to data your tools can actually use — UTF-8, ISO dates, stable documented columns — with every row reviewed before you download.
The sample is a synthetic statement — no real bank, person, or account — and the excerpt shown is taken from that exact file, byte for byte.
date,description,debit,credit,signed_amount,balance,currency,source_page,review_status,validation_codes2026-05-01,BACS CLIENT PAYMENT HARWOOD DEVELOPMENTS INV 2041,0.00,8400.00,8400.00,12580.22,GBP,1,valid,2026-05-02,SUPPLIER PAYMENT ACME TIMBER WHOLESALE LTD,2340.00,0.00,-2340.00,10240.22,GBP,1,valid,2026-05-04,DIRECT DEBIT FLEETCOVER BUSINESS INSURANCE,186.40,0.00,-186.40,10053.82,GBP,1,valid,2026-05-05,STANDING ORDER UNIT 7 TRADE PARK RENT,1850.00,0.00,-1850.00,8203.82,GBP,1,valid,The first lines of the sample CSV — the header row is the documented column contract, stable across exports.
The exact columns, from the exact file.
A converter output you can build an import mapping on — every column stated, nothing to reverse-engineer.
- date
- ISO format (YYYY-MM-DD) — chosen specifically to survive Excel and Google Sheets locale auto-detection.
- debit · credit · signed_amount
- Debits and credits stay in separate magnitude columns, and signed_amount carries the single signed value (credits positive, debits negative). The convention is stated, so nothing needs guessing at import.
- balance · currency
- The running balance printed on the statement where available, and the ISO currency code on every row.
- source_page · review_status
- The statement page each row came from, and whether the row was reviewed, edited, or flagged — the review trail travels with the data.
- Encoding & delimiter
- UTF-8 (with BOM for Excel), comma-delimited, one header row.
- Formula-safe
- Text values that could be interpreted as spreadsheet formulas are escaped at export, so opening the file can’t execute anything.
Convert a PDF bank statement to CSV — with the checking done first.
Every row is extracted beside its source page and checked against the statement's balances before it becomes a line in the file.
| Date | Description | Amount | Source page |
|---|---|---|---|
| 4 May 2026 | DIRECT DEBIT FLEETCOVER BUSINESS INSURANCE | (£186.40) | 1 |
2026-05-04,DIRECT DEBIT FLEETCOVER BUSINESS INSURANCE,186.40,0.00,-186.40,10053.82,GBP,1,valid,If your spreadsheet mangles the file, it's usually one of these.
- Dates flip or break
- Locale auto-detection rewrites ambiguous dates. This export uses ISO dates, which both Excel and Google Sheets read unambiguously; if you need a specific display format, apply it after import.
- Leading zeros vanish
- Spreadsheets coerce reference-like values to numbers on open. Use your spreadsheet’s import/“get data” path and set text columns explicitly if a reference column matters to you.
- Everything lands in one column
- The delimiter is a comma. If your locale uses semicolons by default, choose comma in the import dialog.
- Importing into accounting tools
- The columns are stable and documented, so most tools can map them. If your tool expects a specific shape, the same reviewed rows also export as QuickBooks CSV, Xero CSV, Sage CSV, OFX, or QIF. Prefer a workbook? See bank statement to Excel.
About the CSV output
What columns does the CSV contain?
A documented, stable set: date (ISO format), description, debit, credit, signed amount, balance, currency, source page, and review notes.
What encoding and delimiter are used?
UTF-8, comma-delimited, with spreadsheet-formula protection so cell values cannot execute as formulas when opened.
How are debits and credits represented?
Separate debit and credit columns plus a signed amount column, with the sign convention documented on this page, so nothing needs guessing at import.
Why does my spreadsheet mangle CSV dates?
Locale auto-detection in the spreadsheet. The export uses ISO dates specifically to survive Excel and Google Sheets import.
Is the CSV safe to open directly?
Yes, values that could be interpreted as spreadsheet formulas are protected at export.
Can I import it into my accounting tool?
The columns are stable and documented, so most tools can map them. We don’t claim compatibility with named tools we haven’t verified.