Back to all articles
  • calculation
  • compliance

Never recompute the CBAM mark-up. 2026 will not tell you why.

6 min read

The EU default values come with a penalty built in. If you use them instead of verified supplier data, the published figure is your emissions plus a statutory mark-up — and the mark-up rises with the year, not with the material: +10 % in 2026, +20 % in 2027, +30 % from 2028 (Annex I of Implementing Regulation (EU) 2025/2621). Fertiliser is the one exception, flat at +1 % in all three years.

So the annex publishes two numbers per row: the raw value, and the marked-up value for each of the three year columns. Which invites an obvious shortcut. You have the raw figure, you know the year, you multiply.

Do not. And the reason it is worth a whole article is that in 2026 the shortcut works perfectly — so it will not warn you.

What is actually in the table

We load the whole annex into our own store: 32,790 rows, 10,930 per year, across five sectors. Taking the ratio of published to raw on every row gives this:

YearRatioRowsSector
2026×1.01002,416fertiliser
2026×1.10008,512aluminium, cement, hydrogen, iron & steel
2026×1.09991iron & steel
2027×1.01002,416fertiliser
2027×1.20008,502aluminium, cement, hydrogen, iron & steel
2027×1.20017iron & steel
2027×1.21005cement
2028×1.01002,416fertiliser
2028×1.30008,509aluminium, cement, hydrogen, iron & steel
2028×1.33105cement

Look at 2026 on its own and the rule holds everywhere. One row is off by a ten-thousandth, which is rounding. Nothing suggests the shortcut is unsafe.

Now look at 2027 and 2028.

Five rows where the act compounds instead

1.10, 1.21, 1.331. Those are not arbitrary. They are 1.1¹, 1.1², 1.1³ — the mark-up applied again each year rather than stepped 10 / 20 / 30.

It affects five (origin, CN) pairs, all cement, all from two countries:

OriginCNRaw2027 published2028 published
Angola2523 10 001.26001.52461.6771
Angola2523 29 001.27001.53671.6904
Angola2523 90 001.22001.47621.6238
Argentina2523 10 000.90001.08901.1979
Argentina2523 29 000.92001.11321.2245

Check the first line yourself: 1.26 × 1.21 = 1.5246, and 1.26 × 1.331 = 1.6771. The linear rule would have given 1.512 and 1.638.

And in 2026 these same five rows sit at exactly ×1.1000 — indistinguishable from every other row in the table. The divergence does not exist yet. Whatever you build this year to check your figures will pass, and then quietly stop being right on 1 January 2027.

What it costs

The gap on Angolan clinker is 0.0126 tCO₂/t in 2027 and 0.0391 in 2028 — 0.8 % and 2.3 % of the published value.

The free-allocation subtraction does not move when SEE does, so a shortfall in SEE carries straight through to the certificate count. On a 1,000 t consignment of CN 2523 10 00 from Angola in 2028, the linear shortcut understates the obligation by about 39 certificates — roughly €2,900 at the Q2 2026 certificate price of €75.28. Article 26 penalises under-surrender at three to five times the certificate price, so the exposure is a multiple of that, not the figure itself.

That is one origin and one commodity. Small. The point is not the size of this particular gap — it is that a method which reproduces the published table exactly, on ten thousand rows, in the year you are importing, is still the wrong method.

Eight rows that never land on the factor at all

There is a second, smaller finding in that ratio table, and it matters for a different reason.

One 2026 row (Angola, CN 2601 12 00) comes out at ×1.0999: raw 0.6166, published 0.6782, where the exact product is 0.67826. And seven 2027 rows — all Thailand, all iron and steel, all sharing the raw value 1.4396 — come out at ×1.2001: published 1.7276 against an exact 1.72752.

Those are four-decimal rounding in the published table, nothing more. But they are worth noticing, because they tell you something about the column: it was authored, not derived. The act publishes a figure. It does not publish a recipe you are meant to run. Recompute it and you will sometimes get a number the act does not contain — usually in the fourth decimal, occasionally, as above, in the first.

Two numbers, and you need both

The practical rule is short: read the published column for the year, verbatim.

But do not throw the raw value away either, and this is the part that catches people who tidy up their data model. Article 22(2) of Regulation (EU) 2023/956 computes the quarterly holding obligation — the 50 % of your year-to-date liability you must hold in certificates at each quarter-end — on the value without the mark-up.

So the two figures serve two different purposes, in two different places, and neither can be derived from the other with confidence. Store both. We do, in the same row, precisely because storing one and computing the other guarantees a wrong number somewhere.

What to check this week

If you or a provider computes CBAM figures from the default values, ask one question: is the year-column value read from the act, or multiplied out?

If the answer is "multiplied out", it is producing correct numbers today and will produce wrong ones for cement from Angola and Argentina in fifteen months — with nothing in this year's output to suggest it. And ask the same question about the quarterly holding figure, from the other direction: if it uses the marked-up value, it is overstating what you must hold.


This article explains the rules as we read them; it is not legal advice. The default values, their year columns and the mark-up are set out in Annex I of Implementing Regulation (EU) 2025/2621; the quarterly holding obligation in Article 22(2) of Regulation (EU) 2023/956 as amended by Regulation (EU) 2025/2083; the penalty regime in Article 26 of the same. The row counts and ratios above are from our own load of the published annex and are reproducible from it. Verify your own position with your customs agent or the competent authority in your member state — in Germany, the DEHSt.