How to Extract Transactions From PDF Bank Statements
PDF bank statements are made to be read, not analysed. If you need to reconcile transactions, build financial reports, import data into Excel or upload transactions into accounting software, you first have to get the data out. This guide covers every practical way to do bank statement extraction — the bank's own CSV, copy-paste, Excel's From PDF import, open-source table tools, OCR for scans and a dedicated bank statement to Excel converter — where each one fails, and how to prove the result is complete before it reaches your books.
Balance check
Accuracy proof
Digital or scanned
Input
After 30 days
Originals deleted
Any PDF format
Banks supported

Why Extract Transactions From a PDF?
Bank statements are essential financial records — but in PDF format they are practically useless for analysis. The data is locked inside a formatted document that cannot be sorted, filtered, or calculated without first extracting it.
Here are the most common reasons finance professionals need to extract bank statement transactions:
Bookkeeping & Reconciliation
Match every transaction against invoices, receipts, and internal records. Reconciliation needs the statement as rows and columns first; extraction is the step that makes matching possible.
Tax Reporting
HMRC, IRS, and most tax authorities require transaction-level records. A structured Excel file makes categorisation, VAT calculations, and submission reporting far simpler.
Financial Analysis
Spot spending trends, identify unusual transactions, and build cash flow forecasts. None of this is possible while data stays trapped in a PDF.
Accounting Software Import
QuickBooks, Xero, Sage, and FreshBooks all accept bank transactions via CSV upload. Extracting to CSV is the fastest way to feed transactions into your accounting workflow.
Auditing & Compliance
Auditors require transaction-level evidence. Structured spreadsheets with original values, dates, and references satisfy audit requirements far better than PDFs.
Business Intelligence
Finance teams building dashboards in Power BI, Tableau, or Google Sheets need structured data. Extracting transactions into a table is the essential first step.
Common Problems With PDF Bank Statements
Not all PDFs are equal. Bank statements come in dozens of formats and each creates different extraction challenges:
Password-Protected PDFs
Some banks protect statement downloads with a password such as a date of birth or part of the account number. Free table tools generally cannot open these until you save an unlocked copy. FlowParse asks for the password at upload and decrypts the file itself.
Scanned PDFs (Image-Based)
Older statements and many international banks produce PDFs that contain a scanned image rather than selectable text. Standard copy-paste and Excel import fail completely on these. You need OCR — or a converter that reads scanned pages itself.
Multi-Page Statements
A busy business account might have 10, 50, or 200 pages of transactions. Manual extraction at that scale is not feasible. Automated tools handle multi-page statements as a single upload.
Inconsistent Bank Formats
Revolut formats its statements differently from Barclays, which formats differently from Chase. Column positions, date formats, and header labels all vary. Template-based tools break when the format changes; layout-aware extraction reads each statement as it comes.
Missing or Merged Table Columns
Some banks combine debit and credit into a single 'Amount' column with positive/negative values. Others omit the running balance. AI extraction understands these patterns and normalises the output regardless.
How to Extract Data From Bank Statements: 6 Methods Compared
There are six practical ways to extract transactions from a bank statement. They differ less in speed than in two things that decide whether the result is usable: whether the method can read a scanned statement at all, and whether the debit, credit and balance columns survive the trip into a spreadsheet.
Before choosing, open the PDF and try to select a word with your cursor. If the text highlights, the statement is a text-based (digital) PDF and every method below can work. If nothing highlights, the page is an image — a scan or a photo — and only OCR-based methods will read it.
| Method | Reads scans? | Keeps columns? | Where it breaks | Best for |
|---|---|---|---|---|
| Bank's own CSV / OFX download | n/a — no PDF involved | Yes, as the bank defines them | Usually covers recent activity only; old months and closed accounts are PDF-only | Current periods you can still download |
| Copy & paste | No | No — pastes as lines of text | Descriptions, dates and amounts land in one cell; wrapped lines become extra rows | A handful of transactions, once |
| Excel Get Data → From PDF | No | Often, needs cleanup | Windows only; multi-line rows and page headers need fixing in Power Query | Clean text PDFs, Excel users on Windows |
| Tabula / Camelot / pdfplumber | No (text PDFs only) | Yes, if you set areas or rules | Per-layout tuning; no OCR; you write the clean-up | Developers and analysts with one recurring layout |
| OCR, then a table tool | Yes | Partly | Misread digits and drifting columns; nothing checks the totals | Occasional scanned statements |
| Bank statement converter | Yes | Yes — date, description, debit, credit, balance | Paid beyond the free allowance | Mixed banks, scans, many statements |
Method 1: Download the Bank's Own CSV or OFX Export
The cleanest bank statement data never touches a PDF. Most online banking portals have a transaction download alongside the statement archive, typically as CSV and often in an accounting format such as OFX, QFX or QBO. Where that download covers the period you need, use it: the amounts come straight from the bank's system, so there is nothing to misread.
The catch is coverage. The download window, the formats on offer and the columns differ by bank and account type, and many portals only offer recent activity as data while older months exist only as PDF statements. Closed accounts, statements a client emailed you, and periods before you had online access are PDF-only too. That is the gap every other method on this page fills.
Tip: even a bank CSV should be checked once against the PDF statement for the same month — opening balance plus the CSV's transactions should equal the statement's closing balance. Pending card transactions and date cut-offs are the usual reasons it does not.
Method 2: Manual Copy and Paste
The most basic approach is to open your PDF bank statement, select the transaction text, paste it into Excel, and then split it into columns with Text to Columns or by hand. For a short statement with a handful of transactions, this is sometimes acceptable.
Cons
- ✕Slow: every row has to be split or retyped
- ✕Data pastes as unstructured lines of text
- ✕Dates, amounts, and descriptions mix together
- ✕Completely fails on scanned PDFs
- ✕Wrapped descriptions become extra rows
- ✕Not scalable beyond a few pages
When it works
- Statement has only a few transactions
- PDF is digital (not scanned)
- One-off task with no time pressure
- No accounting software import needed
Method 3: Excel Power Query “From PDF”
Excel can read tables out of a PDF with its Power Query PDF connector: Data → Get Data → From File → From PDF. Pick the file and a Navigator window lists every table and page it detected; choose one and either Load it straight into a sheet or click Transform Data to clean it in the Power Query Editor first.
Two connector options matter for bank statements. MultiPageTables (on by default) combines similar tables on consecutive pages into one, which is what you want for a statement that runs over several pages. StartPage and EndPage limit the pages examined, useful for skipping a summary page or for large files. Both are set by editing the Pdf.Tables step in the formula bar or Advanced Editor.
The weak spot is the multi-line row. When a description wraps onto a second line, the connector can return it as a separate row with no date or amount. Microsoft's own documentation suggests fixing that in Power Query — fill values down with Table.FillDown or merge adjacent rows with Table.Group. Expect to also remove repeated page headers and “balance carried forward” lines by hand.
Limitation
Microsoft lists the PDF data source for Excel on Windows with a Microsoft 365 subscription; it is not available in Excel for Mac or Excel for the web, and the perpetual Excel 2019 does not include it. It reads text-based PDFs only — a scanned statement returns no usable table.
Method 4: Tabula, Camelot and pdfplumber (Text PDFs)
For text-based statements, free open-source tools give you more control than Excel. Tabula is a free desktop app: you draw a box around the transaction table on each page and export the selection as CSV or Excel. Camelot and pdfplumber are Python libraries: Camelot returns each table as a pandas DataFrame you can export to CSV, JSON, Excel and other formats, and pdfplumber's extract_tables() returns every table on a page as lists of cell text, with visual debugging to see where it drew the lines.
All three share one hard limit, stated in their own documentation: they work on text-based PDFs, not scanned ones, and none of them performs OCR. They also only find the table — joining wrapped descriptions, telling a debit from a credit when both sit in one column, dropping page headers and checking the balance is code you write per bank layout. If you go this way, our bank statement parser in Python page walks through what that code has to handle.
| Tool | Type | Scanned PDFs | Output |
|---|---|---|---|
| Tabula | Free, open-source desktop app (Java) | No — text-based only | CSV, Excel |
| Camelot | Python library | No — text-based only | CSV, JSON, Excel, HTML, Markdown, SQLite |
| pdfplumber | Python library | No — no OCR; best on machine-generated PDFs | Python lists you write out yourself |
| OCRmyPDF | Command-line tool using Tesseract | Adds a text layer so the tools above can read the page | Searchable PDF |
Method 5: OCR Software for Scanned Statements
OCR (Optical Character Recognition) converts images and scanned PDFs into machine-readable text. Tools like Adobe Acrobat, ABBYY FineReader, and Tesseract can extract text from scanned statements. OCRmyPDF, which runs Tesseract, adds an invisible text layer to a scanned PDF so that Excel or Tabula can then treat it like a digital one.

