Statements
How to Import Bank Statements into Bankflow
Upload PDF, CSV, Excel, or JSON statements, choose which pages are read, map spreadsheet columns, and understand what happens while a statement processes.
Last verified in Bankflow on September 14, 2026.
What You Can Import
Bankflow reads bank and credit card statements in four formats:
- PDF, including scanned, multi-page, and password-protected statements.
- CSV or TSV exports from your bank's website.
- Excel workbooks (.xlsx and .xls).
- JSON transaction files.
Each file can be up to 50 MB. Photos are not accepted as statements. If you have a photo of a receipt or an invoice, use Convert instead, which reads documents rather than bank activity.
Step 1: Open the Importer
Go to Statements in the sidebar and click Import statements. The panel that opens has two tabs: Upload files for files on your computer, and Email import for statements you forward from your inbox (see importing by email).
On the Upload files tab, drag files onto the drop zone or click Choose files. You can add several statements at once, and add more with Add files before you confirm. Nothing is imported until you confirm the selection.
Step 2: Choose Pages (Optional)
Many statements carry pages you don't want read: a cover letter, terms and conditions, marketing inserts, or another account's summary. Every PDF in the list has a Choose pages button. It opens the file as page thumbnails so you can keep only the pages that matter.
Pages you leave out are never read and never charged. Credits are counted per page (see credits and billing), so trimming boilerplate saves credits on every import.
Skip the same pages every month
If a bank always ends its statements with the same two pages of terms, set a page rule once instead of choosing pages every time. Open Statements, go to the Banks tab, open the bank's menu, and choose Manage bank. Under Pages to skip on every import, set Skip first and Skip last.
- The rule applies to new imports from that bank, including statements that arrive by email or through a workflow.
- It only runs when Bankflow recognises the statement as coming from that bank. If it doesn't, the whole statement imports as usual.
- It never runs if it would empty a statement or take more than half of a short one, so a rule written for a long statement can't gut a short one.
- Choosing pages yourself always wins. If you pick pages for a file, including keeping all of them, the bank's rule is ignored for that file.
- You need to have imported at least one statement for the bank before its page rule can be set.
Step 3: Decide How Much Bankflow Finishes for You
Below the drop zone is a checkbox labelled Finish statements automatically. With it on, Bankflow counts the transactions and balances it read straight away. Anything it couldn't check is imported with a note attached rather than held back.
With it off, a statement with warnings is held out of your totals until you review it. Either way, Bankflow always stops to ask when:
- the statement's currency is unclear,
- the statement looks like one you already imported, or
- nothing could be read from it.
This is a saved preference, not a per-upload choice. It's the same setting as Count statements that have warnings in Settings.
Step 4: Map Spreadsheet Columns
CSV, Excel, and JSON files open a Map columns dialog before import. Bankflow detects the columns for you, and you review the mapping before anything is saved:
- Date and Description are required. Balance is optional.
- Choose Separate debit & credit if your file has a withdrawals column and a deposits column, or Single amount column if it has one signed amount.
- For a single amount column, you can point to a Dr/Cr column, or tell Bankflow whether a negative number means money out or money in.
Password-Protected PDFs
If a PDF is locked, Bankflow asks for the password rather than failing the file. Passwords live under Settings, Security & privacy:
- Reusable PDF passwords are tried automatically whenever an imported PDF is locked. Add the ones your banks use and most locked statements open without a prompt.
- Source-specific passwords are saved to a bank after a locked import succeeds, so the next statement from that bank opens on its own. Removing one forgets that password everywhere it was saved.
While It Processes
Once you confirm, each file joins the processing queue. The activity tray shows each statement's progress, and the Imports tab on the Statements page keeps the full record: what's running, what finished, and what each import cost. Most statements finish in under a minute.
If you'd like to know when a long import finishes while you work in another tab, turn on Notify when ready before you confirm. It uses your browser's notifications.
How the Currency Is Decided
Every amount needs a currency, and Bankflow never guesses one silently. It reads the statement first: currency codes, and symbols like ₹, £, and € that belong to exactly one currency. Where a statement is less clear, it falls back to a currency you confirmed for the same bank before, then to the bank's home country, then to your display currency. Whenever it assumed rather than read, it tells you why.
If none of that settles it, the statement waits for you to choose. Look for Set currency on the statement's row, or open the row menu and pick Select source currency. You can also choose Decide later and come back to it.
Duplicates
Uploading the exact same file twice doesn't process it twice. If a different file holds the same transactions as a statement you already imported, the new statement is marked Duplicate and held back so the money isn't counted twice. Click the badge to delete the duplicate.
Common Problems
A statement says it found no transactions. Check that the right pages were kept. If you're sure the statement has transactions, use Report a problem from the statement's menu, or report the result from the Imports tab. Credits for a result we got wrong are refunded.
The import is waiting for credits. Top up or upgrade from Billing, then resume it from the activity tray. Nothing you uploaded is lost.
The columns in a spreadsheet came out wrong. Delete the statement and import it again, correcting the mapping in the Map columns dialog before you confirm.
Next Step
Once a statement has imported, review it to see how well its balances and rows check out, or set up email import so next month's statement arrives on its own.