Skip to main content

Understanding the GLEC Company Report

The GLEC Company Report is the standard output of the GLEC v3.0 Framework. It provides a complete emissions breakdown for a logistics organization over a reporting period, structured by:
  • Emission scopes (1, 2, 3) as defined by the GHG Protocol
  • Transport activity with intensity values (gCO2e/tkm)
  • Hub operations with intensity values (gCO2e/tonne)
  • Per-TOC breakdown showing emissions by vehicle type
  • Per-HOC breakdown showing emissions by hub category
┌──────────────────────────────────────────────────────────────────────────────┐
│                     GLEC COMPANY REPORT STRUCTURE                            │
├──────────────────────────────────────────────────────────────────────────────┤
│                                                                              │
│  SCOPE 1                  SCOPE 2                SCOPE 3                    │
│  ────────                 ────────               ────────                   │
│  TTW emissions            Hub purchased          WTT emissions              │
│  (own fleet direct        energy (electricity,   (upstream fuel             │
│   fuel combustion)        district heating)       production)               │
│                                                                              │
│  Hub on-site fuel                                WTW subcontracted          │
│  (generators, heating)                           (3rd party transport)      │
│                                                                              │
│                                                  Hub emissions              │
│                                                  (subcontracted hubs)       │
│                                                                              │
│                                                  Cleaning emissions         │
│                                                                              │
├──────────────────────────────────────────────────────────────────────────────┤
│  COMPANY METRICS                                                             │
│  ───────────────                                                             │
│  Transport Activity IV: gCO2e/tkm  |  Hub Operation IV: gCO2e/tonne       │
│  Total tkm               Total tonnes handled                              │
│  Total transport CO2e    Total hub CO2e                                     │
│                                                                              │
├──────────────────────────────────────────────────────────────────────────────┤
│  BREAKDOWNS                                                                  │
│  ──────────                                                                  │
│  By TOC (vehicle type): IV, tkm, emissions, fuels used                     │
│  By HOC (hub category): IV, emissions, tonnes                              │
│  By transport mode: IV, tkm, emissions, DAF applied                        │
│  Emission factors used: all fuel and TOC factors applied                    │
│                                                                              │
└──────────────────────────────────────────────────────────────────────────────┘
Two report types are available:
  1. GLEC Company Report (legacy endpoint) — Full GLEC v3.0 structure with Scope 1/2/3, TOC/HOC breakdowns, and intensity values. Available via GET /logistics/report.
  2. ISO 14083 Summary Report (new API) — Simplified aggregated report with category breakdown. Available via GET /v1/logistics/report.
This guide covers both, with the GLEC Company Report as the primary focus.

Prerequisites

Before generating a report, ensure you have:
  • Transport legs created (Step 1)
  • Optionally: hubs configured (Step 2) and fuel recharges uploaded (Step 3)
  • A reporting period (start and end dates)

Step 4.1: Generate the ISO 14083 Summary Report

The new API provides a quick summary report with category breakdown:
ParameterTypeRequiredDescriptionExample
start_datestringYesStart of reporting period (YYYY-MM-DD)"2025-01-01"
end_datestringYesEnd of reporting period (YYYY-MM-DD)"2025-12-31"
clientstringNoFilter by client identifier"AMAZON"
import requests
import os

headers = {
    "Authorization": f"Bearer {os.getenv('DCYCLE_API_KEY')}",
    "Content-Type": "application/json",
    "x-organization-id": os.getenv("DCYCLE_ORG_ID"),
    "x-user-id": os.getenv("DCYCLE_USER_ID"),
}

# Generate ISO 14083 summary report
report = requests.get(
    "https://api.dcycle.io/v1/logistics/report",
    headers=headers,
    params={
        "start_date": "2025-01-01",
        "end_date": "2025-12-31",
    },
).json()

print(f"Methodology: {report['methodology']}")
print(f"Period: {report['period']['start_date']} to {report['period']['end_date']}")
print(f"Data source: {report['data_source']}")
print()
print(f"Summary:")
print(f"  Total items: {report['summary']['total_items']:,}")
print(f"  Total CO2e: {report['summary']['total_co2e_kg']:,.1f} kg ({report['summary']['total_co2e_kg']/1000:.2f} tonnes)")
print(f"  Total distance: {report['summary']['total_distance_km']:,.0f} km")
print(f"  Avg CO2e per item: {report['summary']['avg_co2e_per_item']:.2f} kg")
print()
print(f"By transport category:")
for cat in report["by_category"]:
    print(f"  {cat['category']:12s} | {cat['items']:>6,} items | {cat['co2e_kg']:>12,.1f} kg CO2e | {cat['percentage_co2e']:.1f}%")