The problem with OCR alone is that it only recognises characters and words — it does not understand financial structure. The output is text: dates, descriptions, and amounts in reading order, without knowing which column each belongs to. On a skewed or faint scan, it also misreads characters — a 3 read as an 8, a decimal point lost — and nothing in an OCR tool notices, because it has no idea what the numbers should add up to.
Method 6: A Bank Statement Converter (Recommended for PDFs)
A bank statement converter combines the steps above and adds the part the generic tools leave out: it reads the page as a statement. It knows that a column of numbers on the right is a balance, that a wrapped line belongs to the transaction above it, that “Balance brought forward” is not a transaction, and that a minus sign, a trailing “DR” or brackets all mean money out.
Because it knows what a statement is, it can also check itself. FlowParse compares the extracted rows with the statement's own printed figures — opening balance, closing balance and, where printed, the running balance on every row — and tells you whether they agree. That check is what turns “the table looks right” into “the table is complete”, and it works the same on digital and scanned statements.

Where Bank Statement Extraction Fails (and How to Spot It)
Every method above fails in the same handful of places, because those places are where a statement's visual layout and its data disagree. A row that looks like one transaction on paper can be two lines of text in the file; a number that is obviously a balance to a reader is just another number to a table tool. Knowing these failure points tells you where to look first when an extraction “came back wrong”.

