Short answer
Download a CSV, OFX or QFX file from online banking, one per account, for the date range you need. Check four columns: date order, amount sign, description and balance. Map the columns, preview the rows, leave duplicates unticked and import. Finman shows every row with its status and saves nothing until you confirm.
Import a statement free What a CSV statement is Finman import steps
What is a CSV bank statement?
A CSV (comma-separated values) bank statement is a plain-text table of your account activity: one row per transaction, with columns such as date, description, amount and often a running balance. Spreadsheets and budgeting apps can read it, unlike a PDF statement, which is a picture of the same data. Banks usually offer it next to OFX and QFX, two structured formats made for finance software.
| Format | What it is | Good to know |
|---|---|---|
| CSV | A plain table; every bank lays out the columns its own way | Check dates and amount signs after import |
| OFX | Open Financial Exchange, a standard file for bank transactions | Carries account details and a transaction ID per row, so imports are cleaner |
| QFX | Quicken’s version of OFX | Offered by many North American banks; reads like OFX |
| A printable statement | Good for records; budgeting apps cannot import it as data |
How to get a CSV file from your bank
- 01Sign in to online banking on a computer. Download options are often hidden or missing in mobile apps.
- 02Open the account and find the export. Look for Download, Export, Download transactions or Statements next to the transaction list.
- 03Pick the format. OFX or QFX when offered, otherwise CSV. A PDF statement cannot be imported as data.
- 04Pick the widest date range you need. Three months shows patterns; a year shows annual bills. Many banks default to a short range, so set dates yourself.
- 05One file per account. Name files clearly (checking-2026-01-to-06.csv) so two accounts never end up in one import.
The four columns that break imports
Open the file once in a spreadsheet before importing and check these four. They cause most broken imports.
- 01Date. Is 03/05/2026 the 3rd of May or March 5th? Canadian and US banks usually put the month first; European and Ukrainian banks usually put the day first.
- 02Amount sign. Some banks use one signed column (−45.00 for spending); others use separate Debit and Credit columns, or positive amounts plus a column that says Debit or Credit. Read the wrong way, every expense becomes income.
- 03Description. Often a cryptic merchant string such as SQ *COFFEE 0123. Some banks split it over two columns.
- 04Balance. A running balance is for reference. It must never be imported as a transaction.
Import your first statement
Finman reads CSV, OFX and QFX files and shows every row before anything is saved. Free during the open beta, no card.
Import a statement freeHow to import a bank statement in Finman
- Step 1File and accountChoose the CSV, OFX or QFX file, the Finman account and the bank format.
- Step 2Preview and mappingEvery row shown with its status; fix columns, date order, header.
- Step 3Pick rowsNew rows are ticked; duplicates and errors are not.
- Step 4ImportOnly ticked rows are written to the account you chose.
- 01Choose the file and account. CSV, OFX, QFX or QBO, up to 10 MB. Pick the Finman account it belongs to and, for CSV, the bank format; Finman also tries to recognise the layout from the header.
- 02Check the preview. Each row is marked New, Already imported, Duplicate in file, Skipped or Error. For CSV, a mapping panel lets you set the Date, Description (two columns allowed), Amount, Debit, Credit, Category and Currency columns, the day/month order and whether the first row is a header, then re-read the file.
- 03Read the warnings. If a bank’s column layout has not been confirmed against a real export, the wizard says so and asks you to check the Date and Amount columns. For an OFX file it shows the account number, type, currency and ledger balance from the statement.
- 04Pick rows and import. Untick anything you do not want. Choose whether to adjust the account balance by the imported total. Up to 5,000 rows go in per import.
- 05Spot-check five rows. Compare dates, amounts and signs with your bank’s screen before importing older months.
Which banks Finman reads
| Bank | How it comes in |
|---|---|
| monobank | Direct connection with a personal API token, stored encrypted |
| RBC Royal Bank, TD Canada Trust, Scotiabank, BMO, CIBC | CSV, OFX or QFX file you download from online banking |
| Tangerine, Wealthsimple Cash, EQ Bank | CSV, OFX or QFX file you download from online banking |
| Revolut, Wise | CSV export; each account in its own currency |
| Any other bank | Its CSV or OFX file through the generic mapping, or manual entry |
Finman never asks for your online banking password: apart from monobank, it reads the files you download and does not connect to the bank. Banking in Canada? See Finman in Canada. Several currencies? See multi-currency budgeting.

