Skip to main content

Understanding Scope 1 Emissions

Scope 1 emissions are direct greenhouse gas emissions from sources owned or controlled by your organization. According to the GHG Protocol Corporate Standard, these include:
  • Stationary combustion: Burning fuels in boilers, furnaces, heaters, and other fixed equipment
  • Mobile combustion: Burning fuels in company-owned or controlled vehicles
  • Process emissions: Emissions from industrial processes (e.g., chemical reactions)
  • Fugitive emissions: Intentional or unintentional releases (e.g., refrigerant leaks, CHβ‚„ from wastewater treatment)
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                           SCOPE 1: Direct Emissions                         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  Stationary         β”‚  Mobile             β”‚  Process & Fugitive             β”‚
β”‚  Combustion         β”‚  Combustion         β”‚  Emissions                      β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  β€’ Boilers          β”‚  β€’ Company cars     β”‚  β€’ Industrial processes         β”‚
β”‚  β€’ Furnaces         β”‚  β€’ Trucks           β”‚  β€’ Refrigerant leaks            β”‚
β”‚  β€’ Generators       β”‚  β€’ Forklifts        β”‚  β€’ Wastewater treatment CHβ‚„     β”‚
β”‚  β€’ Heaters          β”‚  β€’ Company fleet    β”‚  β€’ Natural gas leaks            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
GHG Protocol Calculation FormulaFor most Scope 1 sources, emissions are calculated using:COβ‚‚e = Activity Data Γ— Emission Factor Γ— GWPWhere:
  • Activity Data: Quantity of fuel consumed (liters, kg, mΒ³, kWh)
  • Emission Factor: kg COβ‚‚, CHβ‚„, or Nβ‚‚O per unit of fuel
  • GWP: Global Warming Potential to convert to COβ‚‚ equivalent

Prerequisites

Before starting, ensure you have:
  • Dcycle API credentials (get them here)
  • At least one facility configured in your organization
  • Access to your facility data: fuel consumption records, stationary combustion equipment details, and fleet information
Using the Dcycle App?You can also manage your carbon footprint through our web interface:

Calculating Stationary Combustion

Stationary combustion emissions come from burning fuels in fixed equipment at your facilities. In Dcycle, these are tracked through invoices linked to facility fuels.

Emission Sources Covered

Source TypeInvoice TypeExamples
Combustion (heat)heatNatural gas boilers, diesel generators, propane heaters
RechargesrechargeRefrigerant refills, fire suppression systems
Process emissionsprocessIndustrial furnaces, VOCs
Waste water treatmentSpecial endpointCHβ‚„ and Nβ‚‚O from wastewater facilities

Calculation Methods by Country

Dcycle automatically applies the appropriate calculation methodology based on your facility’s country:
For facilities located in Spain, Dcycle uses emission factors from MITECO (Ministerio para la TransiciΓ³n EcolΓ³gica y el Reto DemogrΓ‘fico).
Facility (ES) β†’ Invoice β†’ MITECO Emission Factors β†’ COβ‚‚e
      ↓              ↓                ↓                ↓
  Country: ES    Fuel type     Spanish-specific    Compliant with
                 + quantity    factors by year     Spanish regulations
Key characteristics:
  • Emission factors specific to Spain, updated annually
  • Fuel types mapped to MITECO categories (e.g., natural_gas, gas_oil_b, lpg)
  • Required for Spanish regulatory compliance (ISO 14064, EINF)
  • Includes factors for COβ‚‚, CHβ‚„, and Nβ‚‚O
Access MITECO emission factors here.
For Spanish facilities, Dcycle uses emission factors from:
  • MITECO (Ministerio para la TransiciΓ³n EcolΓ³gica y el Reto DemogrΓ‘fico)
  • Updated annually with Spanish-specific factors
  • Source: Factores de emisiΓ³n
Factors are automatically selected based on:
  • Fuel type (mapped to MITECO categories)
  • Unit of measurement
  • Invoice year
