ZeroParse
HomeHelp

Convert a PDF bank statement to CSV

Upload the PDF your bank gave you and download one clean CSV: one row per transaction, dates in a single format, amounts signed the way accounting software expects. It opens in Excel, Google Sheets or anything that reads CSV.

No AI. No Hallucinations. Just Deterministic Math.

How it works

  1. Upload the PDF

    Text-based PDFs are read from the page's own text layer. Scanned statements go through OCR. Several files at once are fine.

  2. Check it against the statement

    We add up the rows we found and compare them with the opening and closing balance, the column totals, or the running balance your statement prints. You see whether they match before you export, and which figure disagrees if they don't.

  3. Download the CSV

    Columns are Date, Description, Amount, Type, Category, Account and Source. Hide any you don't need before exporting. CSV export is included on every plan, including Free.

A staged file row for sample-statement.pdf reading “17 rows standardized” and “17 transactions reconcile against the statement’s printed opening (12,480.55) and closing (18,566.15) balances.”
Every file is checked against the totals the statement prints about itself, before you export.

What to know

No AI in the pipeline

Extraction is rule-based: the statement's text, the table's geometry and pattern-matching parsers. Nothing is guessed by a language model.

Nothing is kept

PDFs are processed in memory and discarded as soon as extraction finishes. CSV and Excel files never leave your browser.

What it costs

A PDF uses 1 credit per page. New accounts get 50 free PDF credits, no card required. CSV, Excel and OFX files are always free.

Common questions

How accurate is the extracted data?
PDF extraction uses each page's real text layer where available, with OCR as a fallback for scanned statements. CSV columns are auto-mapped to Date/Description/Amount from common header names — or, when a file's headers say nothing useful (some bank exports really do label their columns "Column 1" to "Column 7"), from the data itself. Both are best-effort: bank statement formats vary too much to guarantee perfect extraction, which is why every upload lands in an editable table where you can adjust the column mapping and deselect or delete any row before exporting. We also check our own work: after extraction, we compare the rows we found against the totals your statement prints about itself, and show you the result as a badge next to the file rather than asking you to just trust the table.
What does the badge on each file mean — "Matches statement totals", "Doesn't match statement", or "Verify against the statement"?
After extraction, we check whether the rows we found add up to what your statement says about itself — its opening and closing balance, its own column totals, or the running balance printed beside each row. "Matches statement totals" means they do, to the cent. The running balance is the most useful of the three when a file has one, because it is checked at every row rather than once at the end, so it can tell you which row something goes wrong at — and it catches a case the totals cannot: a file that is missing transactions whose amounts happen to cancel out. "Doesn't match statement" means they don't, and we show you exactly which figures disagree. "Verify against the statement" means your statement didn't print anything we could check against — no balances, no totals, no running balance — so we're telling you to eyeball it yourself rather than pretending it's fine. It's a common enough outcome that we publish the actual rate across our own test corpus on the benchmark page rather than asking you to take a number on trust. None of this is the same as an accountant reconciling your account against an independent record; it only checks that what we extracted is internally consistent with what your own statement says. Edit an amount or delete a row afterward and we re-run the same check automatically, so the badge always reflects what you're about to export — and because that recheck runs entirely in your browser, fixing a flagged row never sends anything back to our servers or creates a new copy of your data there.
How do credits work?
CSV and Excel parsing is free on every plan, since it happens locally in your browser — you only need credits for PDFs, which use 1 credit per page. New accounts start with 50 free PDF credits, and you can top up with a one-time Credit Pack or a Pro subscription.
What file types can I upload?
CSV, Excel (.xlsx/.xls), OFX/QFX, and PDF bank/credit card statements. CSV, Excel, and OFX/QFX are all parsed locally in your browser; PDFs are processed on our backend and use credits.

All questions and answers

Try it on your own statement: 50 free PDF credits

No card required. CSV, Excel and OFX files are free on every plan.