Convert a bank statement PDF to CSV

A CSV is the format every spreadsheet, script and accounting app can read, but a bank statement PDF only looks like a table. StmtSnap reads the PDF's columns, joins wrapped descriptions, drops the summary rows, checks the balances and gives you a CSV you can trust.

CSV and Excel are free. Text PDFs are converted in your browser, so the statement is not uploaded.

Convert now

Text PDFs are converted in this browser and never uploaded. Scanned PDFs are read by Google Gemini, and we ask first.

Before you convert: a text PDF stays on your device. If the PDF is a scan, we show a notice before any page is sent to Google Gemini, and scanned pages need a free account. Excel and CSV are free; Tally XML, QuickBooks QBO and Zoho CSV are on paid plans (pricing).

What's in the CSV

  • Date — ISO format (2026-04-03), the same on every computer
  • Description — the full narration, wrapped lines joined
  • Debit — money out, as a positive number
  • Credit — money in
  • Balance — the running balance where the statement prints one

How StmtSnap reads this layout

  • UTF-8 with a byte-order mark, so Excel opens ₹, £ and accented names correctly instead of showing garbled characters.
  • Description cells that start with =, +, - or @ are prefixed with an apostrophe, so a spreadsheet never runs a statement line as a formula.
  • Opening, closing, total and page-total rows are removed. Their values become the checks, not rows.
  • Statements printed newest-first are reversed as a whole, so the CSV always runs oldest to newest without reshuffling same-day rows.

Sample and balance check

A synthetic statement whose year-less rows cross from December into January, with trailing-minus negatives (100.00-). It is synthetic test data: no real bank, person or account, and the descriptions are random labels, so a payroll line can be a debit. The figures below are what the converter produced from it.

First rows read from the synthetic statement
DateDescriptionAmountBalance
2025-12-11ATM WITHDRAWAL SAMPLE ST-834.711375.69
2025-12-13BPAY EXAMPLE WATER 380356-600.87774.82
2025-12-15DIRECT CREDIT EXAMPLE PTY LTD PAY-434.06340.76
2025-12-16EFTPOS SAMPLE CAFE SYDNEY357.75698.51
2025-12-18OSKO TRANSFER FROM A TESTER966.561665.07

First 5 of 26 rows. Dates read day-first (settled by the dates themselves). Rows print no year, so the year came from the statement period.

verifiedVerified: the rows reproduce the printed closing balance from the opening balance.

Running balance, row to row
matches
Opening balance
matches
Closing balance
matches
Printed transaction count
not printed on the statement
Printed debit and credit totals
not printed on the statement

Printed opening 2210.40, printed closing 3622.94.

How to convert

  1. Download the statement PDF from your bank (the statement itself, not a printed web page).
  2. Open it in StmtSnap. Type the password if the PDF has one.
  3. Read the balance result under the table.
  4. Download the CSV.

Why ISO dates? A bank statement CSV with 03/04/2026 means 3 April in London and March 4 in New York, and Excel decides based on the computer's settings, not the file. 2026-04-03 means one thing everywhere.

Why debit and credit columns rather than one signed amount? Most import screens (Zoho Books, Xero, FreeAgent) map a pair of columns more reliably than a sign. If you prefer a signed amount, Credit minus Debit gives it in one formula.

Questions

Is the CSV converter free?
Yes. CSV and Excel are on the free plan; see pricing for page limits.
Is my statement uploaded?
A text PDF is converted in your browser and is not uploaded. A scanned PDF needs the scanned-page service; you are asked first, and it needs a free account.
Will Excel open the CSV correctly?
Yes. It is UTF-8 with a byte-order mark and ISO dates, so characters and dates come through on any regional setting.
Which banks are supported?
Any bank whose statement is a text PDF with a column header naming a date column and at least one money column (Debit/Credit, Withdrawal/Deposit, a single Amount, or Balance). A scanned PDF has no text to read, so it goes through the scanned-page path instead: you see a notice first, and it needs a free account.
What if the CSV doesn't match my statement?
You will normally know before you download: the result shows a mismatch when the rows do not add up to the printed balances. Email us the layout with the numbers blanked out.

Reference: OWASP — CSV injection

Comparing converters?

Related converters