For Spanish facilities, stationary combustion emissions are calculated as:COβ‚‚e = Fuel Quantity Γ— (EF_COβ‚‚ Γ— GWP_COβ‚‚ + EF_CHβ‚„ Γ— GWP_CHβ‚„ + EF_Nβ‚‚O Γ— GWP_Nβ‚‚O)Where:
  • Fuel Quantity: Amount consumed (liters, mΒ³, kg, kWh)
  • EF_XXX: MITECO emission factor for the specific GHG gas (COβ‚‚, CHβ‚„, Nβ‚‚O) and fuel, unit, and year
  • GWP_XXX: Global Warming Potential for the specific GHG gas (COβ‚‚, CHβ‚„, Nβ‚‚O) (IPCC AR6 GWP values)
Example (Natural Gas):
5,000 KWH Γ— (0.182 kg COβ‚‚/KWH x 1 + 0.000016 kg CHβ‚„/KWH x 27.9 + 0.000000 kg Nβ‚‚O/KWH x 273) = 912.23 kg COβ‚‚e
Automatic Method SelectionYou don’t need to specify which calculation method to use. Dcycle automatically detects the facility’s country and applies the correct emission factors:
  • country: "ES" β†’ MITECO factors
  • Any other country β†’ GHG Protocol/IPCC factors
What you’ll track:
Facility Setup β†’ Invoice Creation β†’ Emissions Calculation
      ↓                ↓                      ↓
  Facility config   Fuel consumption    CO2e per invoice
  (with country)    records (invoices)  (method auto-selected)

Data Flow

1

Set Up Facilities

Configure your facilities and link them to fuel types
2

Automatic Method Selection

Dcycle detects the facility country and applies MITECO (Spain) or GHG Protocol (other) emission factors
3

Create Invoices

Record fuel consumption, recharges, or process emissions via invoices
4

Calculate Emissions

COβ‚‚e emissions are calculated using the appropriate country-specific factors
5

Generate Reports

View emissions by facility, fuel type, or period

Step 2.1: Create a Fuel Consumption Invoice

FieldTypeRequiredDescriptionExample
typestringβœ…Invoice type"heat"
facility_idUUIDβœ…Target facility"abc-123-..."
facility_fuel_idUUIDβœ…Fuel type for this facility"def-456-..."
base_quantitynumberβœ…Amount of fuel consumed5000
unit_idUUIDβœ…Unit of measurement"2a09be22-..." (mΒ³)
start_datedateβœ…Consumption period start"2024-01-01"
end_datedateβœ…Consumption period end"2024-01-31"
invoice_idstringβœ…Your internal reference"INV-2024-001"
uploaded_byUUIDβœ…User uploading the data"user-uuid"
custom_emission_factor_idUUID❌Custom EF override"custom-ef-uuid"
Where to get this data:
  • Facility ID: From Step 1 (company structure setup) or GET /api/v1/facilities
  • Facility Fuel ID: GET /api/v1/facility_fuels/{facility_id}
  • Unit ID: GET /api/v1/units
  • Quantity: From utility bills, fuel purchase records, or meter readings
Record fuel consumption at a facility by creating an invoice:
import requests
import os
from datetime import datetime, timedelta

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"),
}

# Get facility fuels for your facility
facility_id = "your-facility-uuid"
facility_fuels = requests.get(
    f"https://api.dcycle.io/api/v1/facility_fuels/{facility_id}",
    headers=headers,
).json()

# Find the natural gas fuel option
natural_gas_fuel = next(
    (ff for ff in facility_fuels if "natural gas" in ff["fuel_name"].lower()),
    None
)

# Create invoice for natural gas consumption
invoice_data = {
    "type": "heat",  # Stationary combustion
    "facility_percentages": [
        {
            "organization_id": os.getenv("DCYCLE_ORG_ID"),
            "facility_id": facility_id,
            "percentage": 1.0,  # 100% to this facility
        }
    ],
    "base_quantity": 5000,  # 5,000 mΒ³ of natural gas
    "unit_id": "2a09be22-a6e2-4317-a680-94aaa1048765",  # mΒ³
    "facility_fuel_id": natural_gas_fuel["id"],
    "start_date": "2024-01-01",
    "end_date": "2024-01-31",
    "invoice_id": "INV-2024-001",
    "uploaded_by": os.getenv("DCYCLE_USER_ID"),
    # Optional: apply a custom emission factor
    # "custom_emission_factor_id": "your-custom-ef-id",
}