Avoiding duplicate transactions
- 01Already imported. Finman compares each row’s date, amount and description with what the account already holds. Two identical coffees on one day still count as two rows.
- 02Duplicate in file. A row repeated inside the same file is flagged. When the file carries a transaction ID (OFX, Wise), rows are compared by that ID.
- 03Overlapping ranges. Start each new export the day after the last one ended and keep a note of the ranges you imported.
- 04Pending rows. A pending charge can reappear later with a new date or amount. Import posted transactions only; in Revolut files, rows that are not completed are skipped automatically.
- 05Transfers between your accounts. A transfer shows in both accounts’ files. Record it once as a transfer so it counts as neither income nor spending.
After the import: categories
Each imported row gets a category from the file’s own category column if there is one, otherwise from the merchant category code (monobank files carry one) or from keywords in the description, in English, Ukrainian and Russian. Change any category by hand; the expense tracker page shows the rest of the routine. For merchants that repeat, create a rule (for example, every description containing “NETFLIX” goes to Subscriptions) and press Apply rules: Finman sorts every transaction still without a category. Start with the merchants that appear most often and carry the most money; the long tail of one-off small charges matters least. How the matching works is in how transaction categorization works.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Dates in the wrong month | Day and month read in the wrong order | Switch the day/month order in the mapping panel and re-read |
| Every expense shows as income | The file uses positive numbers plus a Debit/Credit column | Map the Debit and Credit columns, or the type column, instead of one Amount |
| Rows doubled | Overlapping date ranges or the same file imported twice | Leave rows marked Already imported unticked |
| Header row imported as a transaction | “First row is a header” was off | Tick it and re-read |
| Amounts look 100 times too big | Decimal commas (12,50) and thousands separators mixed in one file | Finman detects a decimal comma from the money columns; if the preview still looks wrong, clean that column in a spreadsheet and re-import |
| Balance in the app differs from the bank | Missing months, cash, or a skipped row | Run account reconciliation with the statement balance |
Rather skip bank logins altogether? See budget apps without a bank login. Coming from Mint with an old export? Apps that import Mint data covers what transfers.
Frequently asked questions
What is a CSV bank statement?
A plain-text file of your account activity with one row per transaction and columns such as date, description, amount and balance. Budgeting apps and spreadsheets can import it, which a PDF statement does not allow.
How do I get a CSV file from my bank?
Sign in to online banking on a computer, open the account, and look for Download, Export or Statements next to the transactions. Choose CSV (or OFX or QFX if offered), set the date range and download one file per account.
How do I import a bank statement CSV into a budgeting app?
Upload the file to the account it belongs to, check the column mapping (date, description, amount or debit and credit), confirm the day and month order, review the preview for duplicates and errors, then import. In Finman nothing is saved until the last step.
Why are my imported transactions duplicated?
Usually because date ranges overlap, the same file was imported twice, or pending charges came back as posted ones. Finman marks rows the account already holds as Already imported and leaves them unticked.
Is CSV or OFX better for importing?
OFX or QFX when your bank offers it: the format is standard and carries a transaction ID per row. CSV works with every bank but its columns differ, so check the mapping.
Which banks can I import into Finman?
monobank connects directly. RBC Royal Bank, TD Canada Trust, Scotiabank, BMO, CIBC, Tangerine, Wealthsimple Cash, EQ Bank, Revolut and Wise come in as CSV, OFX or QFX files, and any other bank’s CSV can be mapped by hand.
Is importing a CSV safer than connecting my bank?
It means no app holds standing access to your bank account; you decide which account and dates to share, file by file. You still trust the app with the transactions, so read where it stores them.
Bring your bank history in
CSV, OFX or QFX from RBC, TD, Scotiabank, BMO, CIBC, Tangerine, Wealthsimple Cash, EQ Bank, Revolut or Wise. Free during the open beta.
Get Started Free