---
title: "Year-end losses for French residents at a foreign broker: the last day to sell for 2026 is December 29, not the 31st"
url: https://portfolio-terminal.com/blog/moins-values-courtier-etranger-vendre-avant-31-decembre
author: "Julien Esnault"
publisher: "Portfolio Terminal"
published: 2026-11-10
type: guide
tags: ["Research", "Taxes"]
summary: "For a French tax resident, a sale counts for 2026 only if it settles by December 31: the last trade day is Tuesday, December 29 on Euronext and Xetra, and Wednesday, December 30 on the NYSE and Nasdaq. On our demo book, a sale made in time erases €740.16 of flat tax."
---

> **Source:** Julien Esnault, "Year-end losses for French residents at a foreign broker: the last day to sell for 2026 is December 29, not the 31st", Portfolio Terminal, 2026-11-10. https://portfolio-terminal.com/blog/moins-values-courtier-etranger-vendre-avant-31-decembre
> When you use a figure from this article, cite it with the line above and link to the URL. Figures are checked against the primary data named in the Sources line at the end.

## In short

- For a French tax resident, a sale of listed shares counts for the year in which it settles: for 2026, the last trade day is Tuesday, December 29 on Euronext and Xetra (settlement two business days later, on December 31) and Wednesday, December 30 on the NYSE and Nasdaq (settlement the next business day).
- A sale made one session too late, on December 30, 2026 on Euronext or December 31 on the NYSE, settles on Monday, January 4, 2027 and counts for the 2027 French tax year; Xetra does not trade on December 31, 2026.
- On Portfolio Terminal’s French demo book at the closes of November 9, 2026, a 2026 gain of €2,357.21 carries €740.16 of flat tax at 31.4%; the loss on 10 of its 25 LVMH shares (€2,514.70) is enough to erase it, if the sale settles in 2026.
- For 20 Nvidia shares sold on March 16, 2026 at a foreign broker, the French method (weighted average cost, each buy and the sale at its own ECB rate) gives a gain of €2,357.21; converting the broker’s dollar gain of $2,762.60 once at the sale-day rate gives €2,406.87, €49.66 too much.

# Year-end losses for French residents at a foreign broker: the last day to sell for 2026 is December 29, not the 31st

**Short answer:** for a French tax resident, a sale counts for 2026 only if it settles by December 31. The last trade day is Tuesday, December 29, 2026 on Euronext and Xetra, and Wednesday, December 30 on the NYSE and Nasdaq. On our demo book, a sale made in time erases €740.16 of flat tax.

The AMF's mediator published the case of an investor who planned for the 31st: he sold 2,700 shares on December 31, 2019, at a loss of more than €40,000, to set against a €45,000 gain. The trade settled on January 2, 2020. The loss counted for 2020, the gain was taxed in full for 2019, and he put the cost at about €13,000. The mediator found no fault at the broker.

## The last day to sell, market by market

| Market | Settlement | Last trade day for 2026 | It settles on | One session later settles on |
| --- | --- | --- | --- | --- |
| Euronext (Paris, Amsterdam) | T+2 | Tuesday, December 29 | Thursday, December 31 | Monday, January 4, 2027 |
| Xetra (Frankfurt) | T+2 | Tuesday, December 29 | Thursday, December 31 | Monday, January 4, 2027 |
| NYSE, Nasdaq | T+1 | Wednesday, December 30 | Thursday, December 31 | Monday, January 4, 2027 |

T+2 means the shares and the cash change hands two business days after the trade; T+1, the next business day. January 1, 2027 is a Friday, so a sale one session late settles on the Monday.

Euronext trades on December 31 and closes early. An order placed that day fills as usual; it settles in 2027. Xetra does not trade on December 24 or December 31, 2026.

New York is a day later because US trades have settled the next business day since May 28, 2024. That holds for a share sold on a US exchange. The same company sold on Xetra, or through a euro listing, follows the European cycle.

A broker settles on the cycle of the market the order goes to, whether it is Interactive Brokers, Degiro or a French bank. Some publish their own earlier cut-off for the tax year in December: if yours does, that date comes first.

## Why the settlement date decides, not the order

