Convert a Bank Statement PDF to CSV
Last verified May 23, 2026
Drop your bank statement PDF here
or click to browse. PDF only, max 50MB.
A bank statement PDF becomes a CSV by extracting every posted transaction into five columns, date, description, amount, type (debit or credit), and running balance, then writing those rows as comma-separated text. Upload the PDF above, confirm the preview, and download the file. Most statements convert in under ten seconds, and the first five pages each month are free with no account.
- What you get: a UTF-8, RFC 4180 CSV with one row per transaction and a header row, ready for Excel, Google Sheets, or import into accounting software.
- Coverage: tested against 500+ bank layouts across the US, UK, India, Canada, and the EU.
- Privacy: the PDF is parsed in memory for the length of the request and is not stored. .
- Cost: 5 pages/month free, then credit packs, cheaper per page than the per-page desktop tools.
What the converter reads out of your PDF
The parser targets the transaction table, not the marketing and legal text around it. For each row it isolates the posting date, the full description line (including check numbers and reference codes), the signed amount, whether the line is money in or money out, and the balance after that transaction where the bank prints one.
Descriptions frequently contain commas, "SQ *BLUE BOTTLE, OAKLAND CA" is one field, not three. The converter wraps any field containing a comma, quote, or line break in double quotes per the CSV standard, RFC 4180, so the column count stays correct when Excel parses it. Dates are normalized to a consistent format so sorting works numerically instead of alphabetically.
What a CSV file actually is, and how ours is built
CSV stands for comma-separated values, and despite the name it is just plain text with a few rules. Each line is one record, fields within a line are separated by commas, and the first line is an optional header naming the columns. The format was finally written down as RFC 4180 in 2005, after decades of programs each doing their own slightly different thing, and that document is the reference our output follows. The header row we emit names the columns explicitly, for example Date, Description, Amount, Type, Balance, so any tool that maps columns has clear labels to work from.
The rules that matter most in practice are about special characters. RFC 4180 says a field that contains a comma, a double quote, or a line break has to be enclosed in double quotes, and a literal double quote inside that field is escaped by doubling it. So a payee that prints as JET2.COM "HOLIDAYS" becomes "JET2.COM ""HOLIDAYS""" in the file. This sounds pedantic, but it is the single most common reason a CSV imports with the wrong number of columns elsewhere, and getting it right is what keeps every row aligned. We quote only the fields that need it, which keeps the file compact while staying spec-correct.
One more structural detail: line endings. RFC 4180 specifies a carriage return plus line feed between records, the convention Windows tools expect. Spreadsheets on macOS and Linux read either style, so the file opens cleanly regardless of where you downloaded it. The result is a file that is small, human-readable in any text editor, and parseable by code in one line, which is exactly why CSV remains the lingua franca of financial data.
Delimiters, encoding, and the edge cases that break other tools
Most CSV problems are not in the obvious data, they are in the boring details around it. Three in particular trip up generic exporters.
The delimiter is not always a comma. In many European locales the comma is the decimal separator, so 1.234,56 means one thousand two hundred thirty-four and fifty-six hundredths. Spreadsheets in those locales expect a semicolon as the field delimiter to avoid the clash. A file that uses commas as both the decimal point and the field separator is ambiguous and will misalign. Our amounts use a period as the decimal separator and a comma only as the field delimiter, the configuration RFC 4180 describes, so the columns never collide. If your copy of Excel is set to a comma-decimal locale and splits the file wrong on open, use the From Text/CSV importer and pick the delimiter manually rather than double-clicking.
Encoding decides whether names survive. A CSV is text, and text needs an encoding. We write UTF-8, the universal standard, so accented and non-Latin payee names from HDFC, ICICI, SBI, and European banks come through intact instead of turning into garbled characters. The one wrinkle is that older versions of Excel on Windows assume a legacy code page unless the file carries a byte-order mark or you import it explicitly as UTF-8. If you see strange symbols where an accent should be, that is the cause, and the From Text/CSV path lets you choose UTF-8 and fix it in one click.
Numbers that look like text, and text that looks like numbers. A long account or reference number can be read by Excel as a giant number and shown in scientific notation, while a value like 00123 loses its leading zeros. These are spreadsheet display behaviors, not flaws in the file. Importing the relevant columns as text preserves them exactly.
Which apps open the file without extra steps
A standards-compliant CSV is the most portable financial format there is. It opens directly in every spreadsheet tool and imports into nearly all accounting software through a column-mapping step.
| Destination | How it handles the CSV | Watch out for |
|---|---|---|
| Microsoft Excel | Opens on double-click; use Data > From Text/CSV for control over column types | Excel may reformat long account numbers as scientific notation, import as text |
| Google Sheets | File > Import > Upload, detects delimiters automatically | Set locale so date parsing matches your region |
| Apple Numbers | Opens directly | Confirm the first row is treated as a header |
| QuickBooks Online | Banking > Upload, then map Date / Description / Amount columns | For a native import without mapping, use the QBO format instead |
| Xero, Wave, Sage | Statement import with column mapping | Some require a single Amount column with negatives, not separate debit/credit |
Two of these deserve step-by-step detail because they are where most people take the CSV next.
Importing into Excel cleanly. Double-clicking the file works, but the controlled path is the Data tab, then From Text/CSV (Get & Transform). Excel shows a preview where you confirm the delimiter is a comma, set the file origin to UTF-8, and click Transform Data to set any account-number column to text before loading. This avoids both the scientific-notation problem and any locale mismatch in one pass. Once loaded, the data lands as a proper table you can sort, filter, and total.
Importing into QuickBooks Online. Go to Transactions or Banking, choose Upload from file, and select the CSV. QuickBooks asks you to map your columns to its fields, Date, Description, and either one Amount column or separate Money In and Money Out columns. Our single signed Amount column with a Type flag satisfies either mapping. Pick the account to import into, review the matched transactions, and confirm. If you would rather skip mapping entirely, the QBO format imports natively. The same upload-then-map pattern works for Xero, Wave, and Sage, with the one caveat that some of them want a single Amount column with negatives for debits rather than a separate Type column, which the file already supports.
Converting many statements at once
One statement is a quick job. A year of statements, or statements for several accounts, is where a repeatable workflow matters. The cleanest approach is to convert each statement to CSV with the same column layout, then stack them. Because every file we produce uses the identical header row and the same date and sign conventions, you can open the first CSV and paste the data rows (skipping the repeated header) from each subsequent file underneath, or use your spreadsheet's combine feature, and end up with one continuous ledger spanning every cycle.
This consistency is the real payoff of a normalized export. If you instead copy and paste straight out of twelve PDFs, you get twelve subtly different layouts, some with split debit and credit columns, some with a balance column and some without, and merging them becomes a manual cleanup job. Converting first means the merge is mechanical. For ongoing monthly work across many statements, credit packs bring the per-page cost below the desktop converters while keeping every file in the same shape, so your year-end consolidation is a paste rather than a project.
CSV, Excel, QBO, OFX, or QIF, which export fits your job?
Pick CSV when you want maximum flexibility and plan to analyze or reshape the data yourself. Pick a structured format when a specific app expects it.
| Format | Best for | Main tradeoff |
|---|---|---|
| CSV | Spreadsheets, custom analysis, universal import | No structure beyond columns; the destination has to map fields |
| Excel (.xlsx) | Sharing a formatted sheet, pivot tables, formulas | Heavier file; not an import format for accounting tools |
| QBO | One-click import into QuickBooks | QuickBooks only |
| OFX | Xero, Sage, GnuCash, most finance apps | Stricter spec; some banks need an FID/INTU.BID set |
| QIF | Quicken and older desktop tools | Legacy; no balance assertions |
If your destination is QuickBooks, the QBO converter skips the mapping step entirely. For everything spreadsheet-based, CSV is the right call.
The technical details most converters skip
- Encoding: output is UTF-8, so accented payee names and non-Latin scripts (common on HDFC, ICICI, and SBI statements) survive the round trip instead of turning into mojibake.
- Quoting: fields are quoted per RFC 4180 only when they contain a comma, double quote, or newline, and an embedded quote is escaped by doubling it, keeping the file small while staying spec-correct.
- Sign convention: debits are negative and credits positive in the Amount column, with a separate Type column, so tools that expect either layout can use the file.
- Balance column: preserved when the bank prints a running balance, which lets you reconcile by checking that each row's balance equals the previous balance plus the amount.
What we see across 500+ bank layouts
From parsing statements across hundreds of bank templates, three patterns cause most CSV import problems elsewhere, and we handle each explicitly:
- Split debit/credit columns. Many US and Indian banks print separate "Withdrawal" and "Deposit" columns rather than one signed amount. We merge them into a single signed Amount plus a Type flag so downstream tools do not double-count.
- Wrapped descriptions. Long descriptions that spill onto a second visual line are stitched back into one field, not split into a phantom transaction with a blank date.
- Scanned statements. A photographed or scanned PDF has no text layer to extract. Those need OCR, which is on the roadmap but not yet supported, see the note below.
Troubleshooting a CSV that does not look right
If the file opens with everything jammed into one column, your spreadsheet split it on the wrong delimiter. This is almost always a locale issue: open the file through the From Text/CSV or Import path instead of double-clicking, and choose comma as the delimiter. If accented or non-Latin characters show as boxes or odd symbols, the encoding was guessed wrong, set the import to UTF-8 and they will resolve. If a long account or reference number shows in scientific notation or has lost its leading zeros, the column was read as a number; reimport that column as text. If two transactions seem to have merged into one row or a row has a blank date, the original PDF wrapped a long description across two visual lines; our parser stitches those back together, so a clean reconvert usually fixes a row that a copy-paste broke. And if the running balance does not tie out, confirm your bank actually printed a balance column, since not every layout does, and check that you have not accidentally sorted the rows out of date order, which makes the running balance look wrong even when the data is correct.
The fastest path from PDF to spreadsheet
Drop the PDF on the tool, scan the preview to confirm the rows look right, choose CSV, and download. If a column looks off, switch the export format or open the file with your spreadsheet's text-import wizard to set column types. For recurring work across many statements, credit packs bring the per-page cost below the desktop converters while keeping everything in the browser.
Related converters & guides
Frequently asked questions
How do I convert a bank statement PDF to CSV?▾
Upload the PDF to the converter above, confirm the extracted transactions in the preview, choose CSV, and download. The whole process takes a few seconds and no account is needed for your first five pages each month.
Is converting a bank statement to CSV free?▾
Yes, the first five pages every month are free with no signup or card. Longer statements and ongoing use are covered by affordable credit packs.
Will the CSV open correctly in Excel?▾
Yes. The output follows the RFC 4180 standard with UTF-8 encoding, so Excel, Google Sheets, and Numbers all parse it cleanly. For long account numbers, use Excel's From Text/CSV importer and set those columns to text so they aren't shown in scientific notation.
How are commas inside transaction descriptions handled?▾
Any field that contains a comma, quote, or line break is wrapped in double quotes per the CSV standard, so a description like a merchant name with a city stays in a single column instead of breaking the row.
Can I convert a scanned or photographed statement?▾
Not yet. Scanned and image-only PDFs have no text layer to extract, which requires OCR. Text-based PDFs, what most banks issue, convert fully today.
My CSV opened with everything in one column. How do I fix it?▾
That happens when the spreadsheet splits on the wrong delimiter, usually because of a regional setting where the comma is the decimal separator. Instead of double-clicking the file, open it through Excel's From Text/CSV importer or Google Sheets' File then Import, and choose comma as the delimiter and UTF-8 as the encoding.
Can I combine several statements into one CSV?▾
Yes. Every file uses the same header row and the same date and sign conventions, so you can convert each statement and then stack the data rows into a single sheet. Converting first means the layouts already match, which makes a full-year consolidation a paste rather than a manual cleanup.
What standard does the CSV follow?▾
The output follows RFC 4180, the published standard for comma-separated values, with UTF-8 encoding. Fields that contain a comma, quote, or line break are wrapped in double quotes, and an embedded quote is escaped by doubling it, so the file parses correctly in any compliant tool.
Is my financial data secure?▾
The PDF is processed in memory for the duration of the request and is not stored on a server after the conversion completes.