How to Batch Convert Multiple Bank Statements to CSV
Most accounting and bookkeeping workflows involve more than one statement. A single year of monthly statements is 12 PDFs per account. A bookkeeper handling multiple clients, each with a checking account and a business credit card, can easily be looking at 50 or more PDFs per month. Processing these one at a time without a system creates disorganized output and data quality problems that surface later during reconciliation.
This guide covers a repeatable workflow: organize inputs, convert in batch, combine the output files, check for duplicates, and verify totals before import.
Step 1: Organize before you start
The quality of your output depends on the quality of your organization. Before converting anything, sort your PDFs by bank, account, and month.
Use a consistent file naming convention:
BankName-AccountLast4-YYYY-MM.pdf
Examples:
- Chase-4821-2025-01.pdf
- Chase-4821-2025-02.pdf
- WellsFargo-7744-2025-01.pdf
Keep each account in its own folder. If you work with multiple clients, keep each client in a separate parent folder before organizing by account. The structure you put in before conversion is the structure you will have when you combine CSVs later.
Step 2: Upload in batch
Statement Pro accepts multiple PDFs in a single upload. Drag all the PDFs for one account into the upload interface at once. Each file creates its own conversion job, and the status of each job is tracked independently. The system processes them in parallel.
Upload by account rather than by month (all January statements from all accounts at once). That grouping keeps the output organized and makes the combining step easier.
Step 3: Download and combine the CSVs
Download the CSV for each conversion job. At this point you have one CSV per monthly statement.
To combine them into a single file:
- Excel: Open the first file. Copy the data rows (not the header row) from each subsequent file and paste them below the last row of the combined file. Keep one header row at the top.
- Google Sheets: Import the first CSV. Then import each additional CSV with the import location set to Append to current sheet.
- Python: Use pandas to read all CSVs in a directory and concatenate them. A one-liner with glob and pd.concat works well for a folder of consistently named files.
After combining, sort by the date column in ascending order. Sorting puts everything in chronological order regardless of the sequence you pasted files.
Step 4: Check for boundary duplicates
The most common data quality problem in combined multi-month CSVs is boundary duplicates. These occur when a transaction posts near the statement cutoff date and appears in two consecutive statements.
To check for them:
- Sort the combined CSV by date (ascending).
- Look at the last five transactions of each statement period and the first five of the next.
- A row is a likely duplicate if it has the same date, the same description, and the same amount as a directly adjacent row.
- Delete one copy of any confirmed duplicate.
Not every bank does this. Chase and Bank of America rarely produce boundary duplicates in their PDF statements. Capital One credit card statements sometimes do, particularly for transactions that post close to the statement closing date. It is worth checking even if you do not expect to find any.
Step 5: Run a balance check
For each month, verify that the net movement in your CSV matches the difference between the opening and closing balances on the original statement.
The check is straightforward:
Closing Balance - Opening Balance = Sum of transaction amounts for the month
If the numbers do not reconcile, a transaction is missing or doubled. Go back to the original PDF for that month and compare it against the CSV row by row. The discrepancy will be somewhere in there.
Step 6: Import
Once the combined, deduplicated, balance-verified CSV is ready, import it into your accounting tool. If your conversion tool offers QBO output (for QuickBooks Online) or OFX output (for Xero), use that format instead of CSV to skip the column mapping step and get deduplication protection via transaction IDs. See OFX, CSV, and QIF: Which Bank Statement Export Format Should You Use? for a format comparison.
Tips for bookkeeping firms
Process one client at a time from start to finish. Mixing clients mid-workflow is how data ends up in the wrong file. Finish one client's statements completely before starting the next.
Keep a processing log. A simple spreadsheet noting client, bank, account, statement period, and processed date prevents gaps in coverage and duplicate processing.
Reconcile after import, not before. Import first, then reconcile in your accounting tool using the statement opening and closing balances. Reconciling against a draft import before it is in the system adds a step without adding protection.
Archive the source PDFs. Even after you have a clean CSV, keep the original PDFs. They are the source documents and may be needed if a transaction is disputed, an auditor requests backup, or a number in the CSV is ever questioned.