Convert Bank Statement to CSV

Get a plain CSV from a bank statement PDF, ready for Excel, Google Sheets, a database or an accounting import. Upload the PDF below and download the file. 16 US, Canadian, UK and European banks are read by dedicated parsers, so the columns come out the same whichever bank you use.

Last updated October 2, 2026

Drop your bank statement here

PDF, up to 50 pages

The exact CSV layout

The file is plain UTF-8 text with a comma delimiter and one header line. Every bank produces the same five columns in the same order, so a script or an import template written once keeps working.

The exact CSV layout
ColumnFormatNotes
DateYYYY-MM-DDAlways ISO, whatever the statement prints (MM/DD, DD/MM/YYYY, DD.MM.YYYY)
Description"quoted text"Always wrapped in double quotes; embedded quotes are doubled
Amount-89.47Two decimals, a period as the decimal separator, no thousands separator, no currency symbol. Debits negative
Typedebit | creditMatches the sign of Amount
Balance5030.71Running balance in the same number format; empty when the statement has none

Illustrative rows (not a real statement)

Date,Description,Amount,Type,Balance
2026-03-01,"PAYROLL DEPOSIT",4250.00,credit,5120.18
2026-03-03,"AMAZON PURCHASE",-89.47,debit,5030.71

A description that starts with =, +, - or @ gets a leading apostrophe inside its quotes. That is a deliberate guard against spreadsheet formula injection: without it, a merchant name such as =HYPERLINK(...) would execute when the file is opened in Excel.

How to convert a bank statement PDF to CSV

  1. 01

    Download the statement PDF

    Save the statement from your online banking as a PDF. It needs to be the bank-generated, text-based file: a scan or a photo has no text for the parser to read.

  2. 02

    Upload the PDF on this page

    Drag it onto the upload box (20 MB maximum). The bank is identified from the PDF text and the matching parser takes over; credit card statements from several supported banks are handled too.

  3. 03

    Review the preview table

    The extracted rows appear before anything is downloaded, and previewing costs no pages. Spot-check a few rows and the closing balance against the PDF.

  4. 04

    Download the CSV

    Pick CSV and save the file. Downloads count against your allowance: 10 pages with no account, 50 pages per month on a free account.

Bank statement to CSV at a glance

ConvertStatement's bank statement to CSV converter reads a text-based PDF statement and writes a CSV with exactly five columns: Date, Description, Amount, Type and Balance. It supports 16 banks across the US, Canada, the UK and Europe, each with its own rule-based parser. Dates are always ISO 8601, amounts always use a period as the decimal separator with two decimals, debits are negative, and descriptions are quoted so commas inside them never break a row. European statements printed as 1.234,56 are normalised to 1234.56. You can preview every row before downloading, and previews do not use page allowance. Anyone can convert 10 pages without an account, and a free account adds 50 pages per month. The same upload also exports Excel, OFX and QBO, and files are processed in memory without being stored by default.

Opening the CSV without garbled columns

In Excel, double-clicking a CSV applies your regional list separator. In regions that use a semicolon as the separator, a comma-delimited file can land in a single column. Open it with Data > From Text/CSV instead and choose the comma delimiter and UTF-8 encoding.

The file is UTF-8 without a byte-order mark. Descriptions with accents or umlauts, which are common on N26, Deutsche Bank and ING statements, can look wrong if a program guesses the wrong encoding, so select UTF-8 explicitly when the import dialog offers it.

In Google Sheets use File > Import > Upload and keep automatic separator detection. Dates and amounts import as dates and numbers without any extra step.

Using the file in accounting software

CSV importers in accounting tools generally ask you to map columns during the import. The single signed Amount column maps directly to an amount field; if your tool wants separate money-in and money-out columns, a one-line formula on Amount or a filter on Type splits it. Check the importer's current template requirements, because they change between releases.

If you use QuickBooks, a QBO file goes through the bank-transaction upload instead of a column-mapping import, so the transactions land in the review queue ready to accept. See the PDF to QBO page for what that file contains.

European statements and decimal commas

Several European banks print amounts as 1.234,56, with a dot for thousands and a comma for decimals. The parser reads that convention and the CSV always writes 1234.56, so a decimal comma never ends up inside a comma-delimited file where it would split the amount into two fields.

Loading the CSV into a script or a database

Because every bank produces the same five columns in the same order, one loader works for all of them. In pandas, read_csv with parse_dates=["Date"] turns the ISO dates into datetimes, and Amount arrives as a float with debits negative, so a groupby on month and a sum gives net cash flow immediately.

For a database import, map Date to a date column, Amount to a numeric(12,2), and keep Type as text. Statements from different banks and currencies land in the same table; add a column for the bank or the currency yourself, because the file carries neither.

When a bank also offers its own CSV download of recent transactions, its column names and date format will differ from this layout. Use whichever covers your period, and convert the PDF when a statement is the only record you have.

Banks supported for CSV export (16)

How each bank prints its numbers, and what lands in the CSV. Whatever the statement uses, the file carries 1234.56-style amounts and ISO dates.

Banks supported for CSV export (16)
BankPrinted number formatIn the CSVCSV for this bank
Chase1,234.561234.56Chase to CSV
Bank of America1,234.561234.56Bank of America to CSV
Wells Fargo1,234.561234.56Wells Fargo to CSV
Capital One1,234.561234.56Capital One to CSV
Citi1,234.561234.56Citi to CSV
Barclays1,234.561234.56Barclays to CSV
Revolut1,234.561234.56Revolut to CSV
HSBC1,234.561234.56HSBC to CSV
N261,234.561234.56N26 to CSV
Deutsche Bank1.234,561234.56Deutsche Bank to CSV
U.S. Bank1,234.561234.56U.S. Bank to CSV
PNC1,234.561234.56PNC to CSV
TD Bank1,234.561234.56TD Bank to CSV
TD Canada1,234.561234.56TD Canada to CSV
ING1.234,561234.56ING to CSV
Santander1,234.561234.56Santander to CSV

Not listed? See every bank and request a new one →

Frequently asked questions

How do I convert a bank statement PDF to CSV?

Upload the statement PDF on this page, review the transaction preview, choose CSV and download. The bank is detected from the PDF, and the CSV has the same five columns for every bank.

Which columns does the CSV contain?

Date, Description, Amount, Type and Balance. Date is YYYY-MM-DD, Amount is signed with debits negative, Type is debit or credit, and Balance is the running balance when the statement prints one.

Why does my CSV open in a single column in Excel?

Your regional settings probably use a semicolon as the list separator, so Excel does not split on commas. Use Data > From Text/CSV, pick the comma delimiter and UTF-8 encoding, and the five columns appear.

Can I get debits and credits in separate columns?

Not directly: the file has one signed Amount column plus a Type column. Filter on Type, or use a formula such as =MAX(-C2,0) for money out and =MAX(C2,0) for money in, to split them in your spreadsheet.

Does it handle credit card statements?

Credit card statements from several supported banks are parsed, including Chase, Capital One, Citibank and Barclays. Check the bank page for the statement types it covers.

What does it cost to convert a statement to CSV?

Nothing for light use: 10 pages with no account, 50 a month with a free one. If you convert statements in volume, the $9 plan allows 300 pages a month. Looking at the preview never counts against any of these.

Does ConvertStatement keep a copy of my statement?

No. The PDF is read in memory and discarded. Only if a conversion fails and you choose to share a redacted skeleton to help add support is anything kept, and then only that skeleton, for up to 30 days.

Upload a statement to convert to CSV

No signup required. Preview the result first; nothing is stored by default.

Upload a statement