Understanding Transport Operations in GLEC
In the GLEC Framework, every shipment is broken down into transport legs — individual segments where goods move from one point to another using a specific vehicle type. Each leg is classified by its TOC (Transport Operation Category), which determines the emission factor applied.GLEC Calculation FormulaFor each transport leg:CO2e (kg) = tkm x WTW emission factor (kgCO2e/tkm)Where:
- tkm = load (tonnes) x distance (km)
- WTW = Well-to-Wheel factor from the TOC (includes fuel production + combustion)
- For electric vehicles: CO2e = tkm x grid emission factor x energy efficiency factor
Prerequisites
Before starting, ensure you have:- Dcycle API credentials (get them here)
- An organization configured in Dcycle
- Shipment data: origins, destinations, weights, and vehicle types (or at least transport category)
Step 1.1: Explore Available TOCs
Before creating transport legs, list the available vehicle types and their emission factors:📋 Data Map: List TOCs
📋 Data Map: List TOCs
No input data required. Returns all available TOCs with their WTW factors and default loads.Response fields:
| Field | Description | Example |
|---|---|---|
toc | Vehicle identifier (vehicle_type) | "van_diesel" |
category | Transport mode | "road" |
vehicle | Vehicle type | "van" |
type | Fuel/specification | "diesel" |
wtw | WTW factor (kgCO2e/tkm) | 0.196 |
default_load | Default capacity (kg) | 3500.0 |
location | Region | "EU" |
Common TOCs by Transport Mode
- Road
- Rail
- Maritime
- Air
| TOC | Vehicle | Fuel | Typical Use |
|---|---|---|---|
van_diesel | Van | Diesel | Urban/last-mile deliveries |
van_electric | Van | Electric | Zero-emission urban deliveries |
rigid_truck_diesel | Rigid truck | Diesel | Regional freight |
artic_truck_diesel | Articulated truck | Diesel | Long-haul freight |
artic_truck_electric | Articulated truck | Electric | Electric long-haul |
tank_truck_diesel | Tank truck | Diesel | Liquid bulk transport |
generic_average_road | Generic | Average | When vehicle type is unknown |
Step 1.2: Create a Single Transport Leg
📋 Data Map: Create Transport Leg
📋 Data Map: Create Transport Leg
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
origin | string | Conditional | Origin address (required if no distance_km) | "Madrid, Spain" |
destination | string | Conditional | Destination address (required if no distance_km) | "Barcelona, Spain" |
distance_km | number | Conditional | Distance in km (used as-is, overrides geocoding) | 620 |
toc | string | Conditional | TOC identifier (if omitted, provide category) | "rigid_truck_diesel" |
category | string | Conditional | Transport mode (if toc is omitted) | "road" |
origin_country | string | No | ISO 3166-2 code for region-specific factors | "ES" |
load | number | No | Cargo weight (defaults to TOC’s default_load) | 5000 |
load_unit | string | No | Unit: kg, ton, pallets, teu, feu | "kg" |
load_factor | number | No | Allocation factor 0-1 (e.g., 0.5 = half truck) | 0.5 |
year | number | No | Emission factor year (defaults to current) | 2025 |
cleaning | boolean | No | Vehicle cleaning done (adds cleaning emissions) | false |
subcontractor | boolean | No | Handled by a subcontractor (affects scope allocation) | false |
client | string | No | Client identifier for reporting | "AMAZON" |
movement_id | string | No | Groups multiple legs of the same shipment | "MOV-2025-001" |
shipment_date | date | No | Date of shipment (YYYY-MM-DD) | "2025-03-15" |
hub_id | string | No | Hub associated with this leg | "HUB-MAD-001" |
package_key | string | No | Package identifier (requires movement_id) | "PKG-12345" |
- toc: Use
GET /v1/logistics/tocsto list available vehicle types - origin/destination: Physical addresses or city names (geocoded automatically)
- load: From your shipping manifest, bill of lading, or TMS
- client: From your customer management system
Basic shipment (addresses + TOC)
Using known distance (skip geocoding)
When you already have the distance, providedistance_km directly:
Using tkm directly
If you already know the tonne-kilometers, providetkm:
Using category instead of TOC
When you don’t know the exact vehicle type:Step 1.3: Multi-Modal and Multi-Leg Shipments
Usemovement_id to group multiple legs into a single shipment, and package_key to track individual packages across legs:
Subcontracted Transport
Mark legs handled by a subcontractor. These emissions are classified as Scope 3 in the GLEC company report (instead of Scope 1 for own fleet):Own fleet vs Subcontracted — Scope allocation
Set
| Own Fleet | Subcontracted | |
|---|---|---|
| TTW (direct) | Scope 1 | Scope 3 |
| WTT (upstream) | Scope 3 | Scope 3 |
| Total WTW | Split Scope 1 + 3 | Scope 3 |
subcontractor: true for any leg not operated by your own fleet.Step 1.4: Load Units and Allocation
GLEC supports multiple load units. Dcycle converts them to kg internally:| Unit | Conversion | Typical Use |
|---|---|---|
kg | 1 kg | Default, most common |
ton | 1 ton = 1,000 kg | Heavy freight |
pallets | 1 pallet = 1,500 kg | Palletized goods |
teu | 1 TEU = 20,000 kg | Container shipping (20ft) |
feu | 1 FEU = 40,000 kg | Container shipping (40ft) |
Load Factor (Allocation)
Useload_factor to account for partial loads or shared capacity:
Step 1.5: Bulk Upload (Up to 5,000 Records)
For high-volume operations, use the bulk endpoint to process up to 5,000 transport legs in a single request:📋 Data Map: Bulk Upload
📋 Data Map: Bulk Upload
| Field | Type | Required | Description |
|---|---|---|---|
records | array | Yes | Array of transport leg objects (same schema as single request) |
options.continue_on_error | boolean | No | Continue processing if some records fail (default: true) |
records array uses the same fields as the single request in Step 1.2.Step 1.6: Query Transport Requests
Retrieve your transport legs with pagination and filtering:Query Packages
Track multi-leg shipments via packages:List Clients
Best Practices
1. Choose the Most Specific TOC
More specific TOCs yield more accurate results:2. Provide Origin Country
Always includeorigin_country for region-specific emission factors:
3. Use Movement IDs Consistently
Group related legs withmovement_id for accurate shipment-level reporting and deduplication.
4. Mark Subcontracted Legs
Always setsubcontractor: true for legs not operated by your own fleet — this ensures correct scope allocation in the GLEC report.

