CSV Import
WealthMgr can bulk-import transactions from a CSV file. Imports run entirely in your browser against your local database, using the same write path as manually adding a transaction — including duplicate detection and your active automation rules. Nothing leaves your device until sync stores it (paid plans only).
Open the Import Transactions page at /transactions/import while signed in.
Supported file format
The importer accepts CSV files only. It does not support OFX, QFX, QIF, or other bank export formats, and WealthMgr does not connect to your bank or aggregate accounts. If your bank only exports OFX or QFX, convert it to CSV first with a tool like ofxstatement.
Your file needs a header row — the first row is read as column names. Completely empty rows are skipped during parsing.
Column mapping
Pick a CSV column for each transaction field WealthMgr understands:
| Field | Required | Notes |
|---|---|---|
| Date | Yes | See accepted date formats below. |
| Amount | Yes | A plain number, e.g. 1234.56. See the warning below. |
| Description | Yes | Free text. |
| Category | No | Added as a tag on the transaction. |
| Tags | No | Comma-separated; merged with the category, duplicates removed. |
| Currency | No | ISO currency code (case-insensitive). Falls back to your primary currency when unmapped or blank. |
| From Account | No | Account name; see Default accounts below. |
| To Account | No | Account name; see Default accounts below. |
When you select a file, WealthMgr auto-maps any column whose name matches a field after normalizing it — lowercased with non-letter characters stripped. So Date, date, and DATE all auto-map, and From Account maps to the From Account field. Anything not auto-mapped you can choose manually.
Warning
Accepted date formats
YYYY-MM-DD(also2026-1-5; output is always padded)- Slash dates
MM/DD/YYYYorDD/MM/YYYY— when the first number is greater than 12 it is read as the day, otherwise the first number is taken as the month. If your bank uses a day-first file with ambiguous dates, export toYYYY-MM-DDinstead. - Anything else (e.g.
Jan 5, 2026) fails validation — the row is reported as an error withInvalid date formatand nothing else changes.
Default accounts
Every transaction is recorded as a move of money from one account (From) to another (To). Select a default From account and default To account on the import page — both are required before the Import button enables. They apply to every row whose own account column is not mapped.
When you do map a From or To Account column, per-row values take over:
- A row with a blank cell in a mapped account column imports with that leg left empty — it shows up on the Review page as an incomplete transaction for you to finish, rather than silently going to the default.
- An account name is matched against your existing accounts by name (trimmed and case-insensitive). An unknown name is not guessed: the row still imports without that leg, and a notice such as
Account "…" not found — imported without that account; complete it on the Review pageappears in the Import Summary.
Currency and cross-currency legs
The Amount is booked on the source (From) leg in the row’s currency. When a row’s destination account has a different currency, WealthMgr converts the destination amount at a live exchange rate — the same pricing path the manual add form uses — so the destination account is never credited at face value in the wrong currency.
Each currency pair is looked up at most once per import run. If a rate cannot be resolved, only that row fails, with an error naming the pair; the rest of the file continues.
Your automation (categorization) rules apply to imported transactions just as they do to manually added ones — a rule can complete the From or To leg based on the row’s description and accounts.
Duplicates
Before writing each row, the importer checks your existing transactions:
- Exact duplicate — an existing transaction on the same date with the same amount and currency that shares an account leg is skipped and counted under “Skipped (duplicates)“. It is not written twice.
- Possible duplicate — an existing transaction on the same date with the same amount, but otherwise different, is still imported, and is flagged in the summary and paired on the Review page so you can merge or dismiss it.
Running the import
- Select the CSV file.
- Confirm the column mapping — required fields must be mapped to continue.
- Choose the default From and To accounts.
- Check the preview table (first 10 rows).
- Click Import. A progress bar tracks rows as they are written.
- Review the Import Summary: imported count, skipped duplicates, notices, and per-row errors with their row numbers.
Rows that fail validation or the write path are listed as errors and are not imported; valid rows still go through, so you can fix a failed export and re-run only the bad rows — exact duplicates from the first pass will be skipped on the second.
Limits
- Plan transaction limits apply: if you hit your plan’s cap mid-import, that row and the remaining rows are reported as errors and the run stops.
- There is no fixed row-count or file-size cap in the importer itself — it processes the file row by row in your browser.
Info