Crypto Capital Gains Calculation in France: The 150 VH bis Portfolio Method (2026)

Crypto Finance·

Crypto Capital Gains Calculation in France: The 150 VH bis Portfolio Method (2026)

France does not use FIFO for occasional crypto investors. Article 150 VH bis CGI uses a global-portfolio formula: gain = disposal price − (total acquisition price × disposal price / total portfolio value). Worked examples for 2026.
Author avatar Wag3s TeamEditorial team specializing in Web3 finance, crypto tax, and DAO operations. Based in Zurich, Switzerland.

Reviewed by Wag3s Editorial Team — verified against article 150 VH bis CGI and BOFiP guidance on the global-portfolio method · Last reviewed May 2026

Crypto Capital Gains Calculation in France

If you take one number away from French crypto tax, make it this: France does not use FIFO for occasional investors. This article is narrowly about the calculation itself — the article 150 VH bis global-portfolio formula, the running-total mechanic that makes it hard to do by hand, and worked examples at the 2026 rate. Where that gain gets entered is the 2086 form; which rate then applies is PFU vs barème; how the small-activity exemption gates all of it is the €305 threshold. For the full picture, start at the France crypto tax guide.

Key points

  • Not FIFO, not LIFO, not per-lot. France (occasional investors) uses the 150 VH bis global-portfolio method.
  • Formula: gain = disposal price − (total acquisition price × disposal price / total portfolio value at disposal).
  • The total acquisition price is cumulative and is reduced proportionally as disposals occur.
  • Crypto-to-crypto is not taxable but must still be tracked for portfolio valuation.
  • The rate on the net gain (PFU 31.4% in 2026, or barème by option) is a separate step from the calculation.

Why FIFO is wrong here

Most country guides default to a per-lot cost basis (FIFO/LIFO/HIFO). France's occasional-investor regime does not. Under article 150 VH bis, you do not match a disposal to specific acquisition lots. Instead each disposal's gain is a proportional slice of the whole portfolio's accumulated investment. Applying FIFO to a French occasional investor will produce a different — and incorrect — taxable gain.

The formula

Gain (per disposal) =
    disposal price
  − ( total acquisition price of the portfolio
      × disposal price / total value of the portfolio at the disposal )

In French: plus-value = prix de cession − (prix total d'acquisition × prix de cession / valeur globale du portefeuille).

The three inputs per disposal:

InputMeaning
Disposal price (prix de cession)Proceeds of this taxable disposal (to fiat/goods/services)
Total acquisition price (prix total d'acquisition)Cumulative net amount invested in the portfolio, as reduced by prior disposals
Portfolio value (valeur globale du portefeuille)Total market value of the whole crypto portfolio at the moment of this disposal

The running-total mechanic

The subtlety that makes 150 VH bis hard to do by hand: the total acquisition price is cumulative and decreases as you dispose. Each taxable disposal "consumes" a fraction of the total acquisition price equal to the fraction of portfolio value disposed of:

  • Fraction disposed = disposal price / portfolio value at disposal.
  • Acquisition price consumed = total acquisition price × that fraction.
  • Remaining total acquisition price = previous total − consumed.

So the figure feeding the next disposal's formula is not the original total invested — it is the running, reduced total. Errors compound across the year if this running figure is not maintained correctly.

Worked example (2026)

Assume a portfolio: total acquisition price €10,000; current total portfolio value €25,000. You dispose of €5,000 to fiat.

  1. Fraction disposed = 5,000 / 25,000 = 0.2.
  2. Acquisition consumed = 10,000 × 0.2 = €2,000.
  3. Gain = 5,000 − 2,000 = €3,000.
  4. Remaining total acquisition price for the next disposal = 10,000 − 2,000 = €8,000.

If later in the year the portfolio is worth €18,000 and you dispose of €3,600:

  1. Fraction = 3,600 / 18,000 = 0.2.
  2. Acquisition consumed = 8,000 × 0.2 = €1,600.
  3. Gain = 3,600 − 1,600 = €2,000.
  4. Remaining total acquisition price = 8,000 − 1,600 = €6,400.

Net annual gain = 3,000 + 2,000 = €5,000, taxed at the 2026 PFU 31.4% (or barème by option — see PFU vs barème).

Crypto-to-crypto: non-taxable but tracked

Crypto-to-crypto exchanges are not taxable events for occasional investors, so they do not trigger the formula. But they change the portfolio's composition and value, which feeds the valeur globale du portefeuille input at later taxable disposals. So they must still be tracked even though they are not taxed. "Non-taxable" is not "ignore."

The rate is a separate step

The 150 VH bis method produces the net annual gain. The rate is then applied separately: PFU 31.4% in 2026 (12.8% income tax + 18.6% prélèvements sociaux — up from 30% because CSG rose 9.2% → 10.6%), or the progressive scale if the global barème option is elected. Do not conflate the calculation (150 VH bis) with the rate (PFU/barème) — they are independent decisions.

Practical workflow

  1. Abandon FIFO for the French occasional-investor computation.
  2. Maintain the running total acquisition price, reduced proportionally at each disposal.
  3. Value the whole portfolio at each taxable disposal (track crypto-to-crypto for this even though untaxed).
  4. Apply the formula per disposal; sum to the net annual gain on Form 2086.
  5. Apply the 2026 PFU 31.4% (or barème) and reconcile against DAC8-reported data.

Configuring a tool for the 150 VH bis calculation

This is the step a generic crypto-tax tool is most likely to get wrong for France, because the portfolio formula is unlike the per-lot logic most tools default to. Before relying on a figure, confirm the tool:

  • uses the 150 VH bis global-portfolio method rather than FIFO, LIFO, or HIFO;
  • maintains the running total acquisition price, reduced proportionally at each disposal, rather than re-using the original amount invested;
  • values the whole portfolio at each taxable disposal, including holdings affected by untaxed crypto-to-crypto trades;
  • applies the 2026 PFU at 31.4% to the net gain, not a stale 30%.

Waltio is built around the French 150 VH bis method and does not apply FIFO for French users; Koinly supports it as a setting. A tool left on a FIFO or 30% default will be wrong for France in 2026.

How Wag3s fits in

Wag3s Folio implements the 150 VH bis global-portfolio method with the running-total mechanic and applies the 2026 PFU at 31.4%, producing per-disposal and net annual figures ready for the 2086. It generates the calculation and the underlying record; for confirming the result on a complex history it is designed to support a qualified French expert-comptable rather than replace one.


Further reading

Sources

Editorial disclaimer
This article is informational and does not constitute tax advice. The 150 VH bis formula and the treatment of the cumulative acquisition price are technical. Confirm computations with a French expert-comptable before filing.