response = requests.post(
    "https://api.dcycle.io/api/v1/invoices",
    headers=headers,
    json=invoice_data,
)

invoice = response.json()
print(f"βœ… Invoice created: {invoice['id']}")
print(f"   Quantity: {invoice['quantity']} mΒ³")
print(f"   COβ‚‚e: {invoice.get('co2e', 'Calculating...')} kg")

Step 2.2: Track Refrigerant Recharges

FieldTypeRequiredDescriptionExample
typestringβœ…Invoice type"recharge"
facility_idUUIDβœ…Facility with the equipment"abc-123-..."
facility_fuel_idUUIDβœ…Refrigerant type (R-410A, R-134a, etc.)"ref-456-..."
base_quantitynumberβœ…Amount recharged (= amount leaked)15
unit_idUUIDβœ…Unit (typically kg)"61743a63-..." (kg)
start_datedateβœ…Recharge date"2024-03-15"
end_datedateβœ…Recharge date (same as start)"2024-03-15"
invoice_idstringβœ…Service invoice reference"RECHARGE-2024-001"
uploaded_byUUIDβœ…User uploading"user-uuid"
custom_emission_factor_idUUID❌Custom EF override"custom-ef-uuid"
Where to get this data:
  • Refrigerant type: From HVAC maintenance records or service invoices
  • Quantity: From recharge receipts (amount refilled = amount leaked)
  • Equipment register: Maintain a list of all cooling equipment and their refrigerant types
Refrigerant leaks (HFCs, PFCs) are fugitive emissions and often significant for organizations with cooling systems:
# Create invoice for refrigerant recharge (fugitive emissions)
recharge_data = {
    "type": "recharge",
    "facility_percentages": [
        {
            "organization_id": os.getenv("DCYCLE_ORG_ID"),
            "facility_id": facility_id,
            "percentage": 1.0,
        }
    ],
    "base_quantity": 15,  # 15 kg of R-410A refrigerant
    "unit_id": "61743a63-ff70-459c-9567-5eee8f7dfd5c",  # kg
    "facility_fuel_id": refrigerant_fuel_id,  # R-410A fuel ID
    "start_date": "2024-03-15",
    "end_date": "2024-03-15",
    "invoice_id": "RECHARGE-2024-001",
    "uploaded_by": os.getenv("DCYCLE_USER_ID"),
    # "custom_emission_factor_id": "your-custom-ef-id",
}

response = requests.post(
    "https://api.dcycle.io/api/v1/invoices",
    headers=headers,
    json=recharge_data,
)

print(f"βœ… Recharge recorded: {response.json()['id']}")
print(f"   R-410A has GWP of ~2,088 - high impact!")
Custom Factors for RechargesUse custom_emission_factor_id when you want to apply custom emissions data for a refrigerant. Learn how in the Custom Emission Factors guide.
High-GWP RefrigerantsSome refrigerants have extremely high Global Warming Potentials:
  • R-410A: GWP = 2,088
  • R-404A: GWP = 3,922
  • R-134a: GWP = 1,430
Even small leaks can represent a significant portion of your Scope 1 footprint. Track all recharges carefully.

Step 2.3: Track Process Emissions

FieldTypeRequiredDescriptionExample
typestringβœ…Invoice type"process"
facility_idUUIDβœ…Facility with the process"abc-123-..."
facility_fuel_idUUIDβœ…Process source/fuel type"proc-456-..."
base_quantitynumberβœ…Emission quantity250
unit_idUUIDβœ…Unit (typically kg)"61743a63-..." (kg)
start_datedateβœ…Period start"2024-01-01"
end_datedateβœ…Period end"2024-03-31"
invoice_idstringβœ…Internal reference"PROCESS-2024-Q1"
uploaded_byUUIDβœ…User uploading"user-uuid"
custom_emission_factor_idUUID⚠️Custom EF (often required)"custom-ef-uuid"
Where to get this data:
  • Process type: From environmental permits, process flow diagrams
  • Quantity: From production records, mass balance calculations, or direct measurements
  • Custom EF: Industry-specific factors from permits, sector guidelines, or IPCC
