Convert / tutorial

How to convert a bank statement PDF to CSV

If your bank offers a CSV download for the period you need, use it. When you only have the PDF, extract the rows, check each one beside its source page, approve the result, and download a UTF-8 CSV with signed amounts, separate debit and credit columns, balances, currency, and the source page of every row.

By Fulla LedgerUpdated 6 min read
Statement lines lifting from a printed page into neat stacks of rows in brass holders

Watch it done

How to convert a bank statement PDF to CSV or Excel

Real Fulla Ledger screens with a fictional sample statement. Captions available.

Step by step.

  1. Check for a bank download first

    Many online banking portals let you export recent transactions as CSV. That is usually the quickest route for current activity. A PDF is often all that remains for older periods, closed accounts, or statements a client emails you.

  2. Use the complete statement PDF

    Start from the original file with every page in order, including the pages that show opening and closing balances. Screenshots of a few rows lose the period and balance context you need to check the result.

  3. Upload and extract the rows

    Upload up to 10 PDFs at once, each up to 50 MiB and 250 pages. Fulla handles text, scanned, mixed, and password-protected statements and asks for a password in the document flow when one is needed.

  4. Review the draft beside the page

    Select a row to see its source page and evidence box. Check dates, amount signs, decimal places, and descriptions that wrap across lines, and correct, split, merge, or undo where the page shows a different reading.

  5. Approve and download CSV

    Approve the saved revision, then choose CSV. The file is generated from the approved revision only, so an unsaved draft cannot end up in the export.

  6. Open or import with matching settings

    Open the file in a spreadsheet or map its columns in the receiving system. Choose the year-month-day date order, and pick either the signed amount column or the debit and credit columns, not both.

Bank download or PDF conversion?

You can often get bank statement data in CSV format straight from your bank. Look for an export or download option in the transaction history of online banking and choose CSV or a spreadsheet format. Bank exports often cover only a recent window, and their columns differ from bank to bank, but they come directly from the bank’s system.

A PDF statement is the official document for a closed period and is what most people receive for older months, for accounts they no longer have online access to, or from clients and family members. A PDF can be converted to CSV, but the converter has to read a page layout rather than a data file, so the result needs checking before you rely on it.

Why copying from a PDF breaks the rows

Copying text out of a statement PDF, or running a general PDF-to-table converter, works for some layouts and fails quietly on others. Statements are designed to be read, not parsed, and the problems are predictable.

  • Descriptions wrap onto a second or third line and turn into extra rows
  • Debits and credits sit in separate columns, so a copied amount loses its direction
  • Page headers, running balances, and subtotals repeat on every page and mix with transactions
  • Dates are printed without a year or only on the first transaction of a day
  • Scanned pages contain no text layer at all, so copying returns nothing

What a useful statement CSV contains

Fulla’s CSV has one header row and one row per approved transaction, with these columns. Two of them exist only for checking: source_page lets anyone trace a row back to the PDF, and raw_fields keeps the values as they were read from the page.

  • statement_number: which statement in the export the row came from
  • date: the transaction date, written year-month-day, for example 2026-09-30
  • description: the full transaction description, joined across wrapped lines
  • amount: a signed amount, negative for money out of the account
  • debit and credit: the same amount as a positive number in the matching column, with the other column left blank
  • balance: the running balance where the statement prints one, blank where it does not
  • currency: the statement currency
  • source_page: the PDF page the row was read from
  • raw_fields: the original labeled values from the page, for audit

Opening the CSV in Excel or Google Sheets

The file is UTF-8 with a byte order mark, which helps Excel display accented names and currency symbols correctly. Amounts use a decimal point and no thousands separators, so they stay numeric. If your spreadsheet shows dates in a different order, that is display formatting; the underlying values are still year-month-day.

A description that begins with =, +, minus, or @ is written with a leading apostrophe so a spreadsheet does not treat it as a formula. If you need the plain text in another system, remove that apostrophe there.

If you want a workbook with separate Transactions, Statement, and Original Fields sheets instead of a flat file, the How to convert a bank statement PDF to Excel guide covers the XLSX export, and CSV, XLSX, or JSON for bank statement data compares the formats.

Importing the CSV into other software

Every importer has its own expectations for columns, date formats, and signs. Keep the full CSV as your record and make a trimmed copy for the import. QuickBooks Online, for example, accepts a 3-column or 4-column layout; the CSV to QBO guide walks through the exact changes.

If the destination accepts OFX, consider that instead. QuickBooks Online and Xero both import OFX statement files, and Fulla’s OFX export carries the dates, signed amounts, and a stable transaction ID for each approved row, so there is no column layout to prepare.

For several statements, a paid workspace batch can produce one combined CSV. It adds source_file and document_id columns so each row still points to its statement.

Check the exported CSV before mapping an import

Download the sample CSV and compare its rows with the fictional source PDF. Fulla exports a richer record than a minimal accounting importer expects: preserve the original export, then make a separate mapped copy for the receiving system. Keep dates consistent and confirm that money out is negative and money in is positive for a signed-amount layout.

Do not import the balance, debit and credit fields as additional transactions. CSV text that could be interpreted as a spreadsheet formula is escaped by the exporter; keep that protection when viewing an untrusted description in a spreadsheet. Inspect the raw text and the destination preview before accepting the mapped rows.

  • QuickBooks Online: prepare its supported three- or four-column layout and check the chosen account.
  • Xero: map Date and Amount, with expenses negative; remove opening/closing balance and account-number columns from the import copy.
  • After either import: compare transaction count, signed total and date range, then review duplicates before accepting.

Questions about this guide

Can a PDF bank statement be converted to CSV for free?

Yes, within Fulla’s free allowance: one page per IP address per rolling 24 hours without an account, or five shared pages per rolling 24 hours in a free workspace. Sign-up does not require a card.

Can I convert a scanned bank statement to CSV?

Yes. Fulla accepts scanned and mixed PDFs as well as text PDFs. Scan quality still affects the draft, so check amount signs, decimal places, and page transitions closely during review.

Why does the CSV have both an amount column and debit and credit columns?

Importers differ. Some want one signed amount; others want money in and money out in separate columns. Use whichever pair your destination asks for and ignore the other.

Is the CSV guaranteed to match my statement?

No. Extraction produces a draft. The CSV reflects the revision a person reviewed against the source pages and approved, which is why the review step matters.

How long can I download the CSV?

Uploaded and derived financial content expires 24 hours after the upload starts, and exporting does not extend it. Download every format you need within that window.

Put this into practice.