Skip to main content
ConvertBank to Excel Logo
Back to Blog
April 15, 2026
4 min read
Tutorials

Bank Statement to CSV: Free Methods and Checks

Turn bank statement PDFs into CSV with native exports or free local tools. Learn date, amount, and quality checks before importing.

ConvertBankToExcel Team

ConvertBankToExcel Team

Bank Statement to CSV: Free Methods and Checks

Bank Statement to CSV: Free Methods and Checks

Start by checking whether your bank already provides transaction downloads. A statement PDF and a transaction CSV are different files: the PDF records the statement layout, while the CSV supplies rows you can edit or import. This guide covers free native and local methods; the optional converter route has its own access and pricing conditions.

Choose a method for your source

Bank download: In your bank's transaction history, look for an export or download option, choose the account and date range, and select CSV if offered. Save the statement PDF too. Check that the export covers posted transactions for the same period rather than an overlapping rolling window.

Text-based PDF: Try selecting a transaction description in a PDF reader. If you can select individual characters, Tabula may be suitable. Its official instructions describe selecting a table region, previewing the extraction, and exporting; it does not support scanned PDFs.[12]

  1. Install Tabula from its official distribution and launch it locally.
  2. Load a copy of the PDF and draw a selection around the transaction table, not the statement summary.
  3. Preview the extraction. Adjust the region if an amount column is missing.
  4. Export the table as CSV, then repeat for other transaction pages.
  5. Remove repeated page headers and join wrapped descriptions only after comparing them with the PDF.

Scanned PDF: Use OCR before table cleanup. Our scan preparation guide explains how to preserve legibility and flag uncertain rows. A selectable text layer does not by itself prove the extracted table is correct.

Existing spreadsheet: If you already have reviewed rows in Excel, save a dedicated transaction worksheet as CSV. Microsoft notes that CSV export saves only the active worksheet; keep the XLSX master for notes and formulas.[7] Reopen the CSV to verify the separator and values.

Optional local Python extraction

For a technical workflow, pdfplumber exposes page-level table extraction and works best with machine-generated PDFs.[13] This illustrative script exports raw detected cells, not an import-ready bank statement:

import csv
import pdfplumber

with pdfplumber.open("statement.pdf") as pdf, open(
    "raw-tables.csv", "w", newline="", encoding="utf-8"
) as out:
    writer = csv.writer(out)
    for page in pdf.pages:
        for table in page.extract_tables():
            writer.writerows(table)

Inspect the output before assigning columns. A script that writes invented transaction dictionaries would demonstrate CSV writing, not PDF extraction. If no table is detected, revisit the layout or use manual table selection rather than assuming the page contains no transactions.

Worked example: illustrative CSV cleanup

Suppose a checking statement shows a deposit of 900.00 and a payment of 42.50. Use a documented working convention: money into the account is positive and money out is negative.

Date,Description,Amount
2026-09-02,Client payment,900.00
2026-09-03,"Office supplies, branch 2",-42.50

The quotation marks keep the comma inside the merchant description. The transaction movement is 857.50. With an opening balance of 1,000.00, the illustrative closing balance is 1,857.50. Keep balance checks in the working file, not as extra transaction rows.

Store references as text. Normalize decimal and thousands separators deliberately; do not remove punctuation from descriptions. Use UTF-8 when saving, then reopen the file to check accented merchant names. For date-sensitive imports, follow the destination's supported format rather than assuming ISO dates work everywhere.

Validate before importing

Compare every page, transaction count, dates, debit and credit totals, and closing balance. Do not deduplicate on amount alone: two identical payments can be legitimate. When combining months, record the source filename and identify overlap using date, amount, description, and reference together.

Use the separate Xero import guide or QuickBooks Online upload guide for destination mapping. For spreadsheet analysis, see CSV to Excel. If local extraction is unsuitable, open the converter, review the available export options, and validate its downloaded CSV before use.

Official sources

[7] Microsoft: Import or export text and CSV files.
[12] Tabula: Official installation and extraction instructions.
[13] pdfplumber: Maintainer documentation.