How to convert a PDF bank statement to Excel
A PDF bank statement looks like a table, but it isn't one. It is text placed at coordinates on a page. Getting it into Excel means rebuilding the rows and columns, then making sure nothing was lost. Here are the options, in the order we'd try them.
Before you start: check for a CSV download
The cleanest data comes straight from your bank. Many online banking portals offer a transaction export as CSV, OFX, QFX or QIF, usually under the account's transaction history or a "Download" or "Export" menu.
If that option exists and covers the date range you need, use it. A bank export has no parsing step, so there is nothing to go wrong.
PDF conversion is for when the export doesn't exist: older periods, client statements, closed accounts, or banks that only issue PDFs.
Rowsafe reads your PDF in the browser and checks every row against the running balance.
Open the converter
Method 1: Excel Power Query ("From PDF")
Recent versions of Excel can read tables from PDF files directly.
- Open a blank workbook.
- Go to Data → Get Data → From File → From PDF.
- Select the statement. Excel shows a Navigator listing the tables and pages it detected.
- Click each candidate table to preview it. Statements often split into one table per page.
- Select the tables you want and choose Transform Data to open the Power Query editor, or Load to drop them straight into sheets.
- In Power Query, remove header rows, set column types (Date, Decimal Number), and use Append Queries to stack the pages into one table.
What to know:
- The PDF connector is available in Excel for Microsoft 365 on Windows. It is not available in every edition; older perpetual versions and, historically, Excel for Mac have not included it. If you don't see From PDF under Get Data, your version doesn't have it.
- Detection works best on statements with clear ruled tables. Statements laid out with whitespace instead of lines can come out as one wide column or with columns shifted.
- Power Query does not know what a bank statement is. It won't tell you if a row was dropped or if a debit landed in the credit column.
Method 2: Copy and paste
Open the PDF, select the transaction text, copy, and paste into Excel. It's quick for a single page. It is also where most errors come from.
Common problems and fixes:
| Problem | What happens | Fix |
|---|---|---|
| Whole rows land in one cell | Each line pastes as a single text string | Data → Text to Columns, delimited by spaces or fixed width |
| Multi-line descriptions | One transaction becomes two or three rows | Merge the continuation lines back into the row above before you split columns |
| Dates stored as text | Sorting and filtering fail; =ISNUMBER(A2) returns FALSE |
Text to Columns with column type Date and the right order (DMY or MDY) |
| DD/MM vs MM/DD | 03/04 becomes 4 March or 3 April depending on your system | Set the date order explicitly, never rely on auto-detection |
| Negatives in parentheses | (125.00) pastes as text |
Find ( replace with -, find ) replace with nothing, then convert to number |
| Trailing minus or CR/DR | 125.00- or 125.00 DR |
Strip the suffix and apply the sign with a helper formula |
| Thousands separators | 1,250.00 or 1.250,00 read as text |
Use Text to Columns → Advanced to set decimal and thousands separators |
| Repeated page headers | "Date Description Amount" appears every page | Filter the Description column and delete those rows |
Copy-paste is fine for ten transactions. For a few hundred, the cleanup takes longer than the paste, and every fix is a chance to introduce an error.
Method 3: Google Sheets
Google Sheets has no built-in PDF import. Opening the PDF in Google Docs and copying from there inherits every copy-paste problem above, often with columns reflowed.
The step everyone skips: checking the result
Whichever method you use, check the output before you rely on it. Most statements print a running balance after each transaction. That column is a built-in checksum.
Add a check column:
- Put the statement's opening balance in a cell, say
F1. - In the first transaction row, calculate the expected balance:
=F1 + C2 - D2(credit minus debit; adjust for your columns). - In the next rows:
=G2 + C3 - D3, and so on. - Compare to the printed balance:
=ROUND(G2 - E2, 2). Every value should be zero.
A non-zero difference points to the exact row where something went wrong: a missing transaction, a swapped sign, or a number that pasted as text. The reconciliation guide covers this in more detail.
Where Rowsafe fits
Rowsafe does the conversion and the check in one step, inside your browser.
- Nothing is uploaded. The PDF is read by JavaScript running on your own computer. You can confirm this in your browser's developer tools: there is no network request carrying your file.
- Every row is verified. Rowsafe recomputes the running balance for each transaction and flags any row that doesn't add up, so you see problems instead of hunting for them.
- Fix columns in a preview grid if a layout is unusual.
- Exports: CSV on the free plan. Excel (XLSX), QuickBooks (QBO), OFX, Xero-ready CSV and JSON on Pro.
The free plan converts 3 statements a day with CSV export and balance verification. Pro is $12/month and adds unlimited statements, batch conversion and the other export formats. See pricing.
Limitations, stated plainly: Rowsafe works on text-based PDFs, the kind you download from online banking. Scanned or photographed statements are not supported yet. Some unusual layouts need a manual column fix in the preview; the balance check tells you when that's the case.
A quick test for "text-based"
Open the PDF and try to select a single word with your cursor. If you can highlight and copy it, the PDF contains text and any of the methods above can work. If the whole page selects as one image, it's a scan, and you'll need OCR software first.
FAQ
Is it safe to use online PDF converters for bank statements? Most upload your file to their server. Whether that's acceptable depends on their retention policy and your obligations to clients.
Why are my dates wrong after converting? Usually a day/month order mismatch. A statement printed as DD/MM/YYYY, opened on a system set to MM/DD/YYYY, will swap day and month for any date where the day is 12 or under. Set the date format explicitly when importing.
Can I convert several months at once? In Power Query, load each file and append the queries. In Rowsafe, batch conversion and merging multiple PDFs is a Pro feature.
My statement has no running balance column. Can I still check it? Yes. Use the opening and closing balances from the statement summary: opening + total credits − total debits should equal closing.
Rowsafe reads your PDF in the browser and checks every row against the running balance.
Open the converter