| Problem | What you see in the spreadsheet | How to catch or fix it |
|---|---|---|
| Scanned pages | Empty table, or garbled characters and misread digits | Select-text test first; OCR is required; always run the balance check on scans |
| Multi-line descriptions | Extra rows with a description but no date or amount | Merge each orphan line into the row above (Table.FillDown / Table.Group in Power Query) |
| Split debit and credit columns | Amounts in the wrong column, or all positive | Spot-check a known payment and a known deposit; sum each column against the statement's totals |
| Single signed Amount column | Minus signs, trailing DR/CR or brackets read as text | Normalise to one sign convention before importing |
| Running balance column | Balance imported as a transaction amount, or shifted one row | Recompute: previous balance + amount must equal the printed balance on every row |
| Page headers and footers | Column titles, account number or page numbers repeated as rows | Filter rows where the date column is not a date |
| Brought / carried forward lines | A transaction equal to the whole balance | Delete them; they are balances, not money movement |
| Dates without a year | Dates parsed into the wrong year, especially across December–January | Take the year from the statement period, not from today |
| Day/month order | 3 April and 4 March swapped; impossible dates rejected | Check against the statement period and the bank's country |
Why the running balance is the most useful column
Many people delete the balance column after extraction because they only want the transactions. Keep it until you have checked the data. A printed running balance is the bank telling you, on every row, what the total should be at that point. If your extracted amounts reproduce it row after row, the extraction is complete; the first row where they stop agreeing is exactly where a transaction was dropped, duplicated, misread or given the wrong sign. Statements without a running balance can still be checked at the total level, but the error can then be anywhere on the statement.
This is also why a statement's summary box matters. Many banks print the total paid in and total paid out for the period. Those two figures let you check the debit and credit columns separately, which catches a payment that landed in the deposits column — an error that a single net total can hide when two mistakes cancel out.
Skip the clean-up step
Upload a statement and get date, description, debit, credit and balance columns, already checked against the statement's own balances.
How FlowParse Extracts Transactions: Step by Step
FlowParse combines OCR with layout-aware extraction to pull transactions out of digital and scanned PDF bank statements, then checks the result against the statement's own balances. Here is how the process works:
Upload Your PDF
Drag and drop your bank statement PDF onto the FlowParse uploader. Supports digital PDFs, scanned PDFs, and image files (JPG, PNG). Multi-page statements are processed as a single document.
OCR Detection
FlowParse detects whether each page contains selectable text or only an image. Scanned pages are read as images, so a statement that mixes digital and scanned pages still comes out as one table.
AI Extraction
The extractor reads the whole document, identifies the transaction table structure, joins wrapped descriptions, skips page headers and carried-forward lines, and extracts every row — date, description, debit, credit, and running balance — into a normalised dataset.
Balance Check & Review
Opening balance plus transactions is compared with the closing balance, and printed running balances row by row. The verdict is reconciled, failed (with the rows named) or not verifiable. You can edit any value in the preview before exporting and the check runs again.
Export to Excel or CSV
Click Export to download a clean .xlsx or .csv file. The Excel export includes separate columns for date, description, debit, credit, and balance. The CSV is formatted for direct import into QuickBooks, Xero, Sage, and other accounting tools.

