[{"data":1,"prerenderedAt":510},["ShallowReactive",2],{"blog:\u002Fblog\u002Fcbam-two-acts-that-contradict-each-other":3},{"id":4,"title":5,"body":6,"date":495,"description":496,"extension":497,"hero":498,"heroAlt":498,"keywords":499,"meta":500,"navigation":501,"path":502,"readingMinutes":503,"seo":504,"stem":505,"tags":506,"__hash__":509},"blog\u002Fblog\u002Fcbam-two-acts-that-contradict-each-other.md","Fifteen steel codes where we cannot reconcile the two CBAM acts",{"type":7,"value":8,"toc":485},"minimark",[9,13,16,19,24,32,99,120,123,127,134,140,143,180,183,194,204,208,211,331,334,338,345,398,401,404,411,418,422,425,428,449,456,463,467,474,477,480],[10,11,12],"p",{},"Two implementing regulations sit underneath every CBAM steel calculation. One gives you the default\nemissions to use when you have no verified supplier data. The other gives you the free-allocation\nbenchmark you subtract from it. Both are published, both are in force, and for most goods they line\nup.",[10,14,15],{},"For fifteen CN codes we cannot get them to line up. Not \"the data is unclear\" — the route one act\nnames for the good is not among the routes the other publishes a benchmark for. We have not found a\nreading of the two annexes that yields a figure.",[10,17,18],{},"We did not find this by reading. We found it by running every declarable combination through our own\ncalculation and looking at what refused to resolve. What follows is that derivation, in full, so you\ncan check it — and correct us if there is a reading we missed.",[20,21,23],"h2",{"id":22},"the-letters-and-what-they-actually-mean","The letters, and what they actually mean",[10,25,26,27,31],{},"Both acts describe production routes with single letters in brackets. Most summaries treat these as\nif they were categories of goods. They are not. The Annex I legend encodes ",[28,29,30],"strong",{},"grade × route",":",[33,34,35,48],"table",{},[36,37,38],"thead",{},[39,40,41,45],"tr",{},[42,43,44],"th",{},"Marker",[42,46,47],{},"Meaning",[49,50,51,60,71,83,91],"tbody",{},[39,52,53,57],{},[54,55,56],"td",{},"(A) \u002F (B)",[54,58,59],{},"grey \u002F white cement",[39,61,62,65],{},[54,63,64],{},"(C) \u002F (D) \u002F (E)",[54,66,67,70],{},[28,68,69],{},"carbon"," steel via BF\u002FBOF, DRI\u002FEAF, Scrap\u002FEAF",[39,72,73,76],{},[54,74,75],{},"(F) \u002F (G) \u002F (H)",[54,77,78,79,82],{},"the ",[28,80,81],{},"same three routes"," for low-alloy steel",[39,84,85,88],{},[54,86,87],{},"(J)",[54,89,90],{},"high-alloy steel (EAF)",[39,92,93,96],{},[54,94,95],{},"(K) \u002F (L)",[54,97,98],{},"primary \u002F secondary aluminium",[10,100,101,102,106,107,110,111,114,115,119],{},"Read the second axis carefully, because it is the one that causes the problem. ",[103,104,105],"code",{},"BF\u002FBOF"," is ",[28,108,109],{},"(C)"," for\ncarbon steel and ",[28,112,113],{},"(F)"," for low-alloy steel. The letter does not tell you the furnace alone — it\ntells you the furnace ",[116,117,118],"em",{},"and"," the grade.",[10,121,122],{},"And the grade is a composition fact. Implementing Regulation (EU) 2025\u002F2620, point 5.2.3 draws the\nline at 8 % alloying elements. Your CN code does not carry that. Your customs declaration does not\ncarry it. It lives in the mill certificate, if you have one.",[20,124,126],{"id":125},"where-the-two-do-not-meet","Where the two do not meet",[10,128,129,130,133],{},"Take CN ",[28,131,132],{},"7225 19 90"," — flat-rolled products of other alloy steel, of silicon-electrical\nsteel, other than grain-oriented, other than hot-rolled.",[10,135,136,137,139],{},"Implementing Regulation (EU) 2025\u002F2621, the default-values annex, assigns it ",[28,138,113],{},": low-alloy,\nBF\u002FBOF route.",[10,141,142],{},"Implementing Regulation (EU) 2025\u002F2620, the benchmark annex, publishes free-allocation benchmarks for\nthat code as:",[33,144,145,155],{},[36,146,147],{},[39,148,149,152],{},[42,150,151],{},"Route",[42,153,154],{},"Benchmark (tCO₂\u002Ft)",[49,156,157,164,172],{},[39,158,159,161],{},[54,160,109],{},[54,162,163],{},"1.488",[39,165,166,169],{},[54,167,168],{},"(D)",[54,170,171],{},"0.563",[39,173,174,177],{},[54,175,176],{},"(E)",[54,178,179],{},"0.138",[10,181,182],{},"There is no (F). The defaults act tells you which route to assume; the benchmark act publishes no\nvalue for that route. The two vocabularies do not meet.",[10,184,185,186,189,190,193],{},"This is not a rounding question. ",[103,187,188],{},"SEFA = CBAM_y × CSCF_y × BM_g"," needs a ",[103,191,192],{},"BM_g",", and for this code\nunder that marker the benchmark annex publishes none. If there is a reading of the two annexes that\nsupplies one, we have not found it — and we would genuinely rather be told than keep blocking the\ngood.",[10,195,196,197,200,201,203],{},"The neighbouring line makes it stranger: ",[28,198,199],{},"7225 19 10",", the hot-rolled sibling one row above,\ncarries ",[28,202,109],{}," — a route the benchmark table does publish. Same subheading, same annex, one code\nresolves and the next does not.",[20,205,207],{"id":206},"the-fifteen-codes","The fifteen codes",[10,209,210],{},"Eighteen (code, marker) pairs across fifteen distinct CN codes, all of them iron and steel — five\nunder chapter 72, ten under chapter 73:",[33,212,213,223],{},[36,214,215],{},[39,216,217,220],{},[42,218,219],{},"CN code",[42,221,222],{},"Marker named by the defaults act, unpublished in the benchmark act",[49,224,225,233,240,247,254,261,268,275,282,289,296,303,310,317,324],{},[39,226,227,230],{},[54,228,229],{},"7205 21 00",[54,231,232],{},"(C), (E)",[39,234,235,237],{},[54,236,132],{},[54,238,239],{},"(F), (H)",[39,241,242,245],{},[54,243,244],{},"7226 19 80",[54,246,239],{},[39,248,249,252],{},[54,250,251],{},"7228 30 41",[54,253,113],{},[39,255,256,259],{},[54,257,258],{},"7228 30 49",[54,260,113],{},[39,262,263,266],{},[54,264,265],{},"7304 31 20",[54,267,113],{},[39,269,270,273],{},[54,271,272],{},"7304 31 80",[54,274,113],{},[39,276,277,280],{},[54,278,279],{},"7304 51 10",[54,281,109],{},[39,283,284,287],{},[54,285,286],{},"7304 51 81",[54,288,109],{},[39,290,291,294],{},[54,292,293],{},"7304 51 89",[54,295,109],{},[39,297,298,301],{},[54,299,300],{},"7304 59 82",[54,302,109],{},[39,304,305,308],{},[54,306,307],{},"7304 59 83",[54,309,109],{},[39,311,312,315],{},[54,313,314],{},"7304 59 89",[54,316,109],{},[39,318,319,322],{},[54,320,321],{},"7306 50 21",[54,323,109],{},[39,325,326,329],{},[54,327,328],{},"7306 50 80",[54,330,109],{},[10,332,333],{},"If you import any of these, this is worth checking against your own figures — not because your data\nis wrong, but because any figure you have been given for them rests on somebody having chosen a route.\nAsk which one, and on what basis.",[20,335,337],{"id":336},"how-we-know","How we know",[10,339,340,341,344],{},"We ran the full grid: ",[28,342,343],{},"119 origins × 570 CN codes"," for import year 2026 — 67,830 combinations —\nthrough the same resolution chain our product uses in production, for a document that states no\nproduction route. That is the realistic case: a customs declaration does not tell you whether the\nsteel came out of a blast furnace or an arc furnace.",[33,346,347,357],{},[36,348,349],{},[39,350,351,354],{},[42,352,353],{},"Outcome",[42,355,356],{},"Count",[49,358,359,367,375,383,391],{},[39,360,361,364],{},[54,362,363],{},"Resolved to a figure",[54,365,366],{},"66,820 (98.5 %)",[39,368,369,372],{},[54,370,371],{},"Blocked — route not resolvable",[54,373,374],{},"912",[39,376,377,380],{},[54,378,379],{},"Blocked — more than one candidate default row",[54,381,382],{},"98",[39,384,385,388],{},[54,386,387],{},"Blocked — no default value at all",[54,389,390],{},"0",[39,392,393,396],{},[54,394,395],{},"Blocked — benchmark missing for a named route",[54,397,390],{},[10,399,400],{},"The two zero rows are guards on our own data load, not a verdict on the acts — read them that way and\nthey would seem to say the contradiction does not exist. It does; it is caught by a different check,\ndescribed below.",[10,402,403],{},"The last two lines are the ones that matter for trust in the data load. Zero missing default values\nmeans the annex is fully covered — no published benchmark is sitting there without a default value\nbehind it. Zero missing benchmarks means the same in the other direction, for the combinations a real\nimport produces.",[10,405,406,407,410],{},"The eighteen conflicts are caught one level up, by a separate check that walks every ",[116,408,409],{},"named"," marker in\nthe annex rather than every import combination. That check does not tolerate a percentage: it asserts\nthe exact list, so a nineteenth conflict — or the disappearance of one, should the Commission amend an\nannex — fails the build rather than passing quietly.",[10,412,413,414,417],{},"The other 912 are a different, milder shape: the annex marks a route for most origins of a code and\nleaves it unmarked for a few. CN ",[28,415,416],{},"7207 19 12"," is the pattern — (C) for 27 origins, (E) for 5, and\nnothing at all for North Macedonia, against a benchmark published per route (C 1.364 \u002F D 0.475 \u002F\nE 0.066). The act does not say which applies. Blocking is the honest answer.",[20,419,421],{"id":420},"what-a-calculator-should-do-here","What a calculator should do here",[10,423,424],{},"Refuse.",[10,426,427],{},"That is not evasion, it is the only defensible behaviour. There are three ways software can respond\nto a missing benchmark:",[429,430,431,438,444],"ol",{},[432,433,434,437],"li",{},[28,435,436],{},"Pick a route."," Silently selects a different free allocation — for 7225 19 90 the published\nvalues range from 0.138 to 1.488, a factor of eleven. A wrong pick understates the obligation by\nan order of magnitude, and Article 26 penalises under-surrender at three to five times the\ncertificate price.",[432,439,440,443],{},[28,441,442],{},"Treat the missing benchmark as zero."," Maximises the obligation instead. Wrong in the safe\ndirection, but still wrong, and it will not survive a verifier's question.",[432,445,446],{},[28,447,448],{},"Return no number, and say which code and which marker.",[10,450,451,452,455],{},"We do the third. Our calculation returns a typed ",[116,453,454],{},"blocked"," result carrying the reason, and writes no\nfigures at all — because a missing input coerced to zero is a silent under-report, and a guessed\nroute is a silent misstatement. The customer sees the CN code, the marker, and the sentence that this\nneeds an answer from the Commission or from counsel.",[10,457,458,459,462],{},"What we deliberately do ",[28,460,461],{},"not"," do is quietly resolve to the lowest published benchmark, even though\nthat would be the conservative direction. It would turn fifteen open legal questions into fifteen\ninvented answers, and nobody looking at the output would know which was which.",[20,464,466],{"id":465},"the-one-thing-you-can-do-now","The one thing you can do now",[10,468,469,470,473],{},"If your goods fall under any of the fifteen codes, ask your supplier for the ",[28,471,472],{},"mill certificate"," —\nspecifically the alloying-element content. That is what decides carbon versus low-alloy, and it is\nthe fact neither the CN code nor the customs declaration carries. With verified actual emissions the\nroute question changes shape entirely, because you are no longer relying on the default table to tell\nyou which furnace to assume.",[10,475,476],{},"It does not dissolve the contradiction. But it moves you from \"the acts disagree about my goods\" to\n\"I can document what my goods actually are\" — which is the position you want to be in when somebody\nasks.",[478,479],"hr",{},[10,481,482],{},[116,483,484],{},"This article explains the rules as we read them; it is not legal advice. The route markers and\ndefault values are set out in Implementing Regulation (EU) 2025\u002F2621 and its Annex I legend, the\nfree-allocation benchmarks and the grade definition in Implementing Regulation (EU) 2025\u002F2620\n(pt 5.2.3), and the penalty regime in Regulation (EU) 2023\u002F956 as amended. The counts above are from\nour own reference-data census for import year 2026 and are pinned in our test suite; verify your own\nposition with your customs agent or the competent authority in your member state — in Germany, the\nDEHSt.",{"title":486,"searchDepth":487,"depth":487,"links":488},"",2,[489,490,491,492,493,494],{"id":22,"depth":487,"text":23},{"id":125,"depth":487,"text":126},{"id":206,"depth":487,"text":207},{"id":336,"depth":487,"text":337},{"id":420,"depth":487,"text":421},{"id":465,"depth":487,"text":466},"2026-09-07","One implementing act assigns your steel a production route. The other publishes free-allocation benchmarks for a different set of routes. For 15 CN codes we cannot get the two to meet — so our calculation returns nothing rather than pick a route. Here are the codes, our derivation, and what would change our reading.","md",null,"CBAM route marker, CBAM benchmark, IR 2025\u002F2620, IR 2025\u002F2621, CBAM free allocation steel, CN 7225 19 90, CBAM Annex I legend, CBAM default values steel grade, CBAM low-alloy steel",{},true,"\u002Fblog\u002Fcbam-two-acts-that-contradict-each-other",7,{"title":5,"description":496},"blog\u002Fcbam-two-acts-that-contradict-each-other",[507,508],"calculation","compliance","luIDwCri1jbojbVDL95pbf9elBOs4Jyr1C5egwGVa80",1790002810922]