Process emissions arise from industrial activities where the emissions are not from fuel combustion, but from chemical or physical transformations. Common examples include:
  • Chemical manufacturing: COβ‚‚ from calcination (e.g., cement, lime production)
  • Metal production: COβ‚‚ from reduction processes
  • Volatile organic compounds (VOCs): Emissions from solvents, coatings, and industrial cleaning
  • Industrial furnaces: Non-combustion emissions from high-temperature processes
Process emissions are tracked as invoices with type: "process":
# Create invoice for process emissions (e.g., VOC from painting operations)
process_data = {
    "type": "process",
    "facility_percentages": [
        {
            "organization_id": os.getenv("DCYCLE_ORG_ID"),
            "facility_id": facility_id,
            "percentage": 1.0,
        }
    ],
    "base_quantity": 250,  # 250 kg of VOC emissions
    "unit_id": "61743a63-ff70-459c-9567-5eee8f7dfd5c",  # kg
    "facility_fuel_id": process_fuel_id,  # Fuel/source associated with the process
    "start_date": "2024-01-01",
    "end_date": "2024-03-31",
    "invoice_id": "PROCESS-2024-Q1",
    "uploaded_by": os.getenv("DCYCLE_USER_ID"),
    # "custom_emission_factor_id": "your-custom-ef-id",
}

response = requests.post(
    "https://api.dcycle.io/api/v1/invoices",
    headers=headers,
    json=process_data,
)

print(f"βœ… Process emissions recorded: {response.json()['id']}")
Use Custom Emission Factors for Process EmissionsProcess emissions often require facility-specific or industry-specific emission factors. Use custom_emission_factor_id to apply factors from your environmental permits or industry calculations. See Custom Emission Factors for setup instructions.
When to Use Process vs. Heat Invoices
  • Use type: "heat" when emissions come from burning fuel (combustion)
  • Use type: "process" when emissions come from chemical/physical transformations not related to combustion
Example: A cement plant would use heat for fuel burned in kilns, but process for COβ‚‚ released from limestone calcination.

Step 2.4: Track Waste Water Treatment Emissions

FieldTypeRequiredDescriptionExample
facility_idUUIDβœ…WWT facility"wwt-123-..."
namestringβœ…Record identifier"WWT-2024-01-01"
measurement_datedateβœ…Measurement date"2024-01-01"
m3_water_innumberβœ…Daily influent volume (mΒ³)10000
m3_water_outnumberβœ…Daily effluent volume (mΒ³)9500
kg_bod_per_m3_wwt_linenumberβœ…BOD concentration in treatment0.25
kg_n_per_m3_wwt_linenumberβœ…Nitrogen concentration0.04
kg_sludgenumberβœ…Sludge produced (kg)500
kg_bod_per_kg_sludge_linenumberβœ…BOD in sludge0.6
kg_bod_per_m3_wwd_linenumberβœ…BOD in discharge0.02
kg_n_per_m3_wwd_linenumberβœ…Nitrogen in discharge0.01
m3_biogas_enginenumber❌Biogas to engine (m³)200
m3_biogas_flarenumber❌Biogas flared (m³)50
m3_biogas_boilernumber❌Biogas to boiler (m³)100
stnumber❌Solids content0.25
methanenumber❌Methane content in biogas0.65
Where to get this data:
  • Flow data: SCADA systems, flow meters at inlet/outlet
  • BOD/Nitrogen: Laboratory analyses, online sensors
  • Sludge: Weighing systems, sludge removal records
  • Biogas: Gas meters on digesters, engines, flares
Wastewater treatment facilities generate CHβ‚„ (methane) and Nβ‚‚O (nitrous oxide) emissions through biological processes. Dcycle provides a specialized bulk upload endpoint:
import requests
import os
from datetime import date, timedelta

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"),
}

# Prepare daily waste water treatment data
daily_data = []
base_date = date(2024, 1, 1)

