For three decades, the European Union ran the world's largest carbon market — and watched as the cement, steel, fertiliser, and aluminium it imported quietly leaked the emissions back across its borders. CBAM is the patch. From January 2026, importers of those products into the EU pay for the carbon embedded in them, at the same price domestic producers pay under the EU ETS.
If you're reading this, you probably already know that. What's less clear, even after a year of reports and webinars, is what an importer is actually supposed to doon Tuesday morning when a shipment of rebar arrives in Antwerp. This guide answers that, in order: what's covered, what data you need, where to get it, and what the filing actually looks like.
What CBAM covers, in plain English
Six product categories, defined by HS code:
- Cement (HS 2523)
- Iron and steel (HS 72, 7301–7308 — the long list)
- Aluminium (HS 7601–7616)
- Fertilisers (HS 2808, 2814, 2834, 3102, 3105)
- Hydrogen (HS 2804.10)
- Electricity(HS 2716 — yes, that's a real code)
The scope is widening. Downstream products containing these inputs — screws, bolts, kitchen sinks, scaffolding — come into scope in 2027. By 2030 the Commission expects to cover organic chemicals, plastics, and most upstream basic materials. Plan accordingly.
“Every CBAM filing is, in the end, an emissions number with a paper trail behind it. Either you have the paper trail, or your installation default kicks in — and the default is almost always more expensive.”— EU Commission, CBAM implementing guidance, August 2024
The numbers you'll need to file
Each quarterly report is a list of imports with four numbers attached to each row. Get these and the rest is mechanical.
1. Net mass
In tonnes, by CN code, by country of origin. This is on your customs declaration already — you're just lifting it. The trap: CBAM uses CN8 (eight-digit) codes, not the six-digit HS most software defaults to. A goods code that's “the same product” at 6 digits can split into multiple CBAM scopes at 8.
2. Embedded direct emissions
The CO₂ released at the production installation itself, expressed as tCO₂e per tonne of product. If the installation reports actual data, you use it. If it doesn't, you fall back to the country-of-origin default — which for most steel mills outside the OECD is materially worse than reality.
3. Embedded indirect emissions
The CO₂ from the electricity used in production. Same data sources, same default fallback. Indirect emissions only count for cement, fertiliser, and (from 2026) aluminium and hydrogen — steel is exempt for the indirect column, which surprises a lot of people.
4. Carbon price already paid abroad
Anything the producer's government has already charged for the same emissions — a carbon tax, an ETS allowance — is deducted from your CBAM bill. Bring receipts. This number is zero for most countries today; not for long.
Embedded emissions, hot-rolled steel coil
tCO₂e per tonne · 2024 dataDefaults from JRC 2023; producer-reported values from EUROFER + 14 mill-level disclosures. Bindu maintains a live table in the workspace.
Key dates: 2026 and beyond
Compliance calendar
- Jan 1, 2026
- Definitive period begins. CBAM certificates start accruing on every covered import. Default values still permitted but explicit financial impact begins.
- Jan 31, 2026
- Q4 2025 report due — last “transitional” report. No certificates surrendered, but accuracy now scrutinised.
- May 31, 2026
- First annual CBAM declaration covering 2025. Authorised CBAM declarant status required from this date onward.
- Jan 1, 2027
- Default values phased out. Verified producer data effectively mandatory; otherwise default rises annually.
- Jan 1, 2030
- Scope extended to all sectors covered by EU ETS — cumulative coverage expected to reach ~50% of EU ETS emissions.
The producer-data problem
The whole regime hinges on the importer being able to obtain installation-level emissions data from a supplier they don't own and may not have leverage over. Reality:
- Tier-1 mills (large EU, Korean, Japanese, Turkish producers) will quote a number on a letterhead within a week. They have a CBAM helpdesk. Use it.
- Tier-2 producers (mid-size Asian and South American mills) typically need a structured request — process route, fuel mix, electricity source, and a verifier statement. Budget six weeks the first time, two weeks for re-orders.
- Tier-3(the very long tail) often lack the metering to compute it. In practice you'll either accept defaults or switch suppliers. There is no third option.
If you import from more than ten producers, this is a database problem. Spreadsheets work for a quarter and then begin to lie.
What the filing actually looks like
The CBAM report is uploaded to the EU CBAM Registry as an XML file. It has a flat structure: a header (declarant identity, period), and one row per import — CN code, country, mass, embedded direct, embedded indirect, carbon price paid, exporter, installation. The Commission published a JSON schema in late 2024 and most ERPs now export it natively, with one significant caveat: the schema validates structure, not values. A file can be perfectly valid and completely wrong.
This is where automated agents earn their keep. A well-built workflow will:
- Pull the import declarations for the period from your customs broker
- Match each line to its installation record (one supplier, multiple plants — common for steel)
- Apply the right emissions value: producer-reported if available and verified, country default otherwise
- Calculate the certificate count at the Friday-of-prior-week ETS price
- Generate the XML and a human-readable PDF dossier
- Sign the dossier and store it somewhere you'll find it again in 2031
The dossier is the part everyone forgets. CBAM filings are auditable for ten years. If you can't produce, on demand, the chain of evidence — the BOL, the invoice, the producer letter, the verifier attestation, the screenshot of the default value with its publication date — you have a problem that is not solvable retroactively.
How Bindu handles it
We built CBAM as a workflow, not a dashboard. Drop a quarter of bills of lading into a workspace and Bindu's agents classify each line at CN8, match the producer against our installation database, request missing producer data via a templated email (or, increasingly, an EDI message), apply the right defaults where data is unavailable, and emit both the XML and a signed dossier.
The whole thing runs on whatever model you trust — Claude, Codex, Gemini, your fine-tuned local — and self-hosts on a $20-a-month VM if regulatory data residency matters to you. You can book a 30-minute demoand we'll run a quarter of your own shipments through it before you decide anything.


