How to Export Your Transaction History from Revolut

DividendAtlas

Revolut's account statement for your stocks lists every purchase, sale, dividend and top-up on the account, and it downloads as a CSV. That is the file to bring here. Two things set it apart from other brokers' files: it names each security by its ticker alone, with no ISIN, and it writes every date as a timestamp with a time zone.

This guide explains where to find the statement, how to keep it readable, and how we work out which security each ticker means.

Which Revolut file do you need?

You need the account statement from the stocks part of the app, as a spreadsheet file rather than a PDF. The import reads the purchases and sales in it and skips the rest.

Revolut offers other documents that sound close:

  • The statement of your current account lists money going in and out, not the trades in your stocks account.
  • The profit and loss statement summarises gains and income over a period. It is not a history of your trades.
  • The costs and charges report lists what the account cost you.
  • The account statement as a PDF is for reading. The import needs the spreadsheet file.
  • Crypto statements sit in their own part of the app, and the import has no dedicated reader for them.

Step 1: Open the statement

The route depends on which Revolut company holds your stocks.

  • Revolut's UK company. Revolut's help gives the route as Invest, then More, then Documents, then Stocks, then Account statement.
  • Revolut Securities Europe UAB, which usually holds the stocks of customers in the European Economic Area, the Netherlands included. Guides from other portfolio trackers describe the same start, Invest, then More, then Documents. You then pick your account, often labelled Brokerage account, in place of Stocks, and choose Account statement. We have not confirmed those labels in Revolut's own help.

Labels also change between app versions. If your app has no Documents entry, look for Statements in the menu on the Stocks screen. We have not confirmed a route on the web version of Revolut.

Step 2: Choose the period and the format

Choose the longest period on offer, All time where the screen has it, so the statement starts before your first purchase. A statement that starts later holds your recent sales and none of the purchases behind them. The file can import without a single error and still produce a cost basis that is wrong.

If your account moved from Revolut's UK company to its European one, a statement from the new account may not include the trades from before the move. Look for your first purchase in the file before you upload it. If the screen offers only shorter periods, download one statement per period and upload each into the same portfolio, oldest first.

Then choose the spreadsheet format, not PDF. Other trackers' guides call it CSV or Excel, and we have not confirmed the label in Revolut's own help. The file we read is a CSV whose name starts with trading-account-statement. If yours ends in .xlsx, it is a workbook, and the import cannot read it.

Step 3: Download it and leave it as it is

Upload the file exactly as it downloaded. Opening it in a spreadsheet to look at it is fine, as long as you close it without saving.

The reason is the dates. Revolut writes each one as a full timestamp in UTC (the time zone the file uses for every row), as in 2025-01-06T09:02:14.772Z. A spreadsheet that saves the file turns that into something like 1/6/2025 10:02, in your own format and your own time zone. It has then lost the information that tells the sixth of January from the first of June.

If no date in the file is left in Revolut's form, the import stops before booking anything. Its message reads: "The dates in this Revolut file are not in the format Revolut exports, which usually means it was opened and saved in a spreadsheet app. Download the statement from Revolut again and upload it without opening it first."

Check you got the right file

Open the file in a preview, or in a text editor you close without saving. The first line holds the column names: Date, Ticker, Type, Quantity, Price per share, Total Amount, Currency and FX Rate.

In the rows below, a purchase reads BUY - MARKET in the Type column, and a sale SELL - MARKET. The price carries its currency in front of the number, as in EUR 104.64. Rows such as DIVIDEND and CASH TOP-UP have no quantity.

We recognise a Revolut statement mainly by three of those columns, which no other broker we read writes: Price per share, Total Amount and FX Rate. We read the statement with English column names only. A file with them in another language would not be recognised as Revolut's. The general CSV route it falls back to cannot read prices with a currency code in front, so it will not import correctly that way.

If one of the other columns the import needs is missing, it stops before booking anything, with a message such as: "Revolut parser: column 'Ticker' not found. Please verify this is a Revolut trading account statement." Go back to the export rather than adding a column by hand.

Step 4: Drop it into DividendAtlas

Open the import panel and drag the file onto it, or click to pick it from your downloads folder. With the columns intact there is no broker to choose and no columns to match.

The DividendAtlas import panel, with a drop area for a CSV file
Drag the file anywhere onto the panel. We try to detect the broker and the file type from its contents.

The statement gives no reference for each trade. So when a statement overlaps one you uploaded earlier, we recognise a trade we already hold by its details: the date, the security, the direction, the quantity, the price and the currency. That cannot tell two identical orders from one order seen twice. Within a single file every row is booked, so the risk is only in an upload that overlaps an earlier one. After such an upload, check how many trades the result says it skipped as already imported.

How do we know which security a ticker means?

Revolut writes XOM, VUAA or BRK.B and nothing else: no exchange and no ISIN (the international code that identifies a security on any exchange). The same letters can mean different securities on different exchanges, so the ticker alone is not enough.