for i in range(31):  # January 2024
    measurement_date = base_date + timedelta(days=i)
    daily_data.append({
        "name": f"WWT-{measurement_date.isoformat()}",
        "measurement_date": measurement_date.isoformat(),
        "m3_water_in": 10000 + (i * 100),  # Daily influent (mΒ³)
        "m3_water_out": 9500 + (i * 95),   # Daily effluent (mΒ³)
        "kg_bod_per_m3_wwt_line": 0.25,    # BOD concentration
        "kg_n_per_m3_wwt_line": 0.04,      # Nitrogen concentration
        "kg_sludge": 500 + (i * 10),       # Sludge produced (kg)
        "kg_bod_per_kg_sludge_line": 0.6,
        "kg_bod_per_m3_wwd_line": 0.02,
        "kg_n_per_m3_wwd_line": 0.01,
        "m3_biogas_engine": 200,           # Biogas to engine (mΒ³)
        "m3_biogas_flare": 50,             # Biogas flared (mΒ³)
        "m3_biogas_boiler": 100,           # Biogas to boiler (mΒ³)
        "st": 0.25,                        # Solids content
        "methane": 0.65,                   # Methane content in biogas
    })

wwt_data = {
    "facility_id": "your-wwt-facility-uuid",
    "daily_waste_water_treatment_data": daily_data,
}

response = requests.post(
    "https://api.dcycle.io/api/v1/bulk/waste_water_treatments",
    headers=headers,
    json=wwt_data,
)

wwt_records = response.json()
print(f"βœ… Created {len(wwt_records)} waste water treatment records")
print(f"   Emissions calculated from CHβ‚„ and Nβ‚‚O")
Waste Water Treatment CalculationsDcycle calculates emissions from:
  • CHβ‚„ from anaerobic treatment: Based on BOD removal and MCF (Methane Correction Factor)
  • Nβ‚‚O from biological processes: Based on nitrogen load and EF
  • Biogas combustion: COβ‚‚ from burning recovered biogas (often biogenic)
The endpoint handles data imputation for missing values using moving averages.

Calculating Mobile Combustion

Mobile combustion emissions come from company-owned or controlled vehicles. In Dcycle, these are tracked through vehicles and vehicle consumptions.
Prefer using the Dcycle App?If you want to manage your fleet through our web interface instead of the API, check out these guides:
What you’ll track:
Vehicle Registration β†’ Fuel Consumption β†’ Emissions Calculation
      ↓                      ↓                    ↓
  Fleet database      Monthly records        CO2e per vehicle
This part of the documentation is still in progress.
Dcycle uses country-specific emission factors from:
  • DEFRA (UK Department for Environment, Food & Rural Affairs) Comming soon!
  • MITECO (Spanish Ministry for Ecological Transition)
Factors are automatically selected based on vehicle country and fuel type.
Mobile combustion emissions are calculated as:COβ‚‚e = Fuel Quantity Γ— (EF_COβ‚‚ Γ— GWP_COβ‚‚ + EF_CHβ‚„ Γ— GWP_CHβ‚„ + EF_Nβ‚‚O Γ— GWP_Nβ‚‚O)Where emission factors (EF) are specific to:
  • Fuel type (diesel, petrol, LPG, etc.)
  • Vehicle type (passenger car, light truck, heavy truck)
  • Country (regional emission factors)
  • Unit (liters, kilometers, etc.)

Data Flow

1

Register Vehicles

Add all company vehicles to Dcycle
2

Track Fuel Consumption

Upload fuel purchases (manually or from fuel cards)
3

Calculate Emissions

Dcycle automatically calculates CO2e emissions
4

Generate Reports

View emissions by vehicle, driver, or period

Step 2.5: Create a Vehicle

FieldTypeRequiredDescriptionExample
namestringβœ…Vehicle identifier"Delivery Truck 01"
typestringβœ…Vehicle category"truck", "car", "van"
license_platestringβœ…License plate number"1234ABC"
countrystringβœ…Registration country (ISO)"ES", "FR", "PT"
vehicle_fuel_idUUIDβœ…Fuel type"diesel-uuid"
ownershipstringβœ…Ownership type"owned" or "rented"
Where to get this data:
  • Vehicle details: Fleet management system, vehicle registration documents
  • Fuel type: Vehicle specifications, fuel cards
  • Vehicle fuel ID: GET /api/v1/vehicle_fuels
  • Vehicle type: GET /api/v1/unknown_vehicles (for generic vehicle types)
First, register your company vehicle:
Using the Dcycle App?You can also register vehicles through our web interface:
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"),
}

