Publisher: WM STUDIOS. Last updated: 26 August 2026. This page describes a calculation method set out in law. It is neither tax advice nor investment advice.
The problem: several purchases, one sale
As long as you buy a share once and sell the whole position, the arithmetic is obvious: the gain is what you receive minus what you paid.
The moment you add to a position, that obviousness disappears. If you bought ten shares at 100 €, then ten more at 200 €, and you now sell ten, which ones did you sell? Shares carry no serial number. A convention has to decide, and the convention changes the taxable amount directly.
Two conventions exist, only one applies in France
The first is FIFO, first in, first out. You are deemed to sell the oldest shares first, at their actual purchase price. It is the default convention in the United States, and the one many tracking tools designed outside France adopt by default.
The second is the weighted average acquisition price. You add up everything you paid for the position, divide by the number of shares held, and every sale uses that average regardless of how old the shares sold happen to be.
Back to the example: ten shares at 100 €, then ten at 200 €, then a sale of ten at 250 €, so 2 500 € received.
| Convention | Acquisition cost applied | Taxable gain | Tax at the flat rate (31.4 %) |
|---|---|---|---|
| Weighted average (150 € per share) | 1 500 € | 1 000 € | 314 € |
| FIFO (100 € per share) | 1 000 € | 1 500 € | 471 € |
The 31.4 % rate is that of the 2026 French flat tax (12.8 % income tax + 18.6 % social levies), used here for illustration. A taxpayer who has elected taxation at the progressive scale gets a different amount, but the difference in the taxable base between the two conventions is the same.
Same transaction, 500 € difference in the taxable base and 157 € in tax. On a position added to regularly over years, the gap does not cancel out: it accumulates.
What French law says
For securities held by an individual, the French tax code settles it: where securities of the same nature were acquired at different prices, the acquisition price to be used is their weighted average acquisition value (art. 150-0 D of the Code général des impôts).
Two consequences deserve emphasis, because they are widely misunderstood.
It is not an option. The rule is binding on the taxpayer: you may not elect FIFO because it suits you, nor identify which specific shares you would like to have sold. A tool that computes in FIFO therefore does not produce a result that is merely "different but acceptable": it produces a figure that does not match your return.
Selling does not change the average. Disposing of part of the position leaves the weighted average of the remaining shares untouched. It stays the same until you make new acquisitions of securities of the same nature. This is the most common mistake in hand made spreadsheets: recomputing the average after every sale.
The calculation, step by step
The formula fits on one line: add up the total cost of your acquisitions, divide by the quantity held.
Here is a full position, continuing the example.
| Transaction | Quantity held | Total cost of position | Weighted average |
|---|---|---|---|
| Buy 10 shares at 100 € | 10 | 1 000 € | 100 € |
| Buy 10 shares at 200 € | 20 | 3 000 € | 150 € |
| Sell 10 shares at 250 € | 10 | 1 500 € | 150 €, unchanged |
| Buy 5 shares at 120 € | 15 | 2 100 € | 140 € |
On the third row, the taxable gain is 2 500 € received minus 1 500 € of cost applied, so 1 000 €. The average stays at 150 €: only the fourth transaction, a purchase, moves it.
What counts as acquisition price
The acquisition price is not just the quoted price you paid. Acquisition costs and taxes actually borne form part of it: brokerage commissions, settlement fees, financial transaction tax where applicable. They raise the cost applied, and reduce the taxable gain accordingly.
In practice, a position tracked "at market price" without fees yields an average that is too low, and therefore an overstated gain. On small orders placed frequently, fees are not marginal.
Where the answer is different
Three situations fall outside this framework, and applying the above mechanically to them would be wrong.
The PEA. Inside a French equity savings plan, disposals are not taxed transaction by transaction. The acquisition price question therefore does not arise in the same terms: it is the withdrawal from the plan that triggers taxation, under its own rules on holding duration. The calculation described here applies first and foremost to an ordinary securities account.
Crypto-assets. They fall under a separate regime, with a formula that works at the level of the whole portfolio rather than position by position (art. 150 VH bis of the Code général des impôts). Transposing the per-asset weighted average to crypto-assets produces an incorrect result.
Corporate actions. Stock splits, share consolidations, bonus issues, spin-offs, rights distributions: these change the quantity held, sometimes with no cash consideration. They therefore recompute the average, and this is where manual tracking most often breaks down.
A further subtlety concerns the exact scope of "securities of the same nature" when they are spread across several accounts. That point is worth checking against the official tax guidance, or with a professional, rather than settled from memory.
Why the gap cuts both ways
In the example above, FIFO overstates the gain: applied as is, it would have you declare more than is due.
Reverse the order of the purchases and the effect reverses. Ten shares at 200 € then ten at 100 €, sale of ten at 250 €: the weighted average still gives a 1 000 € gain, while FIFO applies a 2 000 € cost and shows only 500 €. This time the gain is understated, and a return built on that figure would fall short.
That is why a figure produced by the wrong convention is not "roughly right". It is wrong in one direction or the other, and you cannot tell which without redoing the calculation.
Where to find this calculation in PulseMyPortfolio
PulseMyPortfolio applies the weighted average acquisition price across your whole transaction journal, fees included, and handles the corporate actions that move the average. The detail is available line by line, reconciled against the matching boxes of the return.
The amounts produced are indicative and meant to be cross-checked: your broker's imprimé fiscal unique is what counts. Tax reporting is in any case only one part of the application, whose main purpose is tracking net worth, liabilities included (multiple accounts, loans and mortgages), day to day monitoring and long term projection.
The application describes your figures; it does not tell you what to do with them. It files nothing with the tax authority, recommends no transaction, and replaces neither your return nor your tax adviser. The calculation runs on your device, with no data sent anywhere.
Sources
- Code général des impôts, article 150-0 D (Légifrance).
- BOI-RPPM-PVBMI-20-10-20-10, acquisition price for consideration, general rules (BOFiP).
- BOI-RPPM-PVBMI-20-10-20-40, special rules for determining the acquisition price (BOFiP).
Tax rules change. Check the version of the cited texts in force at the date of your return.
Further reading
The frequently asked questions cover the most common queries about the application, in particular privacy and importing broker statements.