For the step-by-step export instructions, open the import screen next to the file picker - every preset carries its own, and you can read them for any broker in the demo project without an account. For symptoms that aren't broker-specific see Import problems.
If your broker isn't below, it usually imports without incident. When it doesn't, send us the file - Getting help lists what to include.
Interactive Brokers
IBKR has no ready-made transaction export: you build a report called a Flex Query, run it, and import the CSV it produces. Almost every empty or partial IBKR import is a query problem rather than a Capitally problem - a section that was never enabled, or a date range set while creating the query instead of while running it, produces a file that looks perfectly normal and imports almost nothing. The setup steps are on the import screen under the Interactive Brokers preset; these are the places they go wrong.
- It has to be an Activity Flex Query, not the regular Activity Statement, with four sections enabled inside it:
Cash Transactions(every option exceptSummary),Trades(Execution),Transfers(Transfer) andCorporate Actions(Details). A section you skipped is simply absent from the file. - Tick
Select Allfor columns. Hand-picking fields is the usual cause of a file Capitally cannot read: the four sections arrive stacked in one CSV, andClientAccountIDis the column marking where each one starts and stops. Drop it and the sections run together. - The date range belongs to the run, not to the query. Setting it at creation time is the single most common reason a correct-looking query returns nothing.
- One year per run, and no setting lifts the cap - a ten-year history is ten runs and ten files. Import them oldest first; overlapping ranges are safe, because every IBKR row carries the broker's own identifier (
TradeID,TransactionIDorActionID) and Capitally matches on it. - Today's trades are never in an Activity Flex Query - the classic case is a recurring buy that fills in the morning and is missing from a query re-run that afternoon. Import tomorrow, or run a Trade Confirmation Flex Query, which the same preset reads. Those carry no dividend data, so use them for today's fills only.
- Currency conversions and their fees need cash tracking switched on before the import, not after. If it was off, undo the import, enable it and import again.
- Futures and T-Bills arrive as custom assets, so they get no automatic price. ADRs import as their underlying stock, and an ADR pass-through fee IBKR books alongside a dividend is folded into that dividend's fee rather than arriving on its own.
A migration between IBKR entities - IB Hungary to IB Ireland, for instance - leaves you with two account numbers and two histories. Import the old account first, then the new one, and set the inter-account transfer rows to ignore in the review table; Capitally points them out when it finds them. Left in place they double-count shares and cut holding periods short, so a position you have held for years shows as recent. Record both account numbers under one Capitally account.
Withholding tax corrections arrive as their own rows, usually in January and usually on REITs, BDCs and closed-end funds. If the dividend being corrected is not in the same file, Capitally warns that the file holds tax updates for dividends it cannot see. Either merge the two years into one import and switch the returning dividend rows from Duplicate to update, or record the restated amount as an Other transaction dated inside the tax year it belongs to.
When the import comes out empty or short, open the CSV in a spreadsheet and count the rows first - that separates "IBKR exported nothing" from "Capitally skipped rows", and the two have different fixes.
- Only a header row, or a handful of rows from a long period - the run-time date range is wrong.
- Only one section present - a section was not enabled, or
Select Allwas not ticked inside it. - Only currency-exchange rows -
Tradesis not enabled. - A section appears twice, the first copy empty - rebuild the query rather than patching the file.
There's nothing new to be imported- every row is already in your project. Switch the Duplicate rows to update if you meant to refresh them.There's nothing to be imported- the preset found nothing usable, which points back at the sections and the date range.No market foundnaming an exchange code - that code is not mapped in the preset yet. Pick the right listing from the dropdown on the row and the choice is saved with the asset; tell us the code and we will add it.
Degiro
Export the Account statements file from Inbox, not the Transactions table - the Transactions export leaves out dividends and fees, and choosing it is the usual cause of There's nothing to be imported. If you imported with the older Transactions format before, rows from an overlapping range cannot be matched against what is already there and will come in as new transactions, so start the date range where the previous import ended. Degiro does not state the quantity of reinvested dividends, so DRIP rows need the number of shares filled in by hand after the import, and rights issues are flagged but not imported.
XTB
XTB replaced its CSV export with an Excel report, and the first import after that switch cannot deduplicate against anything you imported before it: the old export gave buys and sells no operation ID and stamped them in local time, while the new one uses UTC. Start the date range where your last import ended, or skip the repeated rows on the review step - from that import on, every row carries an ID and overlapping ranges are safe again. The report also never states the account currency: Capitally assumes PLN for IKE and IKZE accounts and otherwise reads it from the filename prefix (USD_…, EUR_…, PLN_…), so keep the original filename and check the currency before you confirm. XTB publishes no ISINs either, which is why ETFs often match a German listing - correct the symbol once and the choice is remembered.
Revolut
Revolut needs two separate imports from two separate exports: Brokerage Statement for stocks and ETFs, from the Invest tab, and Crypto Statement for crypto, from the Crypto tab. Neither file contains the other's transactions, so a missing half is almost always a missing export. The crypto statement has no currency column - the currency is read from the symbol in the Price and Fees cells, and because $ covers several currencies, check the one Capitally matched before confirming.
Trade Republic
Trade Republic's transaction export exists only in the mobile app, under Profile → Account Statements → Transaction Export; there is nothing equivalent in the web interface, which is why people conclude the broker has no export at all. Pick a date range or All transactions, and import the CSV it generates. The per-transaction PDF statements Trade Republic also produces are not importable.
Charles Schwab
Schwab's transaction history reaches back only as far as Schwab's own records - accounts moved over in the TD Ameritrade merger commonly start in 2020 rather than at the account's real opening date, so older positions arrive with no cost basis. Two ways to close the gap: add Buy transactions using unadjusted, pre-split numbers (quantity = adjusted quantity ÷ split ratio, price = adjusted price × split ratio), or, if the historical return does not matter to you, record an Account Balance with the current quantity dated one day after the last split. Also check the export for corporate actions - spin-offs and mergers are frequently absent, and that shows up later as a share count that will not reconcile.
Bossa (DM BOŚ)
Bossa publishes no ISINs, so the first import needs manual asset matching: enter the symbol as it appears on the Warsaw exchange, with the GPW extension - CDR.GPW. Bossa also uses different identifiers for trades and for dividends, so the same company can appear twice in the review table under two entries; click the field and pick the same symbol for both. Transaction types the preset has not seen before are not imported at all rather than flagged, so if a row is simply missing, send us the file and the type gets added. See choosing the right asset symbol for how the matching works.
mBank eMakler
eMakler takes two imports, in this order: 1 of 2 - Transactions (Zlecenia → TYP OPERACJI → Transakcje), then 2 of 2 - Dividends and cash (the same screen, Historia finansowa). The order matters - dividends are matched by the ISIN in the row description, first against the positions already in your project, so importing them before the trades leaves them with nothing to attach to. mBank does not provide official market symbols either, so verify the matched assets on the first import; the choices are saved for later ones.
PKO BP
PKO also splits the data across two exports: 1 of 2 - Transactions from Historia → Historia Transakcji, and 2 of 2 - Dividends, Bonds & Cash from Historia → Zestawienie operacji finansowych. Importing one and not the other leaves a portfolio with trades but no income, or income with nothing to attach it to. Like Bossa, PKO uses different symbols for trades and for dividends, so expect to merge two entries for the same company once. Import the oldest files first so later rows land on positions that already exist.
Coinbase, Binance and other crypto exchanges
Binance has two importers reading two different files, and feeding one to the other is the usual There's nothing to be imported: Transactions History reads the wallet ledger (User_ID, UTC_Time, Account, …) and covers deposits, withdrawals, rewards and conversions, while Spot Trade History reads the trade export (Date(UTC), Pair, Side, …) and covers spot trades only. Binance also caps how many statements you can generate per month and expires the download links after a week, so plan a long history as a series of 12-month exports rather than one attempt. For Coinbase, if you imported before the current importer - which uses each transaction's own currency instead of one main currency - delete those transactions and import again, or the balances stay wrong. An exchange without a preset can go through file import; send us a sample covering buys, sells, deposits, withdrawals, conversions and staking income and we will build one.
Robinhood
Robinhood's reports exclude crypto entirely, so crypto positions never arrive from them - record the quantity with an Account Balance transaction whenever it changes. Brokerage and Roth IRA reports are indistinguishable to the importer, so save a preset variant per account type with the target account set on it; there is no other way to separate them automatically.