# Get available vehicle fuels
vehicle_fuels = requests.get(
    "https://api.dcycle.io/api/v1/vehicle_fuels",
    headers=headers,
).json()

diesel_fuel = next(
    (vf for vf in vehicle_fuels["items"] if "diesel" in vf["name"].lower()),
    None
)

# Get vehicles (vehicle types)
vehicle_types = requests.get(
    "https://api.dcycle.io/api/v1/unknown_vehicles",
    headers=headers,
).json()

medium_truck = next(
    (
        vt
        for vt in vehicle_types["items"]
        if "medium" in vt["name"].lower() and "truck" in vt["name"].lower()
    ),
    None
)

# Create vehicle via bulk CSV upload (get presigned URL)
bulk_upload = requests.post(
    "https://api.dcycle.io/api/v1/vehicles/bulk/csv",
    headers=headers,
    json={"file_name": "company_vehicles.csv"},
).json()

print(f"βœ… Upload URL generated: {bulk_upload['upload_url'][:50]}...")
print(f"   Upload your CSV with columns:")
print(f"   name, type, license_plate, country, vehicle_fuel_id, ownership, unknown_vehicle_id")

Step 2.6: Record Vehicle Fuel Consumption

FieldTypeRequiredDescriptionExample
vehicle_license_platestringβœ…Vehicle identifier"1234ABC"
start_date_rechargedateβœ…Consumption period start"2024-01-01"
end_date_rechargedateβœ…Consumption period end"2024-01-31"
quantitynumberβœ…Fuel amount450
unit_measurestringβœ…Unit of measurement"l", "km"
organization_idUUIDβœ…Organization identifier"org-uuid"
descriptionstring❌Optional note"January fuel"
Supported units:
  • Volume: l (liters) - for fuel purchases
  • Distance: km (kilometers) - when using average consumption
Where to get this data:
  • Fuel cards: Automatic reports from fuel card providers
  • Fuel receipts: Manual collection of fuel purchase receipts
  • Odometer readings: For distance-based calculations
  • Charging records: For electric vehicles (charging station data)
Once vehicles are created, track their fuel consumption:
# Get presigned URL for bulk vehicle consumption upload
consumption_upload = requests.post(
    "https://api.dcycle.io/api/v1/vehicle_consumptions/bulk/csv",
    headers=headers,
    json={"file_name": "vehicle_consumptions_q1_2024.csv"},
).json()

print(f"βœ… Upload URL generated for consumptions")
print(f"   CSV columns required:")
print(f"   description(optional), vehicle_license_plate, start_date_recharge,")
print(f"   end_date_recharge, quantity, unit_measure, organization_id")

CSV Format for Vehicle Consumptions

description(optional),vehicle_license_plate,start_date_recharge,end_date_recharge,quantity,unit_measure,organization_id
January fuel,1234ABC,2024-01-01,2024-01-31,450,l,your-org-uuid
February fuel,1234ABC,2024-02-01,2024-02-29,420,l,your-org-uuid
Q1 fuel,5678XYZ,2024-01-01,2024-03-31,1250,l,your-org-uuid

Query Vehicle Consumptions

# Get vehicle consumptions for a specific vehicle
vehicle_id = "your-vehicle-uuid"

consumptions = requests.get(
    f"https://api.dcycle.io/api/v1/vehicle_consumptions/vehicle/{vehicle_id}",
    headers=headers,
    params={
        "page": 1,
        "size": 50,
        "start_date": 1704067200,  # 2024-01-01 timestamp
        "end_date": 1711929600,    # 2024-04-01 timestamp
    },
).json()

print(f"πŸ“Š Vehicle Consumptions:")
for consumption in consumptions["items"]:
    print(f"   {consumption['start_date']} - {consumption['end_date']}")
    print(f"   Quantity: {consumption['quantity']} {consumption['unit_name']}")
    print(f"   COβ‚‚e: {consumption.get('co2e', 'N/A')} kg")
    print()
Best Practice: Track All Company VehiclesFor complete Scope 1 accounting:
  1. Owned vehicles: Full emissions count toward Scope 1
  2. Leased vehicles (operational control): Include in Scope 1
  3. Employee-owned vehicles for business: May be Scope 3 (business travel)
Use the ownership field (owned or rented) to distinguish.