What Data Can Be Extracted From a Bank Statement?
FlowParse extracts all structured fields present in your bank statement. The exact fields depend on your bank, but the following are extracted wherever present:
| Field | Extracted | Notes |
|---|---|---|
| Transaction Date | Yes | Normalised to YYYY-MM-DD |
| Value Date | Yes | Where present in statement |
| Description | Yes | Full merchant/payee name |
| Debit Amount | Yes | Money out, negative values |
| Credit Amount | Yes | Money in, positive values |
| Running Balance | Yes | Per-row balance column |
| Currency | Yes | ISO code (GBP, EUR, USD) |
| Transaction Type | Yes | Direct Debit, Transfer, etc. |
| Reference Number | Yes | Where present |
| Opening Balance | Yes | Statement header |
| Closing Balance | Yes | Statement footer |
| Statement Period | Yes | From / To dates |
| Account Number | Yes | Partial, for identification |
| Bank Name | Yes | From header/footer |
How to Convert PDF Transactions to Excel
Converting PDF bank statement transactions to Excel is the most common use case for bank statement extraction. Here is the exact process using FlowParse:
- 1Go to FlowParse Bank Statement to Excel →
- 2Upload your PDF bank statement (drag and drop or click to select)
- 3Wait for extraction to finish — scanned and long statements take longer than short digital ones
- 4Read the balance verdict, then review any rows it names in the preview
- 5Click Export → Excel to download your .xlsx file
The resulting Excel file contains one row per transaction with separate columns for date, description, debit amount, credit amount, and running balance. The header row is formatted and the data is ready for pivot tables, VLOOKUP, or direct accounting software import.

Converting PDF Bank Transactions to CSV
CSV (Comma Separated Values) is the universal import format for accounting software. If your goal is to get bank transactions into QuickBooks, Xero, Sage, or FreshBooks, CSV export is the fastest path.
FlowParse's CSV export is pre-formatted to match the standard import requirements of all major accounting platforms. No reformatting required — download and import directly.
How to Check a Bank Statement Extraction
An extraction that looks tidy is not the same as one that is complete. A missing row, a duplicated row or one misread digit leaves a perfectly neat spreadsheet. The statement itself gives you everything you need to prove the data — three checks, in this order, catch nearly every extraction error before it reaches your ledger.

