Documentation

Getting your data in

Fortunest reads the transaction-history CSV files your platforms already let you download. Drop them in; the format is detected automatically and the whole portfolio is rebuilt from the raw transactions.

What's supported

PlatformExportWhat's understood
DegiroTransactions export (CSV)All trades, including Czech-locale files (comma decimals, DD-MM-YYYY); splits, ISIN changes and exchange moves net out correctly.
RevolutBrokerage account statement (CSV)Buys/sells, dividends, stock splits, custody fees, top-ups, withdrawals and transfers β€” cash is reconstructed from them.
Interactive BrokersFlex Query "Trades" (CSV)Equity/ETF trades keyed by ISIN, commissions folded into the cash amount, multi-level exports de-duplicated.
KrakenSpot ledger statement (CSV)Paired trade rows, staking rewards net of fees, deposits/withdrawals, wallet auto-allocations, delisting conversions (e.g. MATICβ†’POL).
BinanceTransaction History statement (CSV)Deposits, withdrawals, trades, Earn/staking, airdrops, token swaps and redenominations, margin transfers. The Spot trade-history format also works.
Trezor SuiteAccount export (CSV)On-chain received/sent/self transfers with network fees, netted against your exchange withdrawals and deposits.

Pick the widest date range available β€” "all time" or "since account opening" β€” so the dashboard sees your full history. You can load any number of files, and overlapping exports are de-duplicated automatically.

Connecting an account instead of uploading

A CSV is a snapshot you repeat by hand. With a Fortunest account you can link the account itself and let it keep up with you. βš™ Settings β†’ Data β†’ Connect an account opens one searchable list of every platform, each marked with how it can be brought in β€” some carry two marks, and then they are alternatives, not steps:

Every connection is read-only. Fortunest can see your positions and transaction history; it cannot place, change or cancel an order, and it cannot move money β€” there is no order-placing code in the app, and a test asserts it. You never hand over a broker password.

Your keys are encrypted at rest, never sent to your browser, never logged and never passed to a third party. A connected row shows only the public half of the key β€” eight characters of the identifier, click to read it whole and copy it β€” because that half authenticates nothing on its own. The secret half is sealed when you save it and cannot be read back by anyone, us included.

Everything you have linked appears under Connected accounts in βš™ Settings β†’ Data, sorted by platform: the route mark, a health dot, when it last brought anything in β€” or plainly Never synced β€” plus an include tick, Sync now and Disconnect (staged until Save, with ↩ to keep it). The first sync fetches as much history as the platform's API will serve; later ones are incremental and run in the background. Disconnecting a direct connection deletes the stored key and the data imported through it; disconnecting a SnapTrade brokerage leaves its transactions in place.

Connecting needs a signed-in account β€” a key has to outlive the browser session β€” and a new connection uses one of your plan's account slots, the same three a CSV file uses on the free plan. The desktop app connects directly too: the keys live in its local database and the calls go straight from your machine to the platform. SnapTrade is not part of the desktop build.

Adding & managing files

Revolut

On invest.revolut.com click your profile icon (top right) and choose Documents:

Revolut: profile icon β†’ Documents

Select Brokerage account and choose Account statement under Statements:

Revolut: Documents β†’ Brokerage account β†’ Account statement

Then pick the Excel format (it downloads as CSV), set Period to All time and hit Get statement:

Revolut: Excel format, All time period, Get statement

Degiro

On trader.degiro.nl open Inbox β†’ Transactions, set the from/to dates to cover your whole history and click the download icon on the right:

Degiro: Inbox β†’ Transactions, full date range, download icon

In the Export dialog choose CSV:

Degiro: Export dialog β†’ CSV

Interactive Brokers

Create a Flex Query for Trades in IBKR's Client Portal (Performance & Reports β†’ Flex Queries), covering your whole history, and run it as CSV. The dashboard reads the trades keyed by ISIN and folds commissions into the cash amounts; exports with multiple detail levels are de-duplicated automatically.

Kraken

On pro.kraken.com open History β†’ Main, then use Export to create a statement of the Spot ledger for all time and download the generated CSV. The ledger export contains the paired trade rows, rewards, deposits and withdrawals the dashboard expects:

Kraken: History β†’ Main β†’ Export β†’ Spot ledger statement

Binance

Open the Data Download Center (profile icon β†’ Export data), set Data Type to Asset History β†’ Transaction History, Coin All, Account All, choose your date range and generate the CSV. Large histories may take a while to prepare β€” Binance emails you a download link:

Binance: Data Download Center β†’ Asset History β†’ Transaction History β†’ CSV

