Skip to content
WealthMgr Docs

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:

FieldRequiredNotes
DateYesSee accepted date formats below.
AmountYesA plain number, e.g. 1234.56. See the warning below.
DescriptionYesFree text.
CategoryNoAdded as a tag on the transaction.
TagsNoComma-separated; merged with the category, duplicates removed.
CurrencyNoISO currency code (case-insensitive). Falls back to your primary currency when unmapped or blank.
From AccountNoAccount name; see Default accounts below.
To AccountNoAccount 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

Amounts must be plain numbers. The importer reads each amount with a standard number parse: values with thousands separators (e.g. `1,234.56`) are read only up to the comma, and text amounts fail the row. Strip separators in your spreadsheet before exporting.

Accepted date formats

  • YYYY-MM-DD (also 2026-1-5; output is always padded)
  • Slash dates MM/DD/YYYY or DD/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 to YYYY-MM-DD instead.
  • Anything else (e.g. Jan 5, 2026) fails validation — the row is reported as an error with Invalid date format and 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 page appears 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

  1. Select the CSV file.
  2. Confirm the column mapping — required fields must be mapped to continue.
  3. Choose the default From and To accounts.
  4. Check the preview table (first 10 rows).
  5. Click Import. A progress bar tracks rows as they are written.
  6. 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

There is no CSV export in WealthMgr. The Reports page does not export CSV, and **Settings → Export** produces a full-database SQL dump, not a CSV of transactions.