1. Opening balance + transactions = closing balance
Take the opening balance printed on the statement, add every credit, subtract every debit, and compare the result with the printed closing balance. In Excel that is one formula: =Opening + SUM(Credits) − SUM(Debits). If it matches to the cent, no transaction is missing and none is counted twice. If it does not, the size of the difference is your best clue:
| Worked example (illustrative figures) | Amount |
|---|---|
| Opening balance (printed) | 2,450.00 |
| + Sum of extracted credits | 3,200.00 |
| − Sum of extracted debits | 2,915.40 |
| = Expected closing balance | 2,734.60 |
| Closing balance (printed) | 2,694.60 |
| Difference | 40.00 |
- A difference equal to one transaction's amount (here, a 40.00 payment) means that row is missing or duplicated.
- A difference equal to twice an amount (here, a 20.00 transaction) means its sign is flipped — a debit landed in the credit column or the other way round.
- A difference of 9, 90 or 900 times something often points to two transposed digits, a classic OCR and typing error.
- A difference equal to the opening balance means a 'balance brought forward' line was imported as a transaction.
2. Row counts per page
Count the transactions on each page of the PDF and compare with the rows you extracted for that page. It sounds tedious, but on a long statement it is the quickest way to find a page that was skipped entirely or read twice, and it tells you where to look before you scan hundreds of rows. A page with more extracted rows than printed transactions usually means wrapped descriptions became extra rows; fewer usually means the last rows above a page break were cut off.
3. Recompute the running balance row by row
If the statement prints a balance on every row, add a helper column: previous balance plus this row's credit minus its debit. Compare it with the extracted balance. The first row where the two disagree is the faulty one — not somewhere on the statement, but that exact row. This is the check FlowParse runs on every statement automatically; the bank statement validation page explains its three verdicts — reconciled, failed with the rows named, or not verifiable when nothing is printed to check against — in detail.
What a passed check proves — and what it does not. A matching balance proves the extracted data is consistent with the statement's own figures. It does not prove the PDF itself is genuine; a carefully edited document can still add up. For lending or compliance decisions, confirm the statement with the bank.
Financial Data Reconciliation From PDF Statements
Extraction and reconciliation are often said in one breath, but they are two different checks. The balance check above proves the spreadsheet matches the statement. Reconciliation proves the statement matches your books — that every bank movement is recorded in the ledger, and every ledger entry for the account actually went through the bank. You need the first before the second is worth doing: reconciling against an incomplete extraction just produces false differences.
- 1Prove the extraction first. Opening + transactions = closing for every statement in the period. Fix any failed statement before going further.
- 2Agree the opening position. The statement's opening balance should equal the ledger's reconciled bank balance at the end of the previous period, adjusted for items that were outstanding then.
- 3Match transactions. Match on amount and date, allowing a few days for clearing, then confirm with the description or reference. One-to-one matches first, then one payment against several invoices.
- 4List what is left. Unmatched bank lines are usually missing entries — bank fees, interest, direct debits nobody recorded. Unmatched ledger lines are usually timing items: cheques not yet presented, deposits in transit.
- 5Explain the difference. Closing bank balance, plus deposits in transit, minus outstanding payments, should equal the ledger balance. Anything left over is an error to find, not a figure to write off.
The step-by-step version, with an example and the common traps, is in our guide on how to do a bank reconciliation. If what you need to match is invoices against payments, FlowParse's invoice-to-bank reconciliation engine matches invoices against bank statement transactions and lists the unpaid ones.
One practical point: keep the extracted file and the PDF together, and keep the balance-check result with them. When an auditor or a client asks how a figure was derived, “extracted from the March statement, which reconciles to its printed closing balance” is an answer; “I copied it from the PDF” is not.
Scanned Credit Card Statements to Clean CSV
Scanned credit card statements combine the two hardest cases on this page: there is no text layer, so Excel, Tabula, Camelot and pdfplumber cannot read them, and card statements use conventions that differ from bank accounts. Getting a clean CSV out of one takes four steps, whatever tool you use.

