Nordwind Bau & Metall: one quarter, seven plants, every figure by hand
A Dutch importer brings in cement from Egypt, aluminium plates from the UAE, hot-rolled coil from India and screws from China. Three suppliers model their plants and ask their own suppliers — one chain is three tiers deep — a wrong figure is corrected and the correction travels up the chain, and the quarter is declared. Every expected figure is calculated by hand below from the official EU tables.
Importer3 suppliers4 sub-suppliersVerifierFinanceFictional companies only
On default values€1,202,377.5814,606.14 certificates
With verified supplier data€88,645.801,076.84 certificates · −92.6 %
Plants modelled73 countries · 3 sectors · up to 3 tiers
The hand calculation is a separate program (scripts/tutorials/nordwind_handcalc.py) that reads only the official tables; the automated test e2e/tests/nordwind.spec.ts runs these exact steps on a fresh database and proves the engine equals it.
Before you start
1. A fresh account
Sign up with a work email never used in the app, so every figure below is exact (where new accounts need the administrator's approval, you get an e-mail once it is approved). Step 11 files 2026 — run the tutorial once per account (a filed year changes only by amendment). If you already ran tutorial 1 in this account, use a new one.
The suppliers and sub-suppliers work through secure links — open each in a private window or another browser to see exactly what they see.
Certificates = tonnes × SEE − tonnes × benchmark × free share × CSCF (1.0); cost = certificates × the quarter's price. Cement counts direct + indirect; aluminium and iron & steel count direct only (Annex II). A supplier's figure carries no mark-up and is adjusted on its plant's own route.
The 13 steps
1
Company & EORI
Importer
Workflow bar → 1 · Company & EORI · /declarant
Company name (if empty): Nordwind Bau & Metall B.V. (test)
EORI: NL812345678 · Status: Authorised · Member state (NCA): NL · Authorisation number: NL-CBAM-AD-2026-01142
Click Save status.
You must see
Authorised — you may import and file.
2
The broker's Q3 file, on official defaults
Importer
Workflow bar → 2 · Bring in imports · /customs-import
Upload nordwind-q3-2026.xlsx. It has a cover sheet, a title row, masses in kilograms and countries written as names — the app finds the data sheet and converts them.
Reporting period: 2026-Q3 → Calculate with the engine.
You must see
Preview: 4 of 4 line(s) ready — aluminium 900 t (file: 900,000 kg), origin AE (file: “United Arab Emirates”).
Back on the portal home: Ask your supplier for this figure (clinker) → Company Sinai Clinker Works (test), Email kiln@sinai-clinker.example, English → Send request; copy the new link.
The kiln's link: Egypt (EG) → Model my plant… → Cement → Cement clinker → production 1000000 → Fill from data (5 flows) → Save → Submit to my customer:
Delta Cement's plant page → Submit to my customer (the clinker figure is now linked in).
You must see
Kiln submitted: SEE 0.8815 tCO₂e/t.
Delta Cement submitted: SEE 0.6586 tCO₂e/t — the clinker line reads From your supplier (linked).
Hand calculation
Kiln (clinker, 1,000,000 t):
direct = calcination 525,000 + coal 3,400,000 GJ × 0.0946 (= 321,640) = 846,640 t
indirect = 90,000 MWh × 0.387 (Annex II, Egypt) = 34,830 t
SEE = 0.84664 direct + 0.03483 indirect = 0.8815 tCO₂e/t
Mill (cement, 1,250,000 t), clinker 900,000 t LINKED:
direct = gas 120,000 GJ × 0.0561 (= 6,732) + 900,000 × 0.84664 (= 761,976) = 768,708 t
indirect = 60,000 MWh × 0.387 (= 23,220) + 900,000 × 0.03483 (= 31,347) = 54,567 t
SEE = (768,708 + 54,567) ÷ 1,250,000 = 0.65862 → 0.6586
(cement counts direct AND indirect)
Grid factor 0.387 = the official Annex II value for Egypt. A mass-balance hint on the kiln (raw meal in ≫ clinker out) is expected: calcination releases CO₂.
5
Aluminium: the rolling mill and its smelter — with a slip
SupplierSub-supplier
Gulf Rolling Mill's link, then the smelter's link
Gulf Rolling Mill: United Arab Emirates (AE) → Aluminium → Aluminium products → production 300000 → Fill from data (4 flows) → Save:
Ask your supplier (unwrought aluminium): Emirates Smelter (test) · potlines@emirates-smelter.example.
Smelter's link: AE → Aluminium → Unwrought aluminium — Primary (electrolytic) → production 500000 → Fill from data (6 flows) → Save → Submit. The PFC is deliberately typed 10× too low (5,250):
Smelter: SEE 1.5705 · Gulf Rolling Mill: SEE 1.7912 (aluminium counts direct emissions only).
Hand calculation
Smelter (500,000 t), first submission — PFC typed as 5,250:
direct = anode CO₂ 780,000 + PFC 5,250 = 785,250 t → SEE 1.5705 (direct only, Annex II)
(indirect 7,400,000 MWh × 0.451 = 3,337,400 t is reported, not chargeable for aluminium)
Rolling mill (300,000 t), unwrought 310,000 t LINKED:
direct = gas 900,000 GJ × 0.0561 (= 50,490) + 310,000 × 1.5705 (= 486,855) = 537,345 t
SEE = 537,345 ÷ 300,000 = 1.7912
6
Steel: three tiers — strip mill ← EAF ← DRI
SupplierSub-suppliers
Konkan Strip Mill → Konkan Melt Shop → Odisha DRI
Konkan Strip Mill: India (IN) → Iron & steel → Iron or steel products → production 1000000 → Fill from data (4 flows) → Save:
DRI plant (1,000,000 t): gas 10,500,000 GJ × 0.0561 = 589,050 t → SEE 0.58905 (direct)
grid 110,000 MWh × 0.726 = 79,860 t (indirect, reported)
EAF (1,100,000 t), DRI 900,000 t LINKED, scrap 300,000 t:
direct = gas 800,000 GJ × 0.0561 (= 44,880) + 900,000 × 0.58905 (= 530,145) = 575,025 t → 0.52275
Strip mill (1,000,000 t), crude steel 1,040,000 t LINKED:
direct = gas 1,500,000 GJ × 0.0561 (= 84,150) + 1,040,000 × 0.52275 (= 543,660) = 627,810 t → 0.6278
(iron & steel count direct emissions only)
7
Review — verify five, send the smelter back
Importer
Workflow bar → 4 · Review & verify · /verification
For Sinai Clinker Works, Delta Cement, Odisha DRI, Konkan Melt Shop and Konkan Strip Mill: open → Outcome → Verify → remark → Submit Verification.
Emirates Smelter: Needs Revision with the remark PFC 5,250 tCO2e is 10x below your anode-effect record (52,500). Please correct and resubmit.
You must see
Outcome recorded: verified (×5) and Outcome recorded: needs revision.
Gulf Rolling Mill is not verified yet: its figure depends on the smelter's.
8
The smelter corrects — the change travels up
Sub-supplierImporter
Smelter's link, then /verification
Open the smelter's link: the submission shows Your customer asked for a correction with your remark. Open the plant model.
⤓ Fill from data → paste
PFC (anode-effect) emissions, 52500
→ Match → Fill 1 flow → Submit to my customer.
Back as the importer: verify Emirates Smelter and Gulf Rolling Mill.
You must see
Smelter SEE 1.6650. Gulf Rolling Mill is recomputed by the engine to 1.8888 — nobody retyped it.
Hand calculation
Smelter corrected: PFC 52,500 → direct 832,500 t ÷ 500,000 = 1.6650
Rolling mill (recomputed by the ENGINE through its link — nobody types it):
direct = 50,490 + 310,000 × 1.665 (= 516,150) = 566,640 t ÷ 300,000 = 1.8888
9
The external verifier sees all seven plants
Verifier
/enterprise/verifiers → /auditor
Invite verifier: your own sign-in email (or a colleague's) · Organisation Rijn Verification B.V. (test) · Client Nordwind Bau & Metall B.V. (test) → open the accept link → Access confirmed.
/auditor → Nordwind → Open Konkan Strip Mill… → Bundle.
You must see
All seven plants listed, read-only.
The review dialog shows SEE 0.6278; the ZIP contains reproducibility-check.json.
10
The same file, now with three verified supplier figures
Importer
/customs-import
Upload the same Excel file. In the supplier data panel pick the verified figure for CN 25232900 from EG, 76061130 from AE and 72085120 from IN.
Reporting period 2026-Q3 → Calculate with the engine.
You must see
Three lines marked Actual (supplier / verified); the screws stay on the default.
Why the route matters (and what this tutorial caught). Reg (EU) 2025/2620 gives a different benchmark per production route. Hot-rolled coil: (C) BF/BOF 1.37, (D) DRI/EAF 0.481, (E) scrap/EAF 0.072. Konkan's coil comes from DRI melted in an EAF, so its free-allocation adjustment is 2,500 × 0.481 × 0.975 = 1,172.4375 t and it owes 397.0875 certificates. Adjusting it on the default value's BF/BOF route would give 3,339.375 t and 0 certificates — an obligation understated by ≈ €32,688.24. The app reads the route from the supplier's plant model (and, for a rolling mill, from the plant it buys from), so you see route (D) here.
11
Declare: evidence, check, approve, buy, file
Importer
Workflow bar → 5 · Declare & certificates · /certificates
Year 2026. Tick only the step-10 run (embedded 7,501.66 t), not the step-2 run (23,197.9 t).
In the Pre-filing check, attach each supplier's verification statement to its Supplier value without a document item (Delta Cement, Gulf Rolling, Konkan Strip).
Acknowledge every amber item with Reviewed with the suppliers’ 2026 verification statements (Rijn Verification).
Ready to file → tick I have reviewed the figures → Approve for filing → Buy 1,077 certificates → Record purchase → Check the holding.
EU reference CBAM-NL-2026-NORDWIND-0001 → File declaration.
You must see
Certificates to surrender 1,076.844; cost €88,645.80; full exposure (planning) €617,537.06.
4,307.38 certificates for 2026 (= 4 × 1,076.844) and the chart's nine bars, 2034 the tallest.
Year
Free share
Mark-up
Cement
Plates
Coil
Screws
Certificates
2026
97.5 %
10 %
222.48
1,587.33
1,588.35
909.216
4,307.376
2027
95 %
20 %
622.08
1,720.98
1,708.6
1,016.672
5,068.332
2028
90 %
30 %
1,421.28
1,988.28
1,949.1
1,129.584
6,488.244
2029
77.5 %
30 %
3,419.28
2,656.53
2,550.35
1,156.864
9,783.024
2030
51.5 %
30 %
7,575.12
4,046.49
3,800.95
1,213.606
16,636.166
2031
39 %
30 %
9,573.12
4,714.74
4,402.2
1,240.886
19,930.946
2032
26.5 %
30 %
11,571.12
5,382.99
5,003.45
1,268.166
23,225.726
2033
14 %
30 %
13,569.12
6,051.24
5,604.7
1,295.446
26,520.506
2034
0 %
30 %
15,806.88
6,799.68
6,278.1
1,326
30,210.66
Hand calculation
certificates(y) = Σ tonnes × SEE(y) − tonnes × benchmark × free share(y)
SEE(y): the three verified figures every year (no mark-up); screws 6.375 × 1.10 / 1.20 / 1.30
Benchmarks on each plant's route: cement 0.666 · plates (K) 1.485 · coil (D) 0.481 · screws (C) 1.364
2034: free share 0 → certificates = embedded = 30,210.66
Results — checked as you type
Type what the app showed. Numbers are compared with the hand calculation at the precision you type (the last digit you type may differ by rounding); text checkpoints you mark yourself. Kept in this browser only.
#
Checkpoint
Expected
Observed
Result
If something differs
A whole line differs: the period must be 2026-Q3 (€82.32) and only the step-10 run ticked in step 11.
“Matched 4 of 5” in Fill from data: you picked another route. Click Change template, pick the route named in the step, paste again.
Ask your supplier for this figure is missing: save the plant first — the request is made for a precursor of a saved plant.
The coil shows benchmark 1.37 (C) in step 10: the strip mill's crude steel must be linked to Konkan Melt Shop (step 6); a mill with no linked upstream plant keeps the default value's route.
Gulf Rolling Mill still shows 1.7912 in step 8: the smelter must submit its correction; the mill is recomputed on that submit.
Report a real discrepancy with the step number, the expected and observed figures and the reference quoted in any error message.