Trezor

In Trezor Suite, for each account: open Transaction overview, scroll down to Transactions, click the export icon on the right and choose Export as .csv:

Trezor Suite: account β†’ Transactions β†’ export icon β†’ Export as .csv

When your history doesn't reach back far enough

Two things are always kept apart. How many units you hold today is known β€” a connected exchange states it, and the imported history is forced to end on exactly those numbers. When those units arrived, and what they cost, is inferred wherever the record does not contain the purchase. That inference is what you are looking at when the value chart shows a holding on a date you know you didn't own it.

Why the record is incomplete. No source hands over everything you ever did:

So a coin can be in your account today with no purchase anywhere in the record. Rather than drop it or invent a trade, the dashboard writes a correction β€” a bookkeeping row that credits the units and is flagged in the Portfolio warnings as an assumption. All that is left to decide is its date.

How an unexplained holding gets dated

  1. The record mentions the coin at all β€” the missing units are dated the day before that coin's own first appearance. The coin's, not the account's: any row naming it β€” a transfer or a reward as much as a trade β€” is evidence you already held it then.
  2. The record never mentions the coin β€” the units are dated at the last moment they could have arrived unseen: the day before the earliest trade the import can see. If the import's trades begin on 14 September 2022, a coin it never mentions is dated 13 September 2022.
  3. The record contains no trades at all β€” then there is no window to be late to, and it falls back to the account's first day.

The principle is never to claim you held something for longer than the data can support. Units that appear from nowhere are dated as late as the rules allow. Units that vanish into nowhere β€” where your history implies more than the exchange says you hold β€” are written off as early as allowed. Both shrink the stretch of time the dashboard is guessing about.

Why it matters. 4 241 LUNC, bought for pocket money on 12 May 2022 as Terra collapsed, used to be dated to the account's opening in 2017. The chart then valued them as pre-crash Terra all the way up: a phantom 10.9 million CZK at the April 2022 peak, for a position worth about 6 CZK today. Dated by rule 2, the same coins can only be wrong by what they were worth over a few weeks.

The honest cost. Rule 2 can go the other way. A genuinely old holding no export mentions is dated late, so your earliest years show too little rather than too much. That is deliberate β€” understating is a smaller lie than inventing millions β€” and the Portfolio warnings name the holdings it applies to, so you can see where the dashboard is guessing.

What an API-only account's early years mean

Before the trade window opens, a connection can only see money moving in and out β€” never what you traded inside the account. That stretch of your chart is built from deposits, withdrawals and corrections: an approximation of what the account was worth, not a record of it. From the first day the trades reach, it is exact. An export covering the earlier years turns the approximation back into a record.

Closing the gap yourself

Manual assets (what no export covers)

To track real estate, physical gold, collectibles or anything else without a CSV: scroll to Other assets at the end of βš™ Settings β†’ Data and enter a name, acquisition date, price, currency and an approximate yearly growth rate (APY β€” use a negative value for depreciating assets).

The asset joins the portfolio valued at its acquisition price compounded daily at that APY. It shows up as its own line under your accounts, as an "Other assets" allocation category and in the portfolio history. Each entry can be edited in place, excluded via its checkbox without deleting it, or removed via its βœ• (which strikes the row through β€” ↩ takes it back) β€” every one of these changes is staged and applies when you press Save.

Market-priced assets (search & add)

For a position in something Yahoo Finance can price β€” a stock, an ETF, crypto, an index fund, a future like gold β€” you don't need a broker export either: use the Market-priced assets search bar in βš™ Settings β†’ Data. Type a ticker, a company name or free text ("gold futures"), pick the listing from the results (symbol, name, exchange and type are shown for each), and give the quantity β€” fractions are fine. Clicking Add only stages the position: it appears as a pending row and joins the portfolio when you press the dialog's Save β€” the row's βœ• drops it before then, and closing without saving discards it.

The acquisition date and per-unit price are optional: an empty date means today, and an empty price is filled with the market close on the acquisition date, in the instrument's listing currency. Unlike a manual asset, a market-priced asset is then valued from live market data β€” it appears in the holdings table with real P/L against its cost, daily moves, portfolio weight and risk figures, joins Allocation and the portfolio history, and counts in Explore's "In portfolio" column, exactly like a holding from an uploaded export.

Each entry can be edited (quantity, date, price), excluded via its checkbox without deleting it, or removed via its βœ• (struck through until Save; ↩ takes it back) β€” like the adds, all of it staged until you press Save. The assistant chat can add these too β€” from plain text, an attached file or a brokerage screenshot.

Good to know