1. Read the image
OCR or a converter that reads scanned pages. Straighten and crop phone photos first; skew and shadows cause most misread digits.
2. Fix the sign convention
On a card statement, purchases increase what you owe and payments reduce it — the opposite of a bank account. Decide which direction is positive in your CSV and apply it to every row, including refunds.
3. Separate the sections
Card statements often split payments, purchases, fees and interest into separate blocks, sometimes one block per cardholder. Each needs to end up in one table with a consistent column set.
4. Check against the summary
Previous balance + purchases + fees + interest − payments and credits = new balance. The statement's summary box prints all of these, so a scanned card statement can be proven just like a bank statement.
Does Reducto handle scanned PDF credit card statements and output clean CSV?
This comes up because Reducto is a well-known document API. According to its documentation, Reducto accepts scanned documents among its supported inputs, and its Parse endpoint can return tables in several formats, CSV among them; its Extract endpoint returns fields you define as JSON. Its docs also describe a merge_tables option that joins consecutive tables with the same column count and say the result should be reviewed on complex documents.
So the honest answer is: it can read the scan and hand back table text as CSV, but it is a general-purpose developer API, not a statement tool. Its documentation does not describe credit-card-statement handling, so the steps that make the CSV clean — choosing the sign convention, merging payment and purchase sections, dropping summary lines, and proving the result against the new balance — are code you write on top. Our Reducto alternative comparison covers when each makes sense.
If you want the finished file rather than an API, FlowParse's credit card statement to Excel converter reads scanned and digital card statements and exports CSV or Excel, and the scanned bank statement converter does the same for bank accounts — both with the balance check described above.
Try it on your own statement
The free plan includes 10 pages per month. Originals are deleted automatically 30 days after upload.
Common Mistakes and Best Practices
Mistakes
- ✕Importing into accounting software before checking the closing balance
- ✕Deleting the running balance column before the check is done
- ✕Converting several months into one file without checking each month's closing balance is the next month's opening
- ✕Trusting OCR output on a scan because the table looks neat
- ✕Letting Excel reinterpret dates or strip leading zeros from references when opening a CSV
- ✕Importing a period that overlaps a bank-feed import, which creates duplicates
Best practices
- Use the bank's CSV/OFX where it exists; extract PDFs only for what it does not cover
- Run the select-text test to know whether you are dealing with a scan
- Prove every statement: opening + transactions = closing
- Chain statements: each closing balance must equal the next opening balance
- Keep one sign convention and one date format across all accounts
- File the PDF, the extracted file and the check result together
For the CSV-specific details — delimiters, date formats and what each accounting tool expects — see how to convert a PDF bank statement to CSV. For tables in other financial documents, such as annual reports and P&L statements, see how to extract tables from financial PDFs.
Benefits of AI Transaction Extraction
No Retyping
Upload the PDF instead of splitting lines by hand. Several months of statements can be processed in one sitting.
Provable Completeness
The balance check compares the rows with the statement's own opening, closing and running balances, so you know when something is missing.
Structured Output
Every extraction produces a clean, normalised table — same columns every time, regardless of bank or format.
Automated Bookkeeping
Feed extracted transactions directly into reconciliation workflows and accounting software without reformatting.
Secure & GDPR Compliant
The original PDF is deleted automatically 30 days after upload. Documents are visible only to your account and never used for AI training.
Any Bank, Any Format
Extraction reads each layout as it comes. No templates to configure, no rules to maintain.
Supported Banks & Statement Formats
FlowParse works with any bank that produces PDF statements. There is no per-bank template to set up — each statement is read as it comes, and the balance check confirms whether it came out complete. Here are some of the most commonly used banks:

