Skip to main content

Import transactions from CSV

Import bank statements by CSV when a live connection is unavailable — LHV, Swedbank, SEB and Wise formats recognised, with duplicates skipped automatically.

A live bank connection is the comfortable route, but CSV import covers everything it can't: a bank or payment service that isn't in the connection list, history from before the date you connected, or a simple preference for not linking your bank at all. The destination is identical either way — imported transactions land in the same queue and go through the same reconciliation as connected ones.

CSV import also pairs well with a live connection. A direct connection only reaches back 90 days, so a statement export is how the older history gets in — see Import your financial history for the full backfilling picture.

Exporting a statement from your bank

Every internet bank can produce an account statement as a file: log in, open the statement or transactions view for the account, pick the period and choose CSV as the format. Arvello accepts .csv, .tsv and .txt files, and recognises the export formats of LHV, Swedbank, SEB and Wise out of the box — Estonian column names, semicolon delimiters, comma decimals and DD.MM.YYYY dates included. Files from other banks work too; they just need their columns mapped by hand on the first import.

Importing a statement

1

Create a CSV bank account (first time only)

Go to Banking → Bank Accounts → Add Bank Account and choose CSV Import. Give the account a label such as "LHV Business" or "Wise EUR", plus its IBAN and currency. This is the account your statements will import into from now on.

Upload the file

Open the account card, select Upload Statement and drop your file into the wizard.

Map the columns

Arvello detects which bank the file came from and pre-fills the mapping; for anything else it makes a reasonable guess from the column names, which you can correct. A date column is required, along with an amount — either a single signed Amount column, or separate Debit and Credit columns. Description, counterparty name and IBAN, payment reference and currency are optional, but the more of them you map, the better auto-matching and rules work later. The mapping is saved per account, so the next statement sails straight through this step.

Preview and import

The preview shows the first 50 rows as Arvello will record them — a moment to confirm the dates parsed correctly and outgoing payments show as negative. Then Import. The result screen reports how many transactions were imported, how many duplicates were skipped and any rows that failed.

Categorisation rules and auto-matching run over the new arrivals straight away, so by the time you open the transaction list, the routine items may already be handled. Whatever remains sits in "Needs review", ready for reconciliation.

Duplicates and re-importing

Each imported row gets a fingerprint built from its date, amount, description and counterparty. If a row with the same fingerprint already exists in that account, it is skipped — so re-importing a statement that overlaps a previous one is safe, and the result screen simply reports the overlap as duplicates skipped. There is no need to trim exports to exact date ranges before uploading.

ℹ️Genuinely identical transactions

Two real transactions that match on all four fields — same day, same amount, same description, same counterparty — look like one transaction to the duplicate check, so the second is skipped. It's rare, but if the books are a few euros adrift after an import, identical card payments are a reasonable suspect. Editing the description of one row in the CSV before importing makes them distinct.

One other quiet filter applies: transactions dated on or before your opening balance cutover date are skipped automatically, since that period is already represented in your opening balances and importing it again would double-count. If an import comes up shorter than the file, the dates are worth checking against your cutover before suspecting anything more exotic.