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.
| Column | Format | Notes |
|---|---|---|
| Date | YYYY-MM-DD | Always 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.47 | Two decimals, a period as the decimal separator, no thousands separator, no currency symbol. Debits negative |
| Type | debit | credit | Matches the sign of Amount |
| Balance | 5030.71 | Running 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
- 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.
- 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.
- 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.
- 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.
| Bank | Printed number format | In the CSV | CSV for this bank |
|---|---|---|---|
| Chase | 1,234.56 | 1234.56 | Chase to CSV |
| Bank of America | 1,234.56 | 1234.56 | Bank of America to CSV |
| Wells Fargo | 1,234.56 | 1234.56 | Wells Fargo to CSV |
| Capital One | 1,234.56 | 1234.56 | Capital One to CSV |
| Citi | 1,234.56 | 1234.56 | Citi to CSV |
| Barclays | 1,234.56 | 1234.56 | Barclays to CSV |
| Revolut | 1,234.56 | 1234.56 | Revolut to CSV |
| HSBC | 1,234.56 | 1234.56 | HSBC to CSV |
| N26 | 1,234.56 | 1234.56 | N26 to CSV |
| Deutsche Bank | 1.234,56 | 1234.56 | Deutsche Bank to CSV |
| U.S. Bank | 1,234.56 | 1234.56 | U.S. Bank to CSV |
| PNC | 1,234.56 | 1234.56 | PNC to CSV |
| TD Bank | 1,234.56 | 1234.56 | TD Bank to CSV |
| TD Canada | 1,234.56 | 1234.56 | TD Canada to CSV |
| ING | 1.234,56 | 1234.56 | ING to CSV |
| Santander | 1,234.56 | 1234.56 | Santander 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.
Related
Upload a statement to convert to CSV
No signup required. Preview the result first; nothing is stored by default.
Upload a statement