Bank statement to CSV
Convert PDF bank statements into clean CSV files automatically. FlowParse AI extracts every transaction — date, description, signed amount and balance — from any bank format and exports an import-ready CSV for Xero, QuickBooks, Sage or a spreadsheet.
CSV export is free within your monthly page allowance
A real sample: bank statement (uk style) — to a clean CSV
A fictional sample document converted by the same engine you get — flip through the source PDF and every export format, or download the files themselves.
Clean transactions out of any PDF statement
Manually typing bank transactions into spreadsheets is slow and error-prone. Yet businesses need that transaction data constantly — for bookkeeping, reconciliation, accounting imports, expense analysis, reporting and cash-flow tracking.
FlowParse AI automatically extracts transactions from PDF bank statements and exports them as clean CSV files, with debits and credits normalised into a single signed amount so the data reconciles the moment it lands.
Automatically extracted
Export format
Date,Description,Amount,Balance 2026-03-01,Coffee Shop,-5.50,1194.50 2026-03-01,Salary,2500.00,3694.50 2026-03-02,Electricity,-88.40,3606.10
Debits negative, credits positive — the convention every reconciliation tool expects.
Why convert bank statements to CSV?
CSV is the universal language of financial data. For bookkeeping, it's the format that drops straight into your records; for reconciliation, it's the transaction list you match against the ledger. When debits and credits are already normalised into a signed amount, reconciliation is arithmetic rather than guesswork.
For reporting and cash-flow analysis, CSV is what you pivot, chart and summarise — a month or a year of transactions in one flat, sortable file. For accounting imports, almost every package — Xero, QuickBooks, Sage — is built around a CSV bank-feed import, so a clean CSV is the fastest route into the system.
CSV also fits spreadsheet workflows perfectly: it opens natively in Excel and Google Sheets, with no formatting to strip out, so analysts can get straight to work. And for financial analytics and custom finance systems, CSV is the lowest-friction input — a plain, predictable structure any tool can read.
The catch has always been getting clean CSV outof a PDF. That's the step FlowParse automates: it reconstructs the underlying transaction table and writes it as a properly structured CSV, so the file is import-ready rather than something you then have to repair.
Problems with manual transaction entry
Typing transactions by hand is slow — and it's where the errors come from.
Manual entry invites copy-paste errors and typing mistakes — a transposed digit in an amount throws off the whole reconciliation. Duplicate transactions creep in when statements overlap, and missing transactionsslip through when a long statement isn't fully transcribed.
Because PDFs have no real table structure, copying them yields broken tables with merged cells and misaligned columns. The cumulative effect is slow processing and poor scalability — the only way to handle more statements is more hours, and the error rate rises with the volume.
Automated extraction removes all of it: structured transactions, signed amounts, validated balances, any bank format, in under a minute.
| Manual process | FlowParse AI | |
|---|---|---|
| Transaction entry | By hand, line by line | Automatic |
| Multi-page statements | Easy to truncate | Supported |
| Balance validation | Manual checking | Included |
| CSV generation | Hand-built | Automatic |
| Speed | Hours | Minutes |
What data is extracted
FlowParse extracts the full transaction record from every statement — and normalises it into a consistent, CSV-ready shape:
Supports PDF and scanned statements
FlowParse handles statements however they reach you — OCR and AI work together to produce structured transaction data from any source:
OCR vs AI transaction extraction
Basic OCR converts pixels to raw text. It can read the characters on a statement, but it has no idea which number is an amount, which is a balance, or which column a debit belongs in. You're left with text you still have to structure by hand.
AI extraction goes further. After OCR reads the text, the AI applies table understanding and column detection to turn it into structured transactions, performing signed amount generation— reconciling debit and credit columns into one signed value. The output isn't raw text; it's CSV-ready transaction records.
| Feature | OCR | AI |
|---|---|---|
| Text recognition | Yes | Yes |
| Transaction understanding | No | Yes |
| Debit/credit detection | Limited | Advanced |
| Multi-page statements | Limited | Advanced |
| CSV readiness | Low | High |
Clean CSV structure
You choose between two layouts. The statement CSV is a faithful copy: the statement's details on top, then every transaction with the columns the bank printed. The import CSVs are standardised: only the transactions, in the fixed columns Xero, QuickBooks, Sage and other programs expect, with one signed amount. Either way you get:
Import CSV into accounting software
The exported CSV is built to import cleanly into the tools finance teams already use:
Ideal for bookkeeping, reporting, reconciliation and analytics. For dedicated workflows, see Bank Statement to Xero and Bank Statement to QuickBooks.
Validation and quality checks
Before export, FlowParse checks the data so you don't import an incomplete or double-counted statement:
| Validation | Included |
|---|---|
| Balance validation | Yes |
| Duplicate detection | Yes |
| Missing page detection | Yes |
| Confidence scores | Yes |
| Source tracking | Yes |
Built for high-volume statement processing
Instead of manually building CSV files, businesses receive clean structured transaction exports automatically — at scale:
To consolidate a set of statements into one file, see combine bank statements into one Excel or the bulk PDF to Excel converter.
Who uses bank statement CSV exports
Accountants
Prepare reconciliation files from client statements in under a minute.
Bookkeepers
Reduce manual transaction entry to a single upload.
E-commerce businesses
Track payouts and expenses across providers in one CSV.
Finance teams
Build clean reporting datasets from every account.
Analysts
Perform cash-flow analysis on flat, pivot-ready transaction data.
Lenders & auditors
Turn a year of statements into one searchable, traceable file.
Clean, signed, validated CSV
Why not use the bank's own CSV download?
If your bank offers a CSV for the period you need and your software accepts its layout, use it. In practice it often falls short. Many banks let you download transactions only for recent months, while statements go back years. Every bank's CSV has its own columns, date format and sign convention, so an accountant with clients at five banks maintains five import mappings. Most transaction downloads carry no opening or closing balance, so nothing tells you whether the file is complete. And for a closed account, a bank that has since merged, or a paper statement, there is no download at all — only the PDF.
Converting the statement PDF solves all four at once: any period you have a statement for, the same layout for every bank, balances that prove completeness, and a source that is the official document rather than an export.
The checks behind every CSV
| Check | Bank statement | Credit card statement |
|---|---|---|
| Totals | Opening balance + transactions = closing balance | Previous balance + purchases + cash advances + fees + interest − payments = new balance |
| Row by row | Against the running balance, where printed | Sum of the transactions against the summary |
| Signs | From the column the amount was printed in | Charges and payments kept apart |
| Across files (Smart Merge) | Closing = next opening; duplicates across files flagged | New balance = next previous balance |
A CSV that passed these checks contains every transaction on the statement, each with the right sign. If a check fails, the preview shows it before you download. More in bank statement validation.
Common bank CSV import errors — and the fix
"The file has no header row" or columns land in the wrong place
You uploaded the statement CSV, which starts with the statement details. Download the import CSV for your program instead — it starts with the header row the import screen looks for.
Every amount comes in with the wrong sign
Some programs expect money out to be negative, others ask whether amounts are "as shown" or reversed. The import CSVs use money out negative; if your import screen offers a sign option, leave amounts as they are.
Dates are rejected or read as the wrong month
Day/month order differs between countries. Check the date setting on your program's import screen against the file; never open and re-save the CSV in Excel first, which can rewrite dates.
Strange characters instead of €, £ or accents
The file is UTF-8. If a program shows garbled text, choose UTF-8 as the file encoding in its import options.
Transactions appear twice
The period overlaps with an earlier import or a live bank feed. Import from the day after the last imported transaction, or use the program's matching to pair the duplicates.
CSV for scripts, databases and data teams
If the CSV feeds code rather than an accounting program, the statement CSV is the one to use: the details block gives you the account, period and balances, and the table below it gives you every column the bank printed, unchanged. Split the file at the TRANSACTIONS line and load each part.
For a pipeline that converts statements automatically, skip the file download and call the bank statement API, which returns the same checked data as JSON. If you are weighing up writing your own parser, the bank statement parser in Python guide shows what it takes — and where page breaks and balance checks get difficult.
Example: moving a client's year into Xero
A bookkeeper takes on a café that kept no books for its first year. The owner has twelve PDF statements from the business account; the bank's own download reaches back only a few months. The figures here are an illustration.
The bookkeeper merges the twelve statements in one go. Each is checked against its balances, the review confirms the chain from January to December is unbroken, and the merge downloads as a single Xero import CSV — Date, Amount, Payee, Description, Reference — which goes into Xero's Import a bank statement in one upload. The statement CSV and the PDFs go into the client file as the record behind it.
What the statement CSV looks like inside
The statement CSV is a faithful copy of the PDF in text form. It opens with a short block of statement details, then a line that says TRANSACTIONS, then the transaction table with a header row and one row per transaction. Keeping the details in the file means the opening and closing balances travel with the transactions, so anyone who opens it later can check that the rows add up.
BANK STATEMENT DETAILS Field,Value Bank / Platform,Example Bank Account Holder,Jane Example Account Number,****4821 Period,01/03/2026 - 31/03/2026 Currency,EUR Opening Balance,2140.55 Closing Balance,1987.30 TRANSACTIONS Date,Description,Debit,Credit,Balance 03/03/2026,Card payment SUPERMARKET,54.20,,2086.35 05/03/2026,Salary ACME LTD,,2400.00,4486.35 …
An illustration. The labels are in English by default, or in the statement's own language if you choose that option; the transaction columns are the ones your bank prints — here separate Debit and Credit columns.
Import-ready CSVs for accounting software
Accounting programs do not want a statement header in their bank import — they want a header row and the transactions, in their own column order. For those, choose the import CSV for your program. Each one contains only the transactions, with debits and credits combined into one signed amount: money out negative, money in positive.
| Program | Columns in the CSV |
|---|---|
| Xero | Date, Amount, Payee, Description, Reference |
| QuickBooks | Date, Description, Amount |
| Sage | Date, Reference, Details, Net Amount |
| FreeAgent | Date, Amount, Description |
| Wave | Date, Description, Amount |
| FreshBooks | Date, Description, Amount |
| Zoho Books | Date, Description, Amount, Reference Number |
| MYOB | Date, Amount, Description |
| NetSuite | Date, Memo, Amount |
QuickBooks and Quicken also take bank-feed files that need no column mapping at all — see the PDF to QBO converter and PDF to QFX converter. Every one of these formats is included on every plan.
Opening a bank CSV in Excel without breaking it
CSV is plain text, and Excel makes guesses when it opens it. The file FlowParse produces is written to keep those guesses on track: it is UTF-8 with a byte-order mark, so €, £, accented letters and Cyrillic come through intact; fields are separated by commas and quoted wherever a description itself contains a comma, a quote or a line break; and lines end the way Windows expects.
Two things are still worth knowing. In countries where Excel uses a comma as the decimal separator — much of Europe — Excel expects semicolons between fields, so double-clicking a comma-separated file can put everything in one column. Import it instead with Data › From Text/CSV and choose comma as the delimiter. And Excel likes to reinterpret dates and long numbers: an account number can turn into scientific notation and 03/05 can become a different date. If you need a spreadsheet rather than an import file, download Excel (.xlsx) directly from the bank statement to Excel converter — the columns arrive already typed.
Bank statement PDF to CSV, step by step
- 1. Download the statement PDF from online banking — the monthly statement, which carries the opening and closing balances, not a filtered transaction list.
- 2. Upload it. Digital PDFs, scans and phone photos all work, from any bank.
- 3. Check the preview. The transactions are shown with the result of the balance check: opening balance plus every transaction must equal the closing balance, and each row is checked against the running balance where the bank prints one. Correct anything in the editable preview.
- 4. Pick the CSV you need. The statement CSV for your records or a spreadsheet; the Xero, QuickBooks, Sage or other import CSV for your accounting software.
- 5. Import or archive. Upload the import CSV in your program's bank import screen, and keep the PDF with it as the source document.
Many statements, one CSV
A year of statements is twelve CSVs if you convert them one by one. With Smart Merge you upload them together and download one CSV: the statements are put in date order, columns from different banks are matched by meaning, every row carries the file it came from, and the merge review warns you when one statement's closing balance is not the next one's opening balance — usually a missing month. When the merge holds more than one kind of table, each table appears as its own block in the CSV under a title line.
The same merge also exports as one import CSV for Xero, QuickBooks and the other programs above, so a year of catch-up bookkeeping is one import instead of twelve.
CSV, Excel or a bank-feed file?
| You want to… | Download |
|---|---|
| Import into Xero, Sage, FreeAgent, Wave, Zoho, MYOB, NetSuite or FreshBooks | That program's import CSV |
| Import into QuickBooks or Quicken without mapping columns | .QBO or .QFX |
| Feed a script, a database or a BI tool | Statement CSV (or JSON via the API) |
| Read, filter, total and send to an accountant | Excel (.xlsx) |
| Keep a plain-text archive next to the PDF | Statement CSV |
A CSV for your records, next to the PDF
Plain-text CSV is one of the most durable formats there is: any spreadsheet, database or text editor will open it in twenty years. Saved next to each statement PDF, the statement CSV makes an archive you can search across years — every payment to one supplier, every deposit over a threshold — without opening a single PDF.
Because the details block carries the account, period and balances, each CSV is self-describing. An auditor or a tax inspector who asks how a figure was arrived at can be shown the PDF, the CSV made from it, and the fact that the CSV's transactions add up from the printed opening balance to the printed closing balance. The PDF stays the official record; the CSV is the searchable copy. Name both files the same way — account, year and month — and the archive sorts itself: the PDF and its CSV sit side by side, and a year of statements lines up in order in any folder view or file listing.
Google Sheets, Numbers and budgeting apps
Google Sheets and Apple Numbers both open a CSV directly; in Sheets, use File › Import and let it detect the comma separator. If you work in Google Sheets every month, the PDF to Google Sheets route sends the converted statement straight into a sheet instead of a download.
Budgeting apps that accept CSV imports usually want a simple three-column file. The QuickBooks import CSV — Date, Description, Amount, with money out negative — is the most widely accepted shape and a good choice when an app does not name a format. Check the app's import screen for its date format before importing a year.
Statements in other languages and currencies
A German, French, Spanish or Danish statement converts like an English one. Amounts written the European way — 1.250,00 — are read as 1250.00, so the CSV contains real numbers, and the column headings and details labels can be in English or kept in the statement's own language, whichever you choose when exporting.
The currency is recorded in the details block of the statement CSV and amounts are never converted. If you combine accounts in different currencies with Smart Merge, filter by source file before totalling, and apply your own exchange rate where you need one. Bank-by-bank details for more than a hundred banks are on the bank statement converters pages.
In short: which CSV, and when
Download the statement CSV when you want everything the bank printed — the account details, the opening and closing balances and every column of the transaction table — for your records, a script or a database. Download the import CSV for your accounting program when the next step is an import: it has exactly the columns that program expects and one signed amount per row. And if the program is QuickBooks or Quicken, consider a .QBO or .QFX file, which needs no column mapping at all.
Whichever you choose, the transactions behind it are the same: read from any bank's PDF, digital or scanned, and checked against the statement's own balances before you download. Every format is included on every plan, within your monthly pages — ten a month on the free plan, with no card required to start. Start with one statement and see the result on your own bank.

