Import broker statements into your Finmind portfolio
Finmind editorial team · · 7 min read
Import trades or positions from any broker's CSV or Excel export into Finmind: formats, column mapping, unverified presets and why cash is not imported.
If you invest through more than one broker, your holdings end up spread across apps that do not talk to each other. Finmind can already sync a connected fondbozori.uz brokerage account, and it can import a fondbozori.uz statement file. The generic statement import adds a third way in: upload a CSV or Excel export from another broker, check how its columns were read, and book the rows into your Finmind portfolio.
This guide covers the file formats, the four steps, how broker presets work and why some are marked unverified, what happens with duplicates, and what the import deliberately does not do with cash.
Where to find it
Open Statement Import in the app. Under "Statement source" you choose between two importers:
- fondbozori.uz statement (.xls): the dedicated importer for fondbozori.uz statements. If you have connected brokerage accounts you pick the target; otherwise the statement goes into your default portfolio account. For the live connection itself, see connect your brokerage account to Finmind.
- Another broker (CSV or Excel): the generic importer this guide is about.
Both are free. You need a Finmind account and nothing else.
Supported files
The generic importer reads CSV, XLSX and XLS files up to 10 MB (plain text and tab-separated files work too). Text files in UTF-8 and Windows-1251 are read, which covers most exports with Uzbek or Russian column names. After reading, the page reports what it found, for example the format, the number of rows, the row the header was found on, the sheet name for a workbook and the text encoding.
The file is read for the preview and then discarded. As the page says, nothing is stored until you import.
The four steps
1. File and broker
Choose the export file and a broker preset. The default, "Any broker (CSV or Excel)", works for any file; a named preset only adds hints about that broker's column names and, for a new portfolio account, a suggested name.
Then tell Finmind what the file lists:
- Trades (one buy or sell per row), a history of deals;
- Positions (one holding per row), a snapshot of what you own; or
- Detect from the columns, to let the importer decide.
For positions you also give a Statement date. Positions are booked as opening purchases on this date at the average cost the statement shows. Press "Read file".
2. Columns
The importer suggests which column holds which field, and you can correct every one. The fields are:
- Date: the trade date, in dd.mm.yyyy, dd/mm/yyyy or yyyy-mm-dd.
- ISIN: the twelve-character code, for example UZ7011340005.
- Symbol: the exchange ticker, for example HMKB.
- Instrument name: used to match when there is no ISIN or ticker.
- Operation: buy or sell; deposit, withdrawal, dividend, coupon and fee are also recognised.
- Quantity, Price, Amount, Fee and Currency.
Trades need at least a date, an operation and a quantity. Positions need a quantity. If a trade has a price but no amount, the amount is computed from quantity × price, and the other way round. Currency defaults to the preset's currency when the file has none.
Below the mapping, a preview table shows every row with a status:
- Ready: the row will be imported.
- Error: something is wrong, for example "Not a number." or "Neither a price nor an amount is given."; the row is skipped.
- Already imported: the same transaction is already in the ledger, or earlier in the file; it is skipped.
- Similar trade exists: a trade with the same date, side, ISIN and quantity is already there. These rows are left out by default, and you can include them if they are genuine repeats.
- Security unknown: the instrument could not be matched.
For large files the table shows the first 500 rows, but all rows are validated and imported.
3. Securities to resolve
Securities are matched by ISIN first, then ticker, then name. Anything still unmatched is listed here: "These securities were not matched by ISIN, ticker or name. Enter the ISIN to import their rows, or leave them blank to skip those rows." Press "Apply ISINs" after entering them. You can find a UZSE security's ISIN on its page under stocks or on uzse.uz.
4. Portfolio account and import
Choose where the rows go: an existing portfolio account, or a new portfolio account with a name the preset suggests, such as "Jett import". Rows land in the portfolio ledger under a portfolio account of their own, separate from any connected fondbozori.uz brokerage account, so a sync never overwrites them.
Press the import button, which shows how many rows will be written (for example "Import 12 rows"). The result shows the rows imported, what was skipped and why, the open holdings and the cost basis rebuilt from the full ledger of that portfolio account.
Broker presets and the "unverified" label
A preset is a short description of one broker's export: its name, what is publicly known about the file, and hints that help the column detection. It never replaces the mapping step; you always see and can correct the mapping.
Each preset also carries an honesty switch. Until Finmind has run a real, anonymised statement from that broker through its tests, the preset is marked "Unverified until tested with a real statement". At the time of writing, the presets are:
- Any broker (CSV or Excel): the general importer, tested with sample files in every supported format.
- GoInvest, Jett and Freedom Broker (Tradernet report): all marked unverified. Each shows a short note on what is known, for example that Jett issues a portfolio statement for a chosen date on request, or that trades made through fondbozori.uz are better imported with the fondbozori statement importer.
"Unverified" does not mean the file will fail. It means the column hints are based on published descriptions, not on a real file, so check the mapping in step 2 before you import.
What happens to cash
The generic import never claims a cash balance. A broker export is a list of trades or positions; it does not carry a reliable running cash history, and a balance built from a partial list would be wrong. The page says so before you import: "Re-importing the same file never creates duplicates. Cash is not imported: a broker export carries no cash history." In the result, the Cash figure shows a dash with the note "Cash is not imported from a broker export; only trades and positions are."
Rows with a deposit, withdrawal, dividend, coupon or fee operation must have an amount to pass validation. Your holdings, cost basis and realised result come from the trades.
After the import
Open your portfolio to see the new holdings next to your other portfolio accounts. Imported bonds and shares also feed your personal payout calendar, which is explained in the payout calendar guide. If you import the same file again later, rows already in the ledger are recognised and skipped.
Frequently asked questions
The generic importer reads CSV, XLSX and XLS files up to 10 MB, plus plain text and tab-separated files. Text files in UTF-8 and Windows-1251 are supported. For fondbozori.uz statements, use the dedicated fondbozori.uz statement (.xls) importer on the same page.
It means Finmind has not yet tested that broker's preset with a real statement. The preset's column hints come from what the broker publishes about its files. The import still works, but check the suggested column mapping carefully before importing.
No. Rows already in the ledger are marked "Already imported" and skipped. Rows that look like an existing trade, with the same date, side, ISIN and quantity, are marked "Similar trade exists" and left out unless you choose to include them.
A broker export does not carry a complete cash history, so Finmind does not compute a cash balance from it rather than show a figure that may be wrong. Holdings and cost basis come from the trades or positions in the file.