We use the currency of the trade to narrow it down. For a trade in US dollars we look on the US exchanges first. For a trade in euros we look on the German exchanges, Xetra and then Frankfurt, before Amsterdam, Paris and the other euro exchanges we cover. We take the first security we find there whose own currency matches the trade. A share class written with a dot, such as BRK.B, is matched to the same class in our data.

The German exchanges come first for a reason: Revolut usually writes a share it sells in euros under its German symbol. ABN AMRO, for example, appears as AB2, its Frankfurt symbol, and not as ABN, its symbol in Amsterdam. Looking in Amsterdam first could only ever have found a different company.

The first match is usually right, and not always: a ticker that is one company on Xetra can be another somewhere else. So after the import, read the name of each holding and compare it with Revolut's. A ticker we cannot place at all is not guessed. The import result lists it, with its currency, as a row we could not match to a security we cover.

What does the import bring in, and what does it leave out?

Trades. Every row whose type starts with BUY or SELL becomes a purchase or a sale. A row can still be rejected, for example when its date or price cannot be read. It keeps its quantity, its price per share and the currency it was traded in. Fractional quantities keep all the decimal places the file gives, which is often eight.

Each trade is booked on its date in UTC, the time zone the file is written in. An order placed shortly after midnight in Amsterdam can therefore show the day before. We read the price from Price per share and do not use the FX Rate column. No fee is added to the price, so a holding's cost here can differ from the one Revolut shows.

Dividends. The statement lists them, and it can carry further rows for the tax on a dividend and for corrections to that tax. We skip all of those rows rather than record them as payments received. Each holding the import matches still shows the dividend history and forward income we hold for it. It shows its Dividend Health Score too, where we publish one.

The import leaves out four kinds of row:

  • Dividends and dividend tax, for the reason above.
  • Cash movements: top-ups, withdrawals and every other row without a quantity.
  • Rows that move shares without a trade, such as a split or a transfer. We do not book them, because a guessed ratio would corrupt the holding. When such a row carries a ticker and a quantity, the result names the ticker, says the row changes that holding "in a way we cannot import yet", and asks you to check the quantity we show. A row without them is skipped without a message.
  • Tickers we cannot match, listed in the result as described above.

What if the result does not look right?

  • The import stops with a message about the dates. The file was saved from a spreadsheet. Download the statement again and upload it without opening it.
  • The import says "We do not recognise this broker". The file is not the account statement, or its column names are not in English. Do not import it that way. Go back to step 1.
  • Sales with no matching purchases. Usually the period started too late, so export again with All time. Shares that arrived without a purchase cause it too, because those rows are not booked.
  • A holding has the wrong name. Its ticker matched a different security. Delete those trades and add them again by hand under the right security.
  • A holding shows the wrong number of shares. Look in the import result for a row that changed that holding. If nothing is listed, check whether the company split its shares, because such a row can be skipped without a message. Then compare the quantity with Revolut's.
  • Some rows were not imported. The import result says how many and why.

Using other brokers too? Where to find your transaction history names the file to take from each broker we import. The guides for DeGiro, Trading 212, Interactive Brokers, Saxo, Trade Republic, Lightyear and Nordnet cover theirs step by step.

Frequently asked questions

Where is the account statement in Revolut?
For an account with Revolut's UK company, Revolut's help gives the route as Invest, then More, then Documents, then Stocks, then Account statement. Customers in the European Economic Area, the Netherlands included, usually hold their stocks with Revolut Securities Europe UAB. There, guides from other trackers describe picking the account, often labelled Brokerage account, in place of Stocks. We have not confirmed those labels.
Will the import record the dividends Revolut paid me?
No. The statement lists them, but we skip dividend rows and the tax rows beside them rather than record them as payments received. Each matched holding still shows the dividend history and forward income we hold for that security.
How do you know which security a Revolut ticker means?
From the ticker and the currency of the trade. We look the ticker up on the exchanges that quote in that currency, in a fixed order, and take the first match. A ticker we cannot place is listed in the import result rather than guessed, and it is worth checking the name of each holding we did match.
Can I upload two statements that overlap?
Usually, if both go into the same portfolio. The statement gives no reference for each trade, so we recognise one we already hold by its date, security, direction, quantity, price and currency. Two identical orders on the same day look like one order seen twice, so check the counts afterwards.
Can I upload the file after opening it in Excel?
Only if you closed it without saving. A spreadsheet that saves the file rewrites Revolut's dates in your own format and time zone. If no date in the file is left in Revolut's form, the import stops and asks you to download the statement again.

DividendAtlas provides data and research for informational purposes only. Nothing here is investment advice, tax advice or a recommendation to buy or sell any security. Always do your own research.

Your dividend income, mapped.

Free for up to 25 holdings. No credit card. Import your first portfolio in under a minute.

Get started free