Don't see your bank listed? FlowParse works with any PDF bank statement — not just the ones listed above. Upload one statement on the free plan and check the verdict before you commit to more.
Frequently Asked Questions
How do I extract transactions from a PDF bank statement?
First check whether your bank offers a CSV or OFX download for the period — that is the cleanest source. If you only have the PDF, a text-based statement can go through Excel's From PDF import or a table tool like Tabula, and a scanned one needs OCR first. A bank statement converter such as FlowParse does both in one upload and returns Excel or CSV with date, description, debit, credit and balance columns. Whatever the method, finish by checking that opening balance plus all transactions equals the closing balance.
Can I convert PDF transactions to Excel?
Yes. Converters like FlowParse turn PDF bank statement transactions into an Excel (.xlsx) file with one row per transaction and separate columns for date, description, debit, credit and balance. Excel itself can import tables from a text-based PDF through Data → Get Data → From File → From PDF on Windows.
Does OCR work on scanned bank statements?
OCR is the only way to read a scanned statement, because there is no text in the file — only a picture of the page. OCR gets the characters back; it does not know which number is a debit and which is a balance, so the columns still have to be rebuilt. Poor scans (skewed, low resolution, faint print) produce more misread digits, which is why a balance check after extraction matters most on scans.
What is bank statement parsing?
Bank statement parsing is the automated process of reading a PDF bank statement and extracting structured transaction data — dates, descriptions, amounts and balances — into a usable format like Excel or CSV.
Can AI extract running balances from bank statements?
Yes, where the statement prints them. FlowParse extracts the running balance column plus the opening and closing balances, and uses them to check its own work: each row's balance should equal the previous balance plus the amount. Statements without a running-balance column are marked 'not verifiable' rather than passed.
Can I export bank statement data to CSV?
Yes. FlowParse exports both Excel (.xlsx) and CSV. CSV is the usual route into accounting tools like QuickBooks, Xero, Sage and FreshBooks.
Which banks are supported?
FlowParse reads the statement layout rather than relying on a per-bank template, so it works with PDF statements from banks such as Revolut, Monzo, N26, Wise, HSBC, Barclays, Chase and Citi, and from banks that are not on any list. The balance check tells you whether a given statement came out complete.
How accurate is bank statement extraction?
The honest measure is not a percentage but whether the statement balances. FlowParse checks every statement against its own printed figures — opening balance plus transactions must equal the closing balance, and each running balance must follow from the row before. The result is one of three verdicts: reconciled, failed (with the exact rows named), or not verifiable when the statement prints nothing to check against.
Can I extract transactions from a password-protected PDF?
Yes. When you upload a password-protected statement, FlowParse asks for the password and decrypts the file before extraction. Most free table tools need you to remove the password first, for example by saving an unlocked copy from a PDF viewer you have opened it in.
What if my bank statement is a scanned image inside a PDF?
FlowParse detects pages without a text layer and reads them as images, then runs the same extraction and balance check as for a digital PDF. Tabula, Camelot and pdfplumber do not read scanned pages; you would have to add a text layer first with an OCR tool such as OCRmyPDF.
How many pages can I process at once?
A multi-page statement is uploaded as one document and its transactions come out in one spreadsheet. Each page counts toward your page allowance; the free plan includes 10 pages per month.
Is my bank statement data secure?
Each document is visible only to the account that uploaded it. The original PDF is deleted automatically 30 days after upload, and your documents are never used to train AI models.
Can I import the CSV into QuickBooks or Xero?
Yes. FlowParse's CSV can be imported into QuickBooks, Xero, Sage, FreshBooks, Wave and Zoho Books, and there are dedicated exports such as QBO for QuickBooks.
What is the difference between OCR and AI extraction?
OCR converts an image or scanned PDF into text. Extraction then decides what that text means — which numbers are amounts, which are dates, which lines belong to one transaction. OCR alone leaves you with lines of text that still need to be split into columns.
Does FlowParse work with international bank statements?
Yes. FlowParse handles statements in multiple languages and currencies — EUR, GBP, USD, CHF and others — including different date orders and decimal separators.
What is the best way to extract data from bank statements?
Use the bank's own CSV or OFX download when it covers the period you need. When you only have PDFs — older months, a client's statements, a closed account — use a method that keeps the columns intact and lets you prove the result: a converter with a balance check, or Excel/Tabula followed by your own opening + transactions = closing test.
How do I check that an extraction is complete?
Add the opening balance to the sum of credits minus the sum of debits; the result must equal the printed closing balance. Then compare row counts page by page against the PDF, and if the statement prints a running balance, recompute it row by row — the first row where it breaks is where a transaction was dropped, duplicated or misread.
Can Excel extract tables from a PDF bank statement?
Yes, on Windows. Data → Get Data → From File → From PDF (the Power Query PDF connector) lists the tables it finds and can combine similar tables on consecutive pages. Microsoft lists the PDF source for Excel on Windows only, not Excel for Mac or the web, and it does not read scanned pages. Multi-line descriptions often need cleaning afterwards.
Can Reducto turn scanned credit card statements into CSV?
Reducto's documentation lists scanned documents among supported inputs and offers CSV as a table output format of its Parse API, so a developer can get each detected table back as CSV. It is a general document API, not a statement tool: mapping columns, fixing card sign conventions, joining tables across pages and checking the balance are left to your code. FlowParse does those statement-specific steps and returns a finished CSV or Excel file.
Conclusion: Which Bank Statement Extraction Method to Use
Manual copy-paste is slow, error-prone, and fails on scanned PDFs. Excel's From PDF import and Tabula work on clean text PDFs but need post-processing and cannot read scans. OCR gets the text out but leaves the structuring — and the checking — to you.
If your bank still offers the period as a CSV or OFX download, start there. For everything that only exists as a PDF — and for every scan — a bank statement converter is the method that keeps the columns intact and proves the result with a balance check. Whichever method you use, do not import a single row until opening balance plus transactions equals the closing balance.
Related Guides & Tools
Extract transactions from your bank statement right now
Upload your PDF bank statement and get a clean, structured Excel or CSV file with a balance verdict. The free plan includes 10 pages per month.

