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 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. Silence here means a deposit — see “Deposits without a source” 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 To account on the import page — it is required before the Import button enables. The default From account is optional: money coming in with no source is a deposit, and deposits never need one (see below). A default applies 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 To 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. A blank From cell instead reads as a deposit (see below).
- 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.
Deposits without a source
A row with a positive amount whose destination resolves but whose source is simply absent — no From column mapped and no default chosen, or a blank From cell — is money arriving without an issuer. WealthMgr books it from a default “Other income” account, created automatically the first time an import hits such a row. Each of these rows carries the notice No source account — booked from the default "Other income" source in the Import Summary so nothing is silently invented for you.
If you already have an income account — a source in Categories wording (see Categories and accounts) — you use for these deposits, rename the “Other income” account or pick it as the default From account instead — future imports follow your choice. Rows whose From leg you named but that didn’t match any account are never rerouted to “Other income”; they stay on the Review page for you to complete, and negative or zero amounts likewise stay incomplete.
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 To account — and optionally a default From account (deposit rows without a source don't need one).
- 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.
Exporting transactions to CSV
The Transactions page has an Export button next to Import. It downloads your transactions as a CSV file named transactions-YYYY-MM-DD.csv. The export is the symmetric counterpart of the importer: it is filter-aware, so the file contains exactly the rows matching your active filters — account, pocket, tags, search text, and date range — with account names instead of internal IDs, ready to open in a spreadsheet or re-import.
Info