Skip to main content

What it is

EU ETS (Emissions Trading System) puts a price on carbon. From 2024 it covers maritime CO₂ on voyages touching EU/EEA ports. Each tonne of covered CO₂ requires the surrender of one EUA (EU Allowance), purchased at market rate.

Who it applies to

Cargo and passenger ships 5,000 GT and above calling at EU/EEA ports — under Directive 2003/87/EC as amended by Directive (EU) 2023/959.

Two factors determine your bill

1. Voyage coverage by leg type

Each voyage leg is classified by its endpoints: Time spent at port is also classified per-record: emissions at an EU port are 100% covered; emissions at a non-EU port are 0% covered — even within the same voyage.

2. Phase-in factor by year

Maritime ETS is phased in over three years: So your final ETS exposure is:
The default EUA price is configurable via the DEFAULT_EUA_PRICE environment variable (defaults to €75/tonne).

What the platform calculates

For every voyage, the platform:
  1. Walks the consumption log chronologically
  2. Detects each BOSP (Beginning of Sea Passage) event as a leg boundary
  3. Splits each record into sea CO₂ vs. port CO₂ vs. EU-port CO₂ vs. non-EU-port CO₂
  4. Applies the leg’s coverage factor to sea CO₂; applies 100% / 0% per-record to port CO₂
  5. Sums covered CO₂ across all legs and multiplies by the year’s phase-in factor
This per-leg approach is more accurate than treating the whole voyage as one classification — a Rotterdam → Hamburg → Le Havre → Singapore voyage produces three intra-EU legs (100%) and one out-of-EU leg (50%), not one blended figure.

What you see in the product

EU ETS dashboard

EU ETS dashboard — phase-in banner, voyage classification, and leg-level coverage.

  • Fleet view: Phase-in banner highlighting the current year, voyage-type breakdown, and total cost projection
  • Vessel view: Expandable voyages table showing each leg’s coverage factor and covered CO₂
  • Reports: Downloadable EU ETS report for verifier submission

Reference

Primary regulations

Industry guides

Carbon market data

In this documentation