PDF extraction
Convert a bank statement PDF to CSV (3 ways)
Three ways to turn a PDF bank statement into CSV — drag-drop tool, copy-by-hand, or a paid bookkeeping subscription. Step-by-step, ranked by speed and accuracy.
You have a PDF bank statement — Chase, Bank of America, Wells Fargo, doesn’t matter — and you need it as a CSV. One row per transaction, columns for date, description, amount, balance. Maybe you’re feeding QuickBooks or Xero, maybe you’re reconciling against another system, maybe a client just asked.
Disclosure. This post is published by okraPDF, which sells one of the converters mentioned below. The recommendations describe categories, not vendor rankings.
There are three honest categories of approach:
- Drag-drop converter (under a minute): any of okraPDF, DocuClipper, ilovepdf, smallpdf, Lido, etc. all do roughly the same thing — drop the PDF, get a CSV. Quality varies; test on your statement.
- If you already pay for QuickBooks Online, Xero, or a bookkeeping suite: they all have an “import bank statement” flow. Use that — it’s already in your workflow.
- If you only need one row or two: copy each line into Excel by hand. Painful past 20 rows, fine for under five.
ACCT ••4521 Statement 04/01–04/30/2026
DATE DESCRIPTION AMOUNT BALANCE
04/15 AMAZON.COM*RX12 -42.50 4,231.18
04/16 ACH PAYROLL CO ID:9001 2,500.00 6,731.18
04/18 WHOLE FOODS MKT
#10402 BELLEVUE WA -87.42 6,643.76
— — page break — —
04/20 INTEREST PAYMENT +1.18 6,644.94
SUBTOTAL DEPOSITS 2,501.18
* Includes pending items. Member FDIC.
| date | description | amount | balance |
|---|---|---|---|
| 2026-04-15 | AMAZON.COM*RX12 | -42.50 | 4231.18 |
| 2026-04-16 | ACH PAYROLL CO | 2500.00 | 6731.18 |
| 2026-04-18 | WHOLE FOODS MKT #10402 BELLEVUE WA | -87.42 | 6643.76 |
| 2026-04-20 | INTEREST PAYMENT | 1.18 | 6644.94 |
- ✓ 4 rows = 4 real transactions — SUBTOTAL line + footnote dropped, not counted
- ✓ wrapped row stitched (Whole Foods, across the page break)
- ✓ Σ amounts (+2,371.26) = closing − opening balance
Synthetic sample — nothing is uploaded here. The real tool runs these same checks on your file. First statement free, no signup.
Drag-drop converters (under a minute)
Most consumer converters work the same way: open the page, drop the PDF, download a CSV. The shape of the result is similar across vendors:
- Open the converter (e.g.
okrapdf.com/tools/bank-statement-to-csv, DocuClipper, ilovepdf, smallpdf — any of them). - Drag the statement PDF onto the upload area.
- Wait while the parser reads the PDF (typical: 10–60 seconds depending on length and tier).
- Download the CSV.
The resulting CSV usually has one row per transaction with the columns your statement actually exposes — typically date, description, amount, balance, sometimes category or check_number. Debits should come back as negative numbers so summing the amount column gives net balance change.
For native (digitally generated) PDFs the parsing is mostly reliable across vendors. For scans, OCR runs first, so accuracy depends on scan quality — verify on your specific statement before trusting the output. A quick two-check (row count matches the transaction count; sum of the amount column equals the net balance change) catches the common arithmetic failures in 30 seconds — though not every failure, which is why there’s a fuller checklist below.
Method 2 — the format your accounting tool actually wants
If you’re a bookkeeper or accountant, reach for a real data format before you parse a PDF at all:
- Download OFX / QBO / CSV straight from the bank if it’s offered. QuickBooks Online and Xero import those directly into the bank feed, and a bank-issued file is always cleaner than anything reconstructed from a PDF. This is the biggest time-saver and the step most people skip.
- If your bank only gives you PDFs, run them through a dedicated bank-statement converter — DocuClipper, AutoEntry, Lido, or okraPDF — then import the resulting CSV/OFX into your books. The dedicated tools remember column mappings and flag low-confidence rows; past ~50 statements a month the subscription pays for itself.
One caveat worth stating plainly: don’t assume QuickBooks or Xero will parse a raw PDF statement for you. Their native importers expect OFX/QBO/CSV — the PDF→data conversion is a separate step (method 1 or a dedicated converter), and only then do you import.
Method 3 — type it into Excel by hand
Don’t underestimate this if the statement is short. Open Excel, type:
Date Description Amount Balance
2026-04-15 AMAZON.COM -42.50 1,234.56
2026-04-16 PAYROLL DEPOSIT 2,500.00 3,734.56
Realistic budget: ~30 seconds per row if you’re fast, ~1 minute if you’re double-checking against the statement. Past 30 rows it’s slower than method 1 and you’ll start making errors.
Which method should I use?
| If… | Use |
|---|---|
| You have one statement and need it now | Method 1 (drag-drop tool) |
| You process bank statements weekly for clients | Method 2 (subscription tool) |
| The statement has fewer than 20 rows | Method 3 (hand-typing) |
| The bank offers OFX or QBO download directly | Skip the PDF — use OFX |
A note on accuracy
PDF bank statements are hostile to converters. Banks render them with merged cells, multi-page tables that break across pages, sub-totals that look like transactions, and footnotes glued to the bottom of every page. A naive converter will return garbage rows or skip pages.
A good converter reads the statement holistically: detects the transaction table region, stitches rows that span page breaks, drops sub-totals, and returns one clean row per real transaction. Whether any specific converter does this on your statement is something you can only verify by trying it. Don’t trust self-graded “99% accurate” claims from any vendor — the only honest evaluation is the two-check method on your own data.
Verify the output (60-second checklist)
No converter is perfect, and the two arithmetic checks above won’t catch a wrong date, a mangled description, a duplicated offsetting row, or a debit that came back positive. Before you trust a CSV, spot-check:
- Row count equals the number of transactions you can count on the statement.
- Opening balance + Σ(amount) = closing balance (the net-change check).
- Running balance ties row to row — each balance equals the previous one ± that row’s amount. This is the strongest single check: it catches missed, duplicated, and mis-signed rows at once.
- Signs are right — debits negative, credits positive. Credit-card statements often invert this.
- First and last transaction match the statement exactly (date, description, amount).
- Sub-totals and “balance forward” lines did not sneak in as transactions.
If your bank offers an OFX/QBO/CSV download, prefer it over any PDF parse — there’s nothing to verify.
Privacy
If your statement has account numbers, names, or anything sensitive, prefer:
- A converter that deletes uploads within 24 hours (most do, including okraPDF).
- A browser-only tool if the statement never needs to leave your device. There aren’t great browser-only bank-statement converters yet — the layout intelligence is hard to ship in WASM — but redaction and basic PDF-to-text usually run client-side.
Either way, don’t paste a statement into a public AI chat. The good chats won’t keep it; the bad chats will.
Bank-specific guides
If you know which bank your statement is from, the bank-specific page lists the products it covers and answers bank-specific questions (ZELLE QUICKPAY vs ZELLE TRANSFER, BB&T legacy formats, brokerage-linked sweeps, Vaults, Virtual Wallet sub-accounts, etc.):
- Chase bank statement to CSV
- Bank of America statement to CSV
- Wells Fargo statement to CSV
- Citi bank statement to CSV
- Capital One statement to CSV
- U.S. Bank statement to CSV
- PNC bank statement to CSV
- Ally Bank statement to CSV
- Truist bank statement to CSV (BB&T and SunTrust legacy formats too)
- Charles Schwab Bank statement to CSV
- Fidelity statement to CSV (Cash Management Account)
- SoFi bank statement to CSV
Ready to try it on your own statement? First one’s free, no signup, CSV downloads in your browser.