Bank Statement to CSV

CSV is the one format everything reads: every accounting importer, Google Sheets, Excel, a pandas script, a SQL loader. The catch is getting from the bank’s PDF to a CSV whose rows you can trust. SheetMyBank does the conversion in your browser — rebuilding the transaction table from the PDF’s positioned text, reconciling every row against the running balance, and writing a clean five-column CSV with none of the usual encoding and date-format landmines.

The statement is never uploaded. Parsing, verification, and the CSV itself all happen on your device.

Drop your bank statements here (PDF or photo)

One file or many — processed entirely on this device, nothing is uploaded. Scans and photos (including iPhone HEIC) are read with on-device OCR (beta).

No statement handy?

Free for your first 5 pages each month · No upload — processed on your device · Balance-verified output

A CSV built to import cleanly

Predictable columns

Date, Description, Debit, Credit, Balance — one transaction per row, header row included. Debits and credits are split into separate columns because that’s what mapping screens in accounting tools expect, and it makes SUM checks trivial in a spreadsheet.

No date ambiguity

Statements print dates as 03/04, 3 Apr, or 04-03 depending on the bank and country. The parser resolves them using the statement’s own context and writes ISO YYYY-MM-DD, so no downstream tool can guess the month wrong.

Amounts that stay numbers

$1,234.56, (123.45), 123.45 DR — all normalized to plain numeric values. No currency symbols to strip, no thousands separators to collide with the comma delimiter, no parentheses standing in for minus signs.

Verified before it’s written

A CSV has no formulas and no formatting — just values — so an extraction error is invisible once the file is written. That’s why verification happens first: each row’s balance is checked against the previous balance plus that row’s amount, across the entire statement. A dropped row, a flipped sign, or a misread digit breaks the chain at that exact point and gets flagged in the preview before you export. You fix or accept the exceptions; every other row is proven by arithmetic. The same check runs on OCR’d scans and photos, where it matters most.

Where the CSV goes next is up to you. QuickBooks Online’s upload flow takes it directly — though for Desktop you’ll want the QBO export instead; see converting a bank statement for QuickBooks. Xero’s Import a Statement flow maps the columns in a couple of clicks — details in converting a bank statement for Xero. And if the destination is a pivot table rather than an importer, export Excel instead and get the Warnings sheet alongside your data. Layout looking odd for your bank? Check the bank-specific guides.

Frequently asked questions

What columns does the CSV contain?

Five columns with a header row: Date, Description, Debit, Credit, Balance. Debits and credits sit in separate columns rather than a single signed amount, which is what most accounting importers and mapping screens expect. Wrapped description lines are joined into one cell, so each row is exactly one transaction.

How are dates and numbers formatted so they don’t break on import?

Dates are written in an unambiguous ISO format (YYYY-MM-DD), so 03/04 can’t silently become the wrong month when a tool assumes US or UK order. Amounts are plain numbers — no currency symbols, no thousands separators, no parentheses — because a stray comma inside an amount is the classic way a CSV column shifts. The file is UTF-8 encoded, so accented merchant names survive.

Why does Excel mangle my CSV when I double-click it?

Double-clicking hands the file to Excel’s locale-dependent guesser, which can reinterpret dates and strip leading zeros. It’s an Excel quirk, not a file problem — use Data → From Text/CSV, or just export .xlsx from SheetMyBank directly and skip the issue. Google Sheets and most accounting importers read the CSV as-is.

Can I convert a scanned statement or a photo to CSV?

Yes. When the PDF has no text layer, built-in OCR takes over automatically, entirely in your browser. OCR output goes through the same running-balance verification as text extraction, so a misread digit shows up as a flagged row in the preview rather than a silent error in your CSV.

Is the CSV really generated without uploading my statement?

Yes — parsing, OCR, verification, and file generation all run in your browser. The PDF never leaves your device, and once the page has loaded the converter even works offline. The first 5 pages each month are free; Starter ($30/mo) covers 400 pages and Business ($60/mo) covers 1,500.