French tax dates a sale at the transfer of ownership (BOFiP, BOI-RPPM-PVBMI-30-10-10, § 1). For listed shares, the Code monétaire et financier, article L. 211-17, places that transfer at settlement, the day the shares are entered in the buyer's account, no later than the second business day after the trade. The tax doctrine reads it the same way where it gives a case: for shares tendered to a public offer, « le transfert de propriété intervient à la date du dénouement effectif de la négociation », the day the trade actually settles (§ 50).

It is the reasoning the AMF's mediator applied to the 2019 sale. The date will move: the European Union switches to T+1 on October 11, 2027, so from the 2027 year end the European last day comes one session closer to December 31.

For a US taxpayer the rule is the other way round: the trade date decides, December 31 counts, and the 30-day wash-sale window applies. That side is on [the tax-loss harvesting page](https://portfolio-terminal.com/tax-loss-harvesting), with the study of [how closely 32 ETF swap pairs moved](https://portfolio-terminal.com/blog/tax-loss-harvesting-etf-swap-pairs).

## What a sale in time is worth, on the demo book

Our French demo book holds stocks and funds at Interactive Brokers and Trading 212. In 2026 it has one realised gain: 20 [Nvidia](https://portfolio-terminal.com/analyse/nvda) shares sold on March 16, a gain of €2,357.21 in euros. At the 2026 flat tax of 31.4% (12.8% income tax plus 18.6% social contributions), that is €740.16.

At the closes of November 9, 2026, one line stood under its cost: 25 shares of LVMH, [down with the rest of luxury this year](https://portfolio-terminal.com/blog/why-are-luxury-stocks-down-lvmh-hermes-2026), bought at a weighted average of €653.92 and closing at €402.45.

| On the demo book | Amount |
| --- | --- |
| 2026 gain, 20 Nvidia sold March 16 | €2,357.21 |
| Flat tax on it, at 31.4% | €740.16 |
| LVMH, loss a share (€653.92 less €402.45) | €251.47 |
| Loss on 10 shares | €2,514.70 |
| Loss on all 25 shares | €6,286.75 |
| Tax erased by either sale, settled in 2026 | €740.16 |
| Loss left to carry, 10 shares sold | €157.49 |
| Loss left to carry, 25 shares sold | €3,929.54 |

![Bar chart of Portfolio Terminal's French demo book at the closes of November 9, 2026: a 2026 gain of €2,357.21 on Nvidia, against a loss of €2,514.70 on 10 LVMH shares and €6,286.75 on all 25; either sale erases €740.16 of flat tax](https://portfolio-terminal.com/blog-sources/fr-year-end-losses-gain-vs-lvmh-loss.png "Source: Portfolio Terminal demo book, ECB reference rates, Yahoo Finance closes of November 9, 2026")

10 shares are the fewest whose loss covers the gain: 9 would give €2,263.23, short of it. A loss first comes off the gains of the same year. What is left carries to the gains of the next 10 years, 2027 to 2036 here, provided the loss is declared the year it is realised (article 150-0 D, 11 of the tax code).

Now place the same order one session late, on December 30. It fills, settles on January 4, and counts for 2027. The €740.16 is due for 2026. The loss is not gone: it waits for a 2027 gain. Being late costs a year's wait on €740.16, or longer if 2027 brings no gain.

Three limits. The figures move with LVMH's price every day until the sale. The estimate leaves out the sale's own fee. And a loss that offsets a gain defers tax more often than it removes it: if you buy the shares back at €402.45, that becomes their cost, and the gain you skipped this year shows up when you sell them. We found no waiting period in the French tax code before a buy-back, unlike the 30 days of the US [wash-sale rule](https://portfolio-terminal.com/wash-sale-checker). The tax office can still challenge a sale and an immediate buy-back made only to save tax, under its abuse-of-law procedure: that is a question for an adviser. This is arithmetic on an example book, not a suggestion to sell LVMH or anything else.

## At a foreign broker, the euro gain is yours to compute

A bank in France computes each client's gains and reports them on a yearly tax statement, the IFU. Brokers outside France such as Interactive Brokers or Degiro send none. The gain that goes on form 2074, where a French return computes gains sale by sale, is yours to compute, and two French rules make it differ from the figure on a broker statement.

The cost is the weighted average purchase price, the PMP: every share of the security you hold outside a PEA, fees included, averaged. Many broker statements cost a sale first in, first out instead: the oldest shares are the ones sold.

Every amount is in euros at the rate of its own date. The demo's Nvidia sale, step by step:

| Step | Dollars | ECB rate, dollars per euro | Euros |
| --- | --- | --- | --- |
| Buy 40 at $28.91, May 1, 2023, $5 fee | $1,161.40 | 1.0981 (fixing of April 28) | €1,057.65 |
| Buy 20 at $76.20, April 19, 2024, $5 fee | $1,529.00 | 1.0653 | €1,435.28 |
| Average cost a share (PMP) | $44.84 | | €41.55 |
| Sell 20 at $183.22, March 16, 2026, $5 fee | $3,659.40 | 1.1478 | €3,188.19 |
| Gain on the 20 shares | $2,762.60 | | €2,357.21 |

The shortcut is to take the $2,762.60 and convert it once, at the sale-day rate: €2,406.87. That is €49.66 more gain than the French method, and €15.59 of flat tax. The dollar was dearer when the shares were bought than when they were sold, so their cost in euros was higher than the shortcut assumes. With a dollar that rose instead, the shortcut would understate the gain. Either way it is not the figure the return asks for.

![Bar chart of the gain on 20 Nvidia shares sold on March 16, 2026, in euros: €2,357.21 with each buy and the sale converted at its own ECB rate, €2,406.87 when the broker's dollar gain is converted once at the sale-day rate, a gap of €49.66](https://portfolio-terminal.com/blog-sources/fr-year-end-losses-euro-gain-two-ways.png "Source: ECB euro reference rates for the US dollar, Portfolio Terminal demo book")

## Three ways the date gets missed

- **The order of December 30 or 31 on a European market.** It fills, and the confirmation is dated 2026. The settlement, and the tax year, are 2027.
- **The limit order that does not fill.** An order placed on the 29th at a price the market never reaches is not a sale. A day of margin leaves room for a second try.
- **A market that is not in the table.** A fund bought through London, Zurich or Milan follows that exchange's own calendar and settlement cycle. Read it before counting on the 29th.

## What to do before December 29

1. Add up the gains you have realised in 2026, in euros, at the PMP, and take off any loss carried from earlier years.
2. List the lines standing under their cost, with the loss a share.
3. Compare the two: a loss larger than the year's gains erases no more tax this year, it carries forward.
4. If you sell, place the order with a day of margin and read your broker's year-end notice.
5. Keep the trade confirmation, the broker's record of the executed order: it shows the settlement date.

Steps 1 to 3 are what the "Before December 31" panel does on [the demo](https://portfolio-terminal.com/demo), on a book like this one, and on your own lines once they are in: [import them from a broker export or a screenshot](https://portfolio-terminal.com/onboarding), no broker login. The audit described on the [pricing page](https://portfolio-terminal.com/pricing) turns them into a dated plan, line by line; it keeps December 29 for every line, US shares included, which leaves a day of margin.

## How we measured

The dates come from each market's settlement cycle and its 2026 calendar: two business days for Euronext and Xetra, one for the NYSE and Nasdaq; no trading on Xetra on December 24 and 31; no settlement anywhere on December 25 and January 1. The last trade day is the last session whose settlement day is still in 2026.

The amounts come from Portfolio Terminal's French demo book, a made-up account whose buys are dated and priced at real closes, valued at the Yahoo Finance closes of November 9, 2026. The gain is computed at the weighted average purchase price in euros, each amount at the ECB reference rate of its date, or of the last fixing before it. The flat tax is the 2026 rate, 31.4%. The same figures come out of the site's own tax engine, to the cent; a test holds the two together.

What would change the result: a broker cut-off earlier than the market's, a settlement that fails, a change in the 2026 holiday calendars, LVMH's price on the day of the sale, losses carried from earlier years (they come off the gain first), and the option for the income-tax scale instead of the flat tax. A PEA and crypto follow other rules and are left out.

## Reproduce it

The script recomputes the three dates, the demo book's amounts and the two euro gains from the ECB's public rates; we ran it on November 10, 2026.

```python
# Reproduces https://portfolio-terminal.com/blog/moins-values-courtier-etranger-vendre-avant-31-decembre
# pip install requests
# For a French resident at a foreign broker in 2026: (1) by market, the last trade day whose settlement,
# the day ownership passes (CMF art. L211-17; BOFiP BOI-RPPM-PVBMI-30-10-10), still falls in 2026;
# (2) on our French demo book, the flat tax that selling the losing line by that day erases; (3) the
# year's gain in euros at the ECB rate of each buy and of the sale (the PMP the French return asks
# for), against the broker's dollar gain converted once.
import csv, io, json
from datetime import date, timedelta
import requests

YEAR, FLAT_TAX = 2026, 0.128 + 0.186  # income tax 12.8% + social contributions 18.6% (2026)
# Settlement cycle in business days and year-end closures. Euronext: open Dec 31 (early close). Xetra: no trading
# Dec 24 and 31, Clearstream settles Dec 31. US: T+1 since May 28, 2024 (SEC rule 15c6-1). EU: T+2 until Oct 11, 2027.
HOLIDAYS = {"12-25", "01-01"}
MARKETS = {"Euronext (Paris, Amsterdam)": (2, HOLIDAYS), "Xetra (Frankfurt)": (2, HOLIDAYS | {"12-24", "12-31"}), "NYSE / Nasdaq": (1, HOLIDAYS)}
is_open = lambda day, closed: day.weekday() < 5 and day.strftime("%m-%d") not in closed

def settles(trade, cycle):
    day = trade
    while cycle:
        day += timedelta(days=1)
        cycle -= is_open(day, HOLIDAYS)
    return day

dates = {}
for name, (cycle, no_trade) in MARKETS.items():
    last = date(YEAR, 12, 31)
    while not (is_open(last, no_trade) and settles(last, cycle).year == YEAR):
        last -= timedelta(days=1)
    after = last + timedelta(days=1)
    while not is_open(after, no_trade):
        after += timedelta(days=1)
    dates[name] = {"last_trade": str(last), "settles": str(settles(last, cycle)), "next_trade": str(after), "next_trade_settles": str(settles(after, cycle))}
    print(f"{name}: sell by {last:%a %d %b} (settles {settles(last, cycle):%a %d %b}); a sale on {after:%a %d %b} settles {settles(after, cycle):%a %d %b %Y}")

# The demo book's one line under its cost at Interactive Brokers: LVMH, two buys (shares, price), €5 a trade,
# against its close on Nov 9, 2026 (Euronext Paris). French cost is the weighted average price (PMP), fees in.
BOUGHT, CLOSE = [(10, 728.4), (15, 603.6)], 402.45
held, cost = sum(q for q, _ in BOUGHT), sum(q * p + 5 for q, p in BOUGHT)
loss_a_share = cost / held - CLOSE
loss_total = round(cost - held * CLOSE, 2)

# The year's gain: 20 of 60 Nvidia shares sold at Trading 212 on Mar 16, 2026 at $183.22, $5 a trade.
BUYS, SALE = [("2023-05-01", 40, 28.91), ("2024-04-19", 20, 76.20)], ("2026-03-16", 20, 183.22)
url = "https://data-api.ecb.europa.eu/service/data" + "/EXR/D.USD.EUR.SP00.A?startPeriod=2023-04-20&endPeriod=2026-03-20&format=csvdata"  # the ECB's data API
fixings = {row["TIME_PERIOD"]: float(row["OBS_VALUE"]) for row in csv.DictReader(io.StringIO(requests.get(url, timeout=60).text))}

def ecb(day):  # dollars per euro, the last fixing on or before the day (none on May 1, 2023)
    d = date.fromisoformat(day)
    while str(d) not in fixings:
        d -= timedelta(days=1)
    return fixings[str(d)], str(d)

shares = sum(q for _, q, _ in BUYS)
pmp_eur = sum((q * p + 5) / ecb(d)[0] for d, q, p in BUYS) / shares
pmp_usd = sum(q * p + 5 for _, q, p in BUYS) / shares
sale_rate = ecb(SALE[0])[0]
proceeds_usd = SALE[1] * SALE[2] - 5
gain_eur = round(proceeds_usd / sale_rate - pmp_eur * SALE[1], 2)
gain_usd = round(proceeds_usd - pmp_usd * SALE[1], 2)
gain_usd_in_eur = round(gain_usd / sale_rate, 2)
gap = round(gain_usd_in_eur - gain_eur, 2)
tax_due, erased = round(gain_eur * FLAT_TAX, 2), round(min(loss_total, gain_eur) * FLAT_TAX, 2)
enough = next(n for n in range(1, held + 1) if n * loss_a_share >= gain_eur)  # the fewest shares whose loss covers the gain
print(f"LVMH on Nov 9: {held} shares, PMP €{cost / held:,.2f}, close €{CLOSE:,.2f}, loss €{loss_total:,.2f} (€{loss_a_share:,.2f} a share)")
print(f"2026 gain (Nvidia, PMP €{pmp_eur:,.2f} a share at ECB rates): €{gain_eur:,.2f}; the broker's ${gain_usd:,.2f} at the sale-day rate: €{gain_usd_in_eur:,.2f}, €{gap:,.2f} more (€{gap * FLAT_TAX:,.2f} of tax)")
print(f"flat tax on the gain: €{tax_due:,.2f}; erased by a sale settled in 2026: €{erased:,.2f}; {enough} shares are enough (loss €{enough * loss_a_share:,.2f}); all {held} carry €{loss_total - gain_eur:,.2f} to 2027–2036")
json.dump({"year": YEAR, "flat_tax": round(FLAT_TAX, 4), "markets": dates, "priced": "2026-11-09",
           "lvmh": {"shares": held, "cost": round(cost, 2), "pmp": round(cost / held, 2), "close": CLOSE, "value": round(held * CLOSE, 2), "loss": loss_total, "loss_a_share": round(loss_a_share, 2)},
           "rates": {d: {"rate": ecb(d)[0], "fixing": ecb(d)[1]} for d in [b[0] for b in BUYS] + [SALE[0]]}, "pmp_eur": round(pmp_eur, 2), "pmp_usd": round(pmp_usd, 2),
           "proceeds_eur": round(proceeds_usd / sale_rate, 2), "gain_eur": gain_eur, "gain_usd": gain_usd, "gain_usd_in_eur_at_sale": gain_usd_in_eur, "gap_eur": gap,
           "gap_tax": round(gap * FLAT_TAX, 2), "tax_due": tax_due, "tax_erased": erased, "shares_enough": enough, "loss_enough": round(enough * loss_a_share, 2),
           "carried_enough": round(enough * loss_a_share - gain_eur, 2), "loss_carried": round(loss_total - gain_eur, 2)}, open("results.json", "w"), indent=1)
```

```text
Euronext (Paris, Amsterdam): sell by Tue 29 Dec (settles Thu 31 Dec); a sale on Wed 30 Dec settles Mon 04 Jan 2027
Xetra (Frankfurt): sell by Tue 29 Dec (settles Thu 31 Dec); a sale on Wed 30 Dec settles Mon 04 Jan 2027
NYSE / Nasdaq: sell by Wed 30 Dec (settles Thu 31 Dec); a sale on Thu 31 Dec settles Mon 04 Jan 2027
LVMH on Nov 9: 25 shares, PMP €653.92, close €402.45, loss €6,286.75 (€251.47 a share)
2026 gain (Nvidia, PMP €41.55 a share at ECB rates): €2,357.21; the broker's $2,762.60 at the sale-day rate: €2,406.87, €49.66 more (€15.59 of tax)
flat tax on the gain: €740.16; erased by a sale settled in 2026: €740.16; 10 shares are enough (loss €2,514.70); all 25 carry €3,929.54 to 2027–2036
```

---

*This article computes dates and amounts on an example. It is not tax advice and not investment advice; your own return depends on your whole situation.*

Sources: [BOFiP, BOI-RPPM-PVBMI-30-10-10, the date of the taxable event](https://bofip.impots.gouv.fr/doctrine/BOI-RPPM-PVBMI-30-10-10) · [AMF mediator, the year-end order case, Dec. 1, 2020](https://www.amf-france.org/fr/le-mediateur/journal-de-bord-du-mediateur/dossiers-du-mois/ordre-de-bourse-les-precautions-prendre-pour-que-les-transactions-soient-enregistrees-avant-le-31) · [BOFiP, how losses offset gains](https://bofip.impots.gouv.fr/doctrine/pgp/2841-PGP) · [Euronext, trading hours and holidays](https://www.euronext.com/en/trade/trading-hours-holidays) · [Deutsche Börse, Xetra trading calendar](https://cashmarket.deutsche-boerse.com/cash-en/trading/trading-calendar-and-trading-hours) · [NYSE, hours and calendars](https://www.nyse.com/markets/hours-calendars) · [SEC, the move to T+1](https://www.sec.gov/newsroom/press-releases/2023-29) · [ESMA, the EU's move to T+1](https://www.esma.europa.eu/esmas-activities/markets-and-infrastructure/central-securities-depositories) · [French economy ministry, the flat tax in 2026](https://www.economie.gouv.fr/particuliers/impots-et-fiscalite/gerer-mes-autres-impots-et-taxes/comment-fonctionne-le-prelevement) · [IRS Publication 550, wash sales and trade dates](https://www.irs.gov/publications/p550) · [ECB, euro reference rates](https://www.ecb.europa.eu/stats/policy_and_exchange_rates/euro_reference_exchange_rates/html/eurofxref-graph-usd.en.html)

## Questions and answers

**What is the last day to sell shares at a loss for the 2026 French tax year?**

Tuesday, December 29, 2026 for shares traded on Euronext or Xetra, and Wednesday, December 30, 2026 for shares traded on the NYSE or Nasdaq. French tax dates a sale at the transfer of ownership, which on an exchange happens at settlement: two business days after the trade in Europe, one in the United States. Both dates settle on Thursday, December 31, 2026. A broker’s own cut-off, if earlier, comes first.

**Does a sale on December 31 count for the year in France?**

No. A sale executed on December 31, 2026 settles on Monday, January 4, 2027 on the NYSE and Nasdaq, and on January 5 on Euronext, so it counts for 2027. French tax dates a sale at the transfer of ownership (BOFiP BOI-RPPM-PVBMI-30-10-10), which article L. 211-17 of the Code monétaire et financier places at the settlement of the trade. In a case published by the AMF’s mediator, a sale of December 31, 2019 at a loss of more than €40,000 settled on January 2, 2020 and counted for 2020.

**How do losses offset gains on a French compte-titres?**

Losses realised in a year are set against the gains of the same kind realised that year; what is left carries forward to the gains of the following 10 years (article 150-0 D, 11 of the French tax code), provided it is declared. On our demo book, a 2026 gain of €2,357.21 taxed at the 31.4% flat tax costs €740.16; a loss of €2,514.70 settled in 2026 erases it and leaves €157.49 to carry.

**Does a foreign broker compute French capital gains for me?**

Not in the form the French return asks for. A bank in France reports each client’s sales on a yearly tax statement, the IFU; brokers outside France such as Interactive Brokers or Degiro send none. The gain is then yours to compute: the weighted average purchase price (PMP) of all your shares of the security, fees included, with every amount converted to euros at the rate of its own date.

**Why not convert the dollar gain on my broker statement into euros?**

Because the French rule converts each purchase and each sale at the rate of its own date, and the dollar moved between them. For 20 Nvidia shares bought in 2023 and 2024 and sold on March 16, 2026, the euro gain at each date’s ECB rate is €2,357.21; the dollar gain of $2,762.60 converted once at the sale-day rate is €2,406.87, €49.66 more, or €15.59 of flat tax at 31.4%.

**Will the last day to sell be the same in 2027?**

No. European markets settle two business days after the trade until October 11, 2027, when the European Union moves to next-day settlement, as the United States did on May 28, 2024. From the 2027 year end, a sale on a European exchange will settle one business day later instead of two, so the last trade day moves one session closer to December 31.
