Kaptal

Cost basis in a currency you are not taxed in

In short

Tax authorities compute a capital gain in your home currency: the purchase converts at the rate on the buy date, the sale at the rate on the sell date. Any exchange-rate movement between those dates lands inside the taxable gain, which is why a position sold at a loss in its trading currency can still be taxed.

4 min read Figures checked

The rule almost nobody is told

A capital gain is computed in the currency you are taxed in, not the currency you traded in. That single sentence produces every surprise below.

Concretely: the purchase is converted at the exchange rate on the day you bought, the sale at the rate on the day you sold, and the taxable gain is the difference between those two converted amounts. Nothing converts the result; the two legs convert separately and the result appears afterwards.

Your broker cannot do this for you. It reports in the account currency and has no idea where you are tax resident. Its profit-and-loss figure is the price move, correctly computed, and irrelevant to your return.

What that does to a real trade

A Polish investor buys 100 shares of a US-listed ETF at $100 when the rate is 3.80 PLN/USD, and sells at $95 when the rate is 4.40 PLN/USD.

CalculationAmount
Cost100 × $100 × 3.8038,000 PLN
Proceeds100 × $95 × 4.4041,800 PLN
Taxable gain41,800 − 38,0003,800 PLN
Tax at 19 %722 PLN

The broker app shows −$500. The tax return shows +3,800 PLN. Both are right. The position lost money, and it is taxed.

Splitting the asset from the currency

The home-currency gain decomposes exactly:

They sum to 3,800 PLN with nothing left over. Read plainly: the investment lost 1,900 PLN and the currency made 5,700 PLN, and the tax bill is entirely the currency’s doing.

There is a second consistent reading, which values the currency move against the cost and leaves a cross term to allocate somewhere. Neither is more correct — what matters is stating which one produced the number on your screen. Everything here uses the first.

Which rate, by country

The arithmetic is universal; the rate selection is not.

CountryRate to useTrap
PolandNBP average rate, last business day before the transactionWeekends and Polish holidays push the reference date further back
GermanyRate on the transaction date; ECB reference acceptedA German broker withholds on its own computation, which may not match yours
NetherlandsValues on 1 January drive box 3The relevant date is the reference date, not your trade dates
United StatesSpot rate on each transaction dateThe yearly average is allowed only where the rules explicitly permit it
SwitzerlandYear-end rate for wealth tax; transaction rate for incomeTwo different rates for two different taxes on the same holding

Poland’s rule catches the most people because it is the least intuitive: not the transaction date, the business day before it.

Why this cannot be reconstructed later

The rate that matters is the one that applied on the day of the trade. That is a historical fact — it either got recorded or it has to be dug out of an archive, one transaction at a time, with holidays handled correctly.

Portfolio tools make this worse rather than better. Nearly all of them convert every holding at today’s rate, because that is what you want when looking at a portfolio’s value this morning. It also means the cost basis changes daily, and no figure on the screen can be carried into a tax return.

Storing the rate alongside the transaction — with the price, the quantity and the fee — is a schema decision made once, at the start. Adding it to a tracker that never had it means backfilling every historical transaction with a rate nobody recorded, which is why so few trackers ever do.

What to keep

  1. A full transaction export from every broker, taken at least yearly. Summaries are not enough; a summary has already destroyed the per-leg dates.
  2. The exchange rate for each leg, captured at the time, under your own rule.
  3. Fees attached to their own leg — a purchase fee converts at the purchase rate, a sale fee at the sale rate.
  4. Transfer records when you move holdings between brokers, since the receiving broker will not carry your basis.
  5. Your working. With a foreign broker, the burden of proof is yours, typically for five to seven years.
Run the numbers FX cost basis calculator Enter both legs and their rates. The tool splits the taxable gain into the part the asset earned and the part the currency did.

Common questions

Is a currency gain taxable if the share price never moved?

In most countries, yes. Poland, Germany, the Netherlands and the United States all compute the gain in the home currency. If your home currency weakened between purchase and sale, the same number of shares at the same price converts into more home currency, and that difference is a taxable gain.

Which exchange rate applies?

It depends on the country and it is a rule, not a preference. Poland uses the NBP average rate of the last business day before the transaction. Germany and the Netherlands generally use the transaction-date rate. The United States uses the spot rate on each transaction date, with a yearly average permitted only where the rules say so.

Why does my broker show a different figure from my tax return?

A broker reports in the account currency and does not know your tax residence, so it cannot convert anything. Its profit is the price move alone. A tax return is denominated in your home currency and therefore contains the exchange-rate move as well. The two answer different questions.

What happens when I move shares to a different broker?

Nothing, legally: the cost basis stays with the shares. Practically, the receiving broker rarely knows your original purchase price or the rate on that date, so it shows the position with no basis or with the transfer-date value. The evidence is yours to keep, which is why a broker statement is not an adequate record.

Sources

This is an estimate for orientation, not tax advice. Figures follow the sources listed above on the date shown; rates change every year.