EU ETS
100% surrenderEUR 0
- Rated CO2e in scope0 t
- EUAs to surrender0
- Voyage scope factor100%
Maritime carbon accounting · IMO and EU
EU ETS, FuelEU Maritime and the IMO carbon intensity indicator each count the same tonne of fuel a different way. One counts certified biofuel as zero, one counts it well to wake, one counts it only if you carry the paperwork. Meridian Wake prices all three from the same noon report, before the charter is fixed.
EUR 0
EUR 0
Rated CO2 excludes ISCC certified biofuel and RFNBO under Directive 2003/87/EC Art. 14 and the MRV regulation. FuelEU counts the same energy at its well to wake default from Annex II. CII counts it under MEPC.1/Circ.905. Voyage basis AER is annualised for the rating and is indicative only. Defaults shown; certified values override.
A Panamax lifts 640 tonnes of a B30 UCOME blend in Singapore. Under EU ETS the certified biofuel fraction is zero rated, so the operator surrenders allowances on 70% of the carbon. Under FuelEU the same fraction carries a well to wake intensity of 20.2 gCO2e per megajoule, which is not zero, and it is the number that decides the compliance balance. Under the IMO carbon intensity indicator it counts only if the bunker delivery note carries a proof of sustainability that satisfies MEPC.1/Circ.905.
Three regimes, three answers, and none of them arrive in the same file. The ETS position lives in the Union Registry. The FuelEU balance lives in the FuelEU database at EMSA. The CII lives in the ship energy efficiency management plan and is verified by the recognised organisation. Most owners reconcile them in a spreadsheet, once a quarter, after the voyage is over and the exposure is already fixed.
Rotterdam to Singapore, 8,288 nautical miles. The EU counts half of it because half a voyage that starts in an EU port is inside the perimeter. The IMO counts all of it, because a carbon intensity indicator does not care where the water is.
Every number below is a regulated default. Where you hold a certified value, an ISO 8217:2024 bunker delivery note or a verified proof of sustainability, the engine uses yours and records which one it used against the voyage.
| Fuel | CF t CO2/t | LCV MJ/kg | WtW gCO2e/MJ | ETS rated | Source |
|---|---|---|---|---|---|
| HFO / VLSFO 0.50% | 3.114 | 40.5 | 91.7 | Yes | MEPC.364(79) / FuelEU Annex II |
| MGO / MDO, DMA | 3.206 | 42.7 | 90.8 | Yes | MEPC.364(79) / FuelEU Annex II |
| LNG, Otto medium speed | 2.750 | 49.1 | 76.1 | Yes | FuelEU Annex II, slip included |
| Methanol, fossil | 1.375 | 19.9 | 101.4 | Yes | MEPC.364(79) |
| UCOME, ISCC EU certified | 0.000 | 37.0 | 20.2 | No | RED III Annex VI / MRV Art. 3 |
| e-Methanol, RFNBO | 0.000 | 19.9 | 5.2 | No | Del. Reg. (EU) 2023/1185 |
| Ammonia, blue | 0.000 | 18.6 | 62.5 | No | FuelEU Annex II default |
Share of verified emissions for which allowances must be surrendered.
Surrender falls to the shipping company, meaning the ISM Company, unless a mandate transfers it. The BIMCO Emission Trading Scheme Allowances Clause 2022 is the usual vehicle for that transfer in a time charter.
Limit on well to wake greenhouse gas intensity, against a 2020 fleet reference of 91.16 gCO2e/MJ.
Penalty is EUR 2,400 per tonne of VLSFO equivalent energy in deficit, computed as the absolute compliance balance divided by the attained intensity times 41,000. A deficit in consecutive periods multiplies the penalty by 1 + (n − 1)/10.
Required annual carbon intensity is a × dwt−c, reduced by the year factor Z.
Rating boundaries come from the dd vectors in MEPC.354(78). For a bulk carrier those are 0.86, 0.94, 1.06 and 1.18 times the required value. Z beyond 2026 is not yet set by MEPC and is flagged as indicative wherever it appears in the product.
Constants we hold in staging and ship the day they enter into force.
We do not price instruments that are not in force. When a framework moves from approval to entry into force we ship the constants inside five business days and version the change in the API.
A verified emissions report is only as good as the reconciliation behind it. The engine cross-checks the mass balance from bunker delivery notes against flow meter totals and AIS derived distance, and flags a voyage the moment they disagree by more than the monitoring plan tolerance.
Normalised from 38 owner schemas. Consumption by fuel grade and by consumer, ROB, slip, weather factor, off-hire.
Terrestrial and satellite AIS, deduplicated and gap filled. Distance travelled through water reconciled against distance over ground.
Bunker delivery notes parsed to ISO 8217:2024 fields, with proof of sustainability matched to the exact stem for biofuel and RFNBO claims.
Fixtures, laycan, charterparty carbon clauses and the vessel particulars that drive the reference line.
Date pinned versioning, idempotent writes, cursor pagination, and a sandbox seeded with four vessels and two years of noon reports so you can integrate before the contract is signed.
/v1/voyages/estimatePrice a voyage before it is fixed/v1/voyages/{voyage_id}Verified position with full audit trail/v1/noon-reports:batchUp to 5,000 reports per call/v1/vessels/{imo}/ciiAttained and required, year to date/v1/fleet/fueleu/balanceCompliance balance across the fleet/v1/fueleu/poolsCreate and settle a compliance pool/v1/ets/positionsEUA requirement against holdings/v1/reference/fuelsConstants, versionedvoyage.pricedcii.rating_changedfueleu.balance_updatedets.surrender_duereconciliation.flaggedIdempotency-Key, 24 h replay windowcurl -X POST https://api.meridianwake.com/v1/voyages/estimate \
-H "Authorization: Bearer $MW_TOKEN" \
-H "Meridian-Version: 2026-05-01" \
-H "Idempotency-Key: 8b1f-est-0442" \
-H "Content-Type: application/json" \
-d '{
"imo": "9731284",
"departure_port": "ESALG",
"arrival_port": "GRPIR",
"distance_nm": 1617,
"sea_speed_kn": 14.5,
"compliance_year": 2026,
"fuels": [
{ "grade": "VLSFO", "energy_share": 0.70 },
{ "grade": "LNG_OTTO_MS", "energy_share": 0.30 }
],
"eua_price_eur": 78.00
}'
{
"voyage_id": "vy_01JZQ8K3XN4M",
"scope": { "basis": "INTRA_EU", "factor": 1.0 },
"fuel": { "total_t": 150.0, "energy_gj": 6410 },
"eu_ets": {
"rated_co2e_t": 488.9,
"ch4_n2o_included": true,
"surrender_share": 1.0,
"euas": 489,
"cost_eur": 38142.00
},
"fueleu": {
"attained_gco2e_mj": 87.02,
"target_gco2e_mj": 89.34,
"balance_gco2e": 14848000,
"balance_t_vlsfoeq": 4.16,
"penalty_eur": 0.00,
"surplus_bankable": true,
"surplus_value_eur": 1332.00
},
"cii": {
"aer": 3.414, "required": 3.709,
"ratio": 0.921, "rating": "B",
"basis": "VOYAGE_ANNUALISED"
},
"constants_version": "2026.2"
}
import { MeridianWake } from "@meridianwake/sdk";
const mw = new MeridianWake({
token: process.env.MW_TOKEN,
version: "2026-05-01",
residency: "eu-central-1",
});
const balance = await mw.fleet.fuelEuBalance({ period: 2026 });
for (const v of balance.vessels.filter(v => v.deficit_t_vlsfoeq > 0)) {
console.log(v.imo, v.deficit_t_vlsfoeq, v.penalty_eur);
}
// Pool the surplus against the deficit before 30 April.
await mw.fuelEu.pools.create({
period: 2026,
members: balance.vessels.map(v => v.imo),
strategy: "MINIMISE_TOTAL_PENALTY",
});
/v1/voyages/estimateCommercially sensitive voyage data is the most guarded asset an owner has. Residency is a contractual term, not a setting we can change without telling you.
No implementation fee, no charge per API call, no charge for verifier seats. Annual term, 30 day exit if the first fleet reconciliation does not close.
EUR 390per vessel, per month
1 to 24 vessels. Owners and operators running their first full compliance year.
EUR 310per vessel, per month
25 to 59 vessels. Falls to EUR 265 above 60. Commercial and technical teams working the same record.
EUR 18,000per year, plus EUR 95 per vessel-year audited
Accredited MRV and FuelEU verifiers and recognised organisations.
What the platform costs
What it is pricing
A one percent error in the scope factor on that fleet is EUR 168,534. That is the entire platform cost, plus a third again, in a single misclassified voyage leg.
Regulatory constants ship as minor versions and are always additive. Anything that changes a previously returned number ships behind a new date version.
Solve for the lowest total penalty across a pool of up to 400 vessels, including third party surplus offered on the marketplace. Returns the allocation, the settlement value per member and the borrowing position carried into the next period.
Vessels between 64,000 and 66,000 dwt could be assigned the wrong CII reference line when the deadweight on the IOPP certificate differed from Q88. The engine now pins to the certificate value and records the source.
Delivered prices for 42 bunkering ports refresh every 15 minutes and now feed the voyage estimate directly, so the carbon and bunker legs of an estimate use the same timestamp.
Added 2027 to 2030 carbon intensity reduction factors as clearly labelled indicative values, so fleet planning does not stop at the end of the adopted schedule. Every response carries "z_basis": "INDICATIVE" where it applies.
Vessel particulars flow both ways. Changes to deadweight, main engine or fuel capability update the reference line and re-price the year to date automatically, with the previous value retained in the audit log.
Closed the 2025 compliance year at 70% surrender and opened 2026 at 100% with methane and nitrous oxide inside the scheme. LNG fuelled vessels on Otto cycle medium speed engines see rated CO2e rise by up to 28%, because 3.1% slip counted at a methane GWP of 25 adds 0.775 t CO2e for every tonne of gas burned. Two stroke diesel cycle installations are barely affected.
Meridian Wake started in a fleet performance office in Bergen, in the first winter that EU ETS applied to shipping. The team spent that January rebuilding a spreadsheet every time a voyage crossed the scope boundary and it became obvious that the problem was not effort, it was that nobody had put the three regimes into the same model.
We are 34 people across Oslo and Singapore. Eleven have sailed or held a class or flag technical role. We are funded by a EUR 14M Series A led by a maritime specialist fund, closed in March 2026.
Nine years running fleet performance for a Bergen owner with 61 vessels. Sat on the owner side of the first EU MRV verification cycle in 2018.
Built the emissions data pipeline at a classification society, ingesting noon reports from 4,000 vessels. Before that, distributed systems in payments.
Accredited EU MRV verifier for six years, then a flag state technical officer. Writes the constants review that goes out with every engine edition.
Chartering desk for a dry bulk operator, then carbon markets. Handles the charterparty clause work and the EUA side of the product.
No. Verification is a statutory activity that only an accredited verifier can perform, and we are not one. What we do is get the evidence into a state where the verification is quick and boring. Customers report their verification cycle dropping from six weeks to nine days, mostly because the exception queue is empty by the time the verifier opens it.
The shipping company remains the responsible entity under Directive 2003/87/EC and under the FuelEU regulation. We carry professional indemnity cover of EUR 10M and we publish the constants, the source of every input and the calculation trace on every voyage, so a disputed number can be walked back to the bunker delivery note that produced it. In three years no customer has had a verified emissions report rejected on a figure the engine produced.
Performance systems answer how much fuel the ship burned. They rarely answer what that fuel costs you under three regimes with different scopes, different fuel treatments and different deadlines. We integrate with the performance system you have rather than replacing it, and most customers keep both.
Median time from contract to first reconciled voyage is 11 working days for a fleet already on a supported noon report schema, and 26 days where the schema has to be mapped from scratch. Historical backfill of two years runs in the background and does not block go live.
Next step
Forty minutes. Send a noon report and a bunker delivery note beforehand and we will run your vessel, your lane and your fuel through the engine live, with the calculation trace on screen.
Oslo desk 07:00 to 17:00 CET · Singapore desk 08:00 to 18:00 SGT