Filter by Client

Generate a report for a specific client:
# Client-specific report
client_report = requests.get(
    "https://api.dcycle.io/v1/logistics/report",
    headers=headers,
    params={
        "start_date": "2025-01-01",
        "end_date": "2025-12-31",
        "client": "RETAILCO",
    },
).json()

print(f"Client: {client_report['client']}")
print(f"Total CO2e: {client_report['summary']['total_co2e_kg']:,.1f} kg")

Step 4.2: Generate the Full GLEC Company Report

The legacy endpoint provides the complete GLEC v3.0 company report with Scope 1/2/3 breakdown:
ParameterTypeRequiredDescriptionExample
start_datetimestampYesStart of period (Unix timestamp)1704067200
end_datetimestampYesEnd of period (Unix timestamp)1735689600
report_typestringNo"company" or "client""company"
clientstringNoClient name (for client reports)"RETAILCO"
import time
from datetime import datetime

headers_legacy = {
    "Authorization": f"Bearer {os.getenv('DCYCLE_API_KEY')}",
    "Content-Type": "application/json",
    "x-organization-id": os.getenv("DCYCLE_ORG_ID"),
    "x-partner": os.getenv("DCYCLE_PARTNER_ID"),
}

# Convert dates to timestamps
start_ts = int(datetime(2025, 1, 1).timestamp())
end_ts = int(datetime(2025, 12, 31, 23, 59, 59).timestamp())

# Generate GLEC company report
report = requests.get(
    "https://api.dcycle.io/logistics/report",
    headers=headers_legacy,
    params={
        "start_date": start_ts,
        "end_date": end_ts,
        "report_type": "company",
    },
).json()

Interpreting the Report

Scope Breakdown

# Scope 1: Direct emissions
scope_1 = report["scope_1"]
print("SCOPE 1 (Direct Emissions)")
print(f"  TTW emissions (own fleet): {scope_1['ttw_emissions']['value']:,.2f} {scope_1['ttw_emissions']['units']}")
print(f"  Hub emissions (on-site):   {scope_1['hubs_emissions']['value']:,.2f} {scope_1['hubs_emissions']['units']}")

# Scope 2: Purchased energy
scope_2 = report["scope_2"]
print("\nSCOPE 2 (Purchased Energy)")
print(f"  Hub emissions (electricity): {scope_2['hubs_emissions']['value']:,.2f} {scope_2['hubs_emissions']['units']}")

# Scope 3: Indirect emissions
scope_3 = report["scope_3"]
print("\nSCOPE 3 (Indirect Emissions)")
print(f"  WTT emissions (fuel upstream):  {scope_3['wtt_emissions']['value']:,.2f} {scope_3['wtt_emissions']['units']}")
print(f"  Subcontracted WTW:              {scope_3['wtw_subcontracted_emissions']['value']:,.2f} {scope_3['wtw_subcontracted_emissions']['units']}")
print(f"  Hub emissions (subcontracted):  {scope_3['hub_emissions']['value']:,.2f} {scope_3['hub_emissions']['units']}")
print(f"  Cleaning emissions:             {scope_3['cleaning_emissions']['value']:,.2f} {scope_3['cleaning_emissions']['units']}")

# Total
total = report["total_scopes"]
print(f"\nTOTAL: {total['emissions']['value']:,.2f} {total['emissions']['units']}")

Company Metrics (Intensity Values)

company = report["company_emissions"]

# Transport Activity IV
transport = company["transport_activity"]
print("TRANSPORT ACTIVITY")
print(f"  Intensity Value: {transport['iv']['value']:.2f} {transport['iv']['units']}")
print(f"  Total tkm:       {transport['tkm']['value']:,.0f} {transport['tkm']['units']}")
print(f"  Total emissions: {transport['emissions']['value']:,.2f} {transport['emissions']['units']}")

# Hub Operation IV
hub = company["hub_operation"]
print("\nHUB OPERATIONS")
print(f"  Intensity Value: {hub['iv']['value']:.2f} {hub['iv']['units']}")
print(f"  Total tonnes:    {hub['tonne']['value']:,.0f} {hub['tonne']['units']}")
print(f"  Total emissions: {hub['emissions']['value']:,.2f} {hub['emissions']['units']}")
Key metrics to track year-over-year:
  • Transport Activity IV (gCO2e/tkm): Lower = more efficient transport. Compare against industry benchmarks and previous years.
  • Hub Operation IV (gCO2e/tonne): Lower = more efficient hub operations.
  • Scope 1 share: Proportion of direct emissions — indicates fleet control level.
  • Subcontracted share: Proportion of Scope 3 subcontracted emissions — indicates supply chain dependency.

Per-TOC Breakdown

print("\nEMISSIONS BY VEHICLE TYPE (TOC)")
print(f"{'TOC':<30} {'IV (gCO2e/tkm)':>15} {'tkm':>12} {'CO2e (kg)':>12}")
print("-" * 72)

for toc_name, toc_data in report["tocs_info"].items():
    print(
        f"{toc_name:<30} "
        f"{toc_data['iv']:>15.2f} "
        f"{toc_data['tkm']:>12,.0f} "
        f"{toc_data['emissions']:>12,.2f}"
    )

Per-HOC Breakdown

print("\nEMISSIONS BY HUB CATEGORY (HOC)")
print(f"{'Hub Name':<35} {'Category':<25} {'IV (gCO2e/t)':>12} {'CO2e (kg)':>12}")
print("-" * 87)

for hub_name, hub_data in report["hocs_info"].items():
    print(
        f"{hub_name:<35} "
        f"{hub_data['hub_category']:<25} "
        f"{hub_data['iv']:>12.2f} "
        f"{hub_data['emissions']:>12,.2f}"
    )

Emission Factors Used

# List all emission factors applied in the report
print("\nEMISSION FACTORS USED")

print("\n  Fuels:")
for fuel in report["emission_factors_used"]["logistics_fuels"]:
    print(f"    {fuel}")

print("\n  TOCs:")
for toc in report["emission_factors_used"]["logistics_tocs"]:
    print(f"    {toc}")

Step 4.3: Generate Client-Level Reports

For carriers, generate reports per client to share emissions data with your customers:
# Get all clients
clients = requests.get(
    "https://api.dcycle.io/v1/logistics/clients",
    headers=headers,
).json()

# Generate report for each client
print("CLIENT EMISSIONS SUMMARY (2025)")
print(f"{'Client':<25} {'Items':>8} {'CO2e (kg)':>12} {'Distance (km)':>14}")
print("-" * 62)

for client_name in clients:
    client_report = requests.get(
        "https://api.dcycle.io/v1/logistics/report",
        headers=headers,
        params={
            "start_date": "2025-01-01",
            "end_date": "2025-12-31",
            "client": client_name,
        },
    ).json()

    summary = client_report["summary"]
    print(
        f"{client_name:<25} "
        f"{summary['total_items']:>8,} "
        f"{summary['total_co2e_kg']:>12,.1f} "
        f"{summary['total_distance_km']:>14,.0f}"
    )
Sharing with clients: Client-level GLEC reports help your customers account for Scope 3 Category 4 (upstream transport) or Category 9 (downstream transport) in their own GHG Protocol inventories. The more specific your TOC and fuel data, the more valuable the report.

Step 4.4: Export Report as CSV

Generate a downloadable CSV report:
from src.utils.filename_generator import generate_report_filename

# The GLEC report CSV follows the naming convention:
# reporte-glec_<org-name>_<start-date>_<end-date>_<timestamp>.csv
filename = generate_report_filename("glec", "my-org-name", "2025-01-01", "2025-12-31")
# → "reporte-glec_my-org-name_2025-01-01_2025-12-31_20250219.csv"
CSV export is available through the Dcycle web application. Navigate to your organization’s logistics dashboard, select the reporting period, and click Download GLEC Report.

Understanding the Report Output

Scope Allocation Summary

Emission SourceOwn FleetSubcontracted
TTW (direct fuel combustion)Scope 1Scope 3
WTT (fuel production upstream)Scope 3Scope 3
Hub on-site fuelScope 1
Hub purchased electricityScope 2
Hub default HOC emissionsScope 3
Vehicle cleaningScope 3

Benchmarking Intensity Values

Use these approximate benchmarks to contextualize your Transport Activity IV:
ModeGood IV (gCO2e/tkm)Average IVPoor IV
Road (general)< 5050 – 120> 120
Rail< 1515 – 30> 30
Maritime< 1010 – 20> 20
Air< 500500 – 800> 800
These benchmarks are approximate and vary significantly by region, load factor, and vehicle age. Always compare against your own historical data and industry-specific benchmarks from the Smart Freight Centre.

Year-over-Year Tracking

Track these key indicators each reporting period:
  1. Total CO2e: Are absolute emissions decreasing?
  2. Transport Activity IV: Is emission efficiency improving?
  3. Hub Operation IV: Are hub operations becoming greener?
  4. Modal split: Is traffic shifting to lower-emission modes (rail, maritime)?
  5. Fuel mix: Is the share of biofuels and electric vehicles increasing?
  6. Subcontracted share: Are you gaining more control over your supply chain emissions?

Next Steps