---
title: "Import a broker's CSV export into Stonqs"
description: "Load your broker's transaction CSV in four steps: file, parsing, instruments, commit. Nothing is saved until the last button, and a second import adds nothing."
url: "https://stonqs.app/guides/import-broker-csv/"
lang: "en"
updated: "2026-10-25"
---

Getting your data in · Guide 3 of 10

# Import a broker's CSV export

[By Vladimir Varvorkin](https://stonqs.app/about/) Updated October 12, 2026 7 min read

You will load one broker export into a portfolio in four steps: choose the file, check the column mapping, link the instruments, write. Nothing is saved before the last button, and importing the same file twice adds nothing.

## On this page

1. [Before you start](https://stonqs.app/guides/import-broker-csv/#before-you-start)
2. [Open the Import screen and choose the file](https://stonqs.app/guides/import-broker-csv/#open-the-import-screen-and-choose-the-file)
3. [Check the layout on the Parsing step](https://stonqs.app/guides/import-broker-csv/#check-the-layout-on-the-parsing-step)
4. [Link the instruments](https://stonqs.app/guides/import-broker-csv/#link-the-instruments)
5. [Read the notices and write](https://stonqs.app/guides/import-broker-csv/#read-the-notices-and-write)
6. [What comes after the write](https://stonqs.app/guides/import-broker-csv/#what-comes-after-the-write)
7. [If something goes wrong](https://stonqs.app/guides/import-broker-csv/#if-something-goes-wrong)

An export from a known broker arrives already mapped: each layout the app ships claims a file by the columns it expects, so most of the Parsing step is checking, not typing. If two layouts fit your file equally well, the app recognises neither and asks you. It would rather ask than pick the wrong broker.

## Before you start

You need a portfolio with a brokerage account and the cash account it settles through, which [the first guide](https://stonqs.app/guides/install-stonqs-first-portfolio/) sets up. Turn on a price source too, with [the guide on prices and exchange rates](https://stonqs.app/guides/choose-price-and-exchange-rate-sources/), or the imported holdings stay without a value. Have the export saved on disk as a CSV or TXT file. Download the longest period your broker allows, once: a re-export that repeats earlier months is safe, and a second pass over the same rows adds nothing.

If your broker is Interactive Brokers, use its Flex Query XML instead, as described in [the Flex Query guide](https://stonqs.app/guides/import-interactive-brokers-flex-query/); that file asks only for the account.

## Open the Import screen and choose the file

Pick “Import” in the sidebar (under Data), or press Cmd/Ctrl+Shift+I, then press “Choose a file”. The screen is titled “CSV import” and its first step, “File”, shows what is in the file: rows, columns, and the first 20 rows as the app read them.

The step only reads. Nothing in the database changes. If the table looks like one column of gibberish, the encoding or separator was misdetected; the next step lets you override both.

## Check the layout on the Parsing step

Go to “Parsing” with “Next”. The top bar shows “Layout”, a list headed “A ready-made layout for this broker”. If your file was recognised, its name is already there. [The list of shipped layouts](https://github.com/vvvlladimir/stonqs/blob/v0.5.0/core/presets/brokers.json) holds 29 entries for 26 brokers and trackers (Interactive Brokers, Trade Republic and Revolut each have two), Trade Republic, DEGIRO and Trading 212 among them. The name is a statement about columns, not a promise that this month’s export matches: brokers change their headers.

If no layout fits, the list shows an “as detected” entry and the app works from the file alone. Choose that entry at any time to throw a layout away and read the file from scratch. A layout built for another broker shows a red banner saying which columns your file lacks, with a “Restore what was detected” button.

Then fix what is wrong, in this order:

1. Under “What is written, and where”, choose what the file is: “A broker statement” (purchases, sales, dividends; instruments go on the brokerage account, money on the cash account linked to it) or “A bank or wallet statement” (everything lands on one cash account). If the portfolio has more than one account of that kind, choose in “Which account”.
2. Open “how the file is read” if dates or numbers look off: delimiter, decimal mark, date format, rows to skip at the top and drop at the bottom, and whether the first row holds headers. A header row that is not the first line, or a “Total” line at the bottom, is the usual reason a first import fails.
3. In “Mappings”, deal with “A choice is needed”: each operation wording the app did not recognise, one example row per wording. Map it to a transaction kind, or choose “do not import” for lines that are not transactions at all.

Only two columns are required, “Date” and “Transaction kind”. If either is missing, a banner names it and “Next” stays disabled until you point at the column in the table header. Everything else improves the result but can be absent.

Two settings deserve a second look, because a wrong one shifts every purchase. “Sign of the amount” says whether a minus means money out. “What the amount holds” says whether the amount includes the commission. The app works both out from the whole file and prints what it decided; the manual options are there for the case it is wrong.

Tip

When the mapping is right, press “Save” next to the layout list and name it. The saved layout is applied to your next export from the same broker, which then parses without questions. It does not retroactively change the file it was built from.

You will also see a “Parser notices” list. An error blocks that row only, never the file; a warning, such as a corrected direction or a suspicious amount, is shown and the row is still imported.

## Link the instruments

“Next” opens “Instruments”. The search starts by itself: by ISIN first, then by the ticker and name in the file, then over the exchanges the instrument trades on, taking the first one that has prices.

Look at three groups. “Already in the portfolio” are matched. “Will be created” are new instruments the import will add. “Not identified” will enter the portfolio under the broker’s own spelling and stay without prices, which is why the banner counts them. Correct a wrong match by pointing it at another listing, or press “Search again” to repeat the pass.

Prices are fetched after the write, back to the earliest operation in the file, and only from a source you turned on ( [prices and exchange rates](https://stonqs.app/guides/choose-price-and-exchange-rate-sources/)).

## Read the notices and write

“Next” opens “Commit”. “What will be written” counts the rows by reason: ready, duplicates, skipped by decision, not parsed, with notices. Read “Row notices” before pressing anything. Four are worth stopping for:

| Notice                                        | What it means                                                                                                                                      | What to do                                                                           |
| --------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| “shares moved with no value given”            | A transfer in from another broker has a quantity and no price; written as it stands, the position enters at a cost of zero and shows as all profit | Open the row and type the price paid or the total                                    |
| “another currency than the account keeps”     | The row is in a currency the cash account does not hold; legal, but also what a misread currency column looks like                                 | Check the Currency column on the Parsing step                                        |
| “the ticker already names another instrument” | The same ticker sits in the portfolio under a different ISIN; this row is not written                                                              | Give it a ticker of its own on the Instruments step                                  |
| “more is sold than was ever received”         | The file sells more than the database and file ever held                                                                                           | Look for the purchase in an older export, or in a wording you marked “do not import” |

One more is easy to miss: a row whose cell runs on over further lines of the file. An open quotation mark in the export swallows what follows, so the count on this step is lower than the file looks. Check that row in the file.

Then press “Write N rows”. The banner reports how many were written and skipped. The write is a single transaction, so a file is either in or not.

## What comes after the write

Importing the same file again does nothing: each row has a fingerprint. If the broker restated a row, the stored one is replaced and counted separately. A row you corrected by hand is left out of a repeat import by default, and a switch beside it writes it anyway.

Two brokers’ exports will show a move between them as a withdrawal in one and a deposit in the other. After the write the app lists payments that match in currency and size within a few days and offers to join them; it never joins them itself. That, and purchases missing from the file, are covered in [filling the gaps after an import](https://stonqs.app/guides/fill-gaps-after-import/).

Market prices come from free third-party sources without warranty, and your broker’s own statement remains the record: compare the totals on the Commit step against it.

## If something goes wrong

“The wizard will not go past Parsing.” A required column is not mapped, or no account is chosen. The banner names which; point at the Date and Transaction kind columns in the table header and pick an account.

“Dates are swapped or the numbers look wrong.” The date format or decimal mark is wrong, for example a day and month read in the wrong order, or a decimal comma read as a point. Open “how the file is read”, correct the date format and the decimal mark, and check that the “Export period” matches the file.

“A row says it cannot be written, or fewer rows appear than the file has.” Look at “Not parsed” and the open-quotation warning above, fix the row on the Parsing step or row by row on Commit, and write again. Rows already written are recognised and are not doubled.

## Sources

- [Stonqs user guide: Import](https://github.com/vvvlladimir/stonqs/blob/v0.5.0/docs/user-guide/import.md)  · The four steps, saved layouts, notices and duplicate handling.
- [Stonqs: importing broker data](https://github.com/vvvlladimir/stonqs/blob/v0.5.0/docs/ai-reference/importing-data.md)  · How direction, duplicates and transfers between brokers are decided.
- [Stonqs: the broker layouts it recognises](https://github.com/vvvlladimir/stonqs/blob/v0.5.0/core/presets/brokers.json)  · The list of shipped layouts and the columns each one expects.

[  Previous Choose where prices and exchange rates come from](https://stonqs.app/guides/choose-price-and-exchange-rate-sources/) [ Next Import an Interactive Brokers Flex Query](https://stonqs.app/guides/import-interactive-brokers-flex-query/)

## Read next

- [Install Stonqs and set up your first portfolio ](https://stonqs.app/guides/install-stonqs-first-portfolio/)
- [Fill the gaps after an import ](https://stonqs.app/guides/fill-gaps-after-import/)
- [All guides ](https://stonqs.app/guides/)

---

[ Stonqs](https://stonqs.app/)

A portfolio tracker that runs on your own computer. Free, open source, no account.

## Product

[Download](https://stonqs.app/download/) [Privacy](https://stonqs.app/privacy/)

## Learn

[Guides](https://stonqs.app/guides/) [Blog](https://stonqs.app/blog/) [FAQ](https://stonqs.app/faq/)

## Project

[About](https://stonqs.app/about/) [Source code](https://github.com/vvvlladimir/stonqs) [Changelog](https://github.com/vvvlladimir/stonqs/blob/main/CHANGELOG.md) [Discussions](https://github.com/vvvlladimir/stonqs/discussions) [Report a bug](https://github.com/vvvlladimir/stonqs/issues)

Stonqs is a tool for recording and analysing your own investments. It is not financial, tax or legal advice, and neither are the answers of its assistant. Market data comes from free third-party sources with no guarantee of accuracy. This site sets no cookies and loads nothing from other servers; the only thing it keeps in your browser is the language you pick.

[Legal notice](https://stonqs.app/legal-notice/) [Privacy policy](https://stonqs.app/privacy-policy/)
