Skip to content

EUDR Due Diligence Statement

The /export_eudr_dds endpoint generates a Due Diligence Statement (DDS) package compliant with the EU Deforestation Regulation (EUDR). This endpoint retrieves data that has been previously processed via the Batch APIs and packages it into a ZIP file containing GeoJSON files (one per collection) with geolocation data and a PDF audit trail with comprehensive deforestation assessment.

Overview

The /export_eudr_dds endpoint is designed for EUDR compliance submissions. It consolidates deforestation detection data from one or more collections and generates:

  • GeoJSON files (one per collection) with geolocation data ready for submission to EU TRACES
  • PDF audit trail with comprehensive deforestation assessment and compliance information

The endpoint requires that your data has been previously processed via either /batch_process (for manually collected georeferenced plots) or /batch_supply_shed (for agricultural facilities with supply shed analysis).

Parameters

Parameter Type Required Default Description
collections list[str] Yes* None List of collection IDs to combine in the EUDR DDS export
facility_ids list[str] Yes* None List of facility IDs to look up collection IDs. Alternative to providing collections directly.
monitoring_start str No "2020-12-31" The start date for the monitoring period in the format YYYY-MM-dd. For EUDR compliance, this should be set to the EUDR cut-off date (2020-12-31) to check deforestation after this date
monitoring_end str No None The end date for the monitoring period (up until processing) in the format YYYY-MM-dd. Defaults to current date

* Either collections or facility_ids must be provided, but not both.

Headers

1
2
3
4
headers = {
    'Authorization': "Bearer <authorization_token>",
    'accept': 'application/zip'  # Important: endpoint returns a ZIP file
}

The Authorization header must be replaced by your user token. Check this page for more information on how to authenticate.

Note: The endpoint returns a binary ZIP file, so ensure your HTTP client is configured to handle binary responses (e.g., responseType: 'arraybuffer' in JavaScript, or writing response.content in Python).

Response Format

The endpoint returns a ZIP file containing the following files:

GeoJSON Files (One Per Collection)

Filename pattern: dds_geolocations_<collection_hash>.geojson

Each GeoJSON file contains geolocation data (polygons or points) for all plots in the collection, validated and compliant with EU Information System specifications. These are the mandatory files that must be uploaded to EU TRACES. Each GeoJSON should be submitted separately per HS code/supplier as per EU Traces requirements.

Files are named using a hash of the user ID and collection ID to ensure uniqueness.

PDF Audit Trail (Consolidated)

Filename pattern: audit_trail_<meta_collection_hash>.pdf

The PDF contains comprehensive deforestation assessment and compliance documentation aggregated across all collections, including:

  • Aggregate statistics across all collections
  • Total number of plots and surface area checked
  • Risk categorization (critical, moderate, negligible)
  • Individual non-compliant plots with details (area, dates, thumbnails)
  • Country and regional information
  • Supplier and product information (if provided during batch processing)

This file should be retained as part of your audit trail for up to 5 years after DDS submission. It contains more detailed information than what EU TRACES accepts, but is required for compliance record-keeping.

Caching Behavior

The endpoint implements caching to improve performance and reduce processing costs:

  • Default behavior: If a cached version exists in Google Cloud Storage (GCS) for the same parameters, it will be returned immediately without reprocessing
  • Cache key: Based on user ID, collection IDs, monitoring dates, and other parameters
  • Performance: Cached responses are typically returned in seconds, while regenerating may take several minutes for large collections

Usage Examples

Python

export_eudr_dds.py
import requests

request_data = {
    "collections": ["<collection_id_1>", "<collection_id_2>"],
    "monitoring_start": "2017-01-01",
    "monitoring_end": None,
}

headers = {
    'Authorization': "Bearer <authorization_token>",
    'accept': 'application/zip'
}

response = requests.get("https://epoch-sco2-api.com/export_eudr_dds/", 
                        params=request_data, 
                        headers=headers)

# Save the ZIP file
with open("output.zip", "wb") as f:
    f.write(response.content)

Alternatively, you can use facility_ids instead of collections:

export_eudr_dds_facility.py
import requests

request_data = {
    "facility_ids": ["<facility_id_1>", "<facility_id_2>"],
    "monitoring_start": "2017-01-01",
}

headers = {
    'Authorization': "Bearer <authorization_token>",
    'accept': 'application/zip'
}

response = requests.get("https://epoch-sco2-api.com/export_eudr_dds/", 
                        params=request_data, 
                        headers=headers)

with open("output.zip", "wb") as f:
    f.write(response.content)

Javascript

export_eudr_dds.js
const axios = require('axios');
const fs = require('fs');

const request_data = {
    collections: ["<collection_id_1>", "<collection_id_2>"],
    monitoring_start: '2017-01-01',
    monitoring_end: null,
};

const headers = {
    'Authorization': "Bearer <authorization_token>",
    'accept': 'application/zip'
};

async function fetchData() {
    try {
        const response = await axios.get("https://epoch-sco2-api.com/export_eudr_dds/", {
            params: request_data,
            headers: headers,
            responseType: 'arraybuffer' // Important for binary data
        });

        // Write the response data to a file
        fs.writeFileSync("output.zip", response.data);
        console.log("File saved as output.zip");
    } catch (error) {
        console.error("Error fetching data:", error);
    }
}

fetchData();

Curl

1
2
3
4
curl -X GET "https://epoch-sco2-api.com/export_eudr_dds/?collections=<collection_id_1>&collections=<collection_id_2>&monitoring_start=2017-01-01" \
     -H "Authorization: Bearer <authorization_token>" \
     -H "accept: application/zip" \
     -o output.zip

Using the Dashboard

You can also export DDS files via the Epoch dashboard:

  1. Navigate to the Monitoring pane
  2. Click the Export DDS button at the top-right of the map view
  3. Select your collections or facilities
  4. Wait for processing to complete (may take a few minutes for large collections)
  5. Download the generated ZIP file

Monitor Dashboard Batch Zonal Stats

The exported ZIP contains: - A PDF audit trail with deforestation assessment - GeoJSON files with geolocation data

Monitoring processing progress Monitoring processing progress 2 Select file to visualize

Error Handling

Common error scenarios:

  • 400 Bad Request: Missing or invalid parameters (e.g., both collections and facility_ids provided, or neither provided)
  • 404 Not Found: Collection IDs or facility IDs not found, or no data available for the specified collections
  • 500 Internal Server Error: Processing failure or data corruption

Ensure your collections have been successfully processed via the Batch APIs before attempting to export a DDS.

EUDR Compliance Details

The endpoint aligns with EU Deforestation Regulation requirements. Below are key considerations for how the exported data addresses EUDR Article 9 requirements:

  1. The endpoint aligns with the EU's Information system reporting specifications for EUDR.

  2. As per chapter 4, clause 8, national laws are incorporated in the deforestation checks provided, to the extent that these are publicly available.

  3. Country/Regional Benchmarking from the EU to categorize different origins according to different risk categories is not yet made available, but will be incorporated and documentation updated as soon as this information is made available. The ability to submit a simplified due diligence statement will automatically be determined by the endpoint itself, depending on the geographic locations of the plot collection requested.

  4. The following Article 9 clauses are also addressed in the following ways:

a. A description, including the trade name and type of the relevant products as well as, in the case of relevant products that contain or have been made using wood, the common name of the species and their full scientific name; the product description shall include the list of relevant commodities or relevant products contained therein or used to make those products.

These information fields are returned and provided as part of the audit trail PDF document if they have been uploaded at time of submitting the /batch_process call. If not, they need to be provided separately by the operator, or the party managing compliance on behalf of the operator.

b. The quantity of the relevant products; for relevant products entering or leaving the market, the quantity is to be expressed in kilograms of net mass and, where applicable, in the supplementary unit set out in Annex I to Council Regulation (EEC) No 2658/87 (20) against the indicated Harmonised System code, or, in all other cases, the quantity is to be expressed in net mass or, where applicable, volume or number of items; a supplementary unit is applicable where it is defined consistently for all possible subheadings under the Harmonised System code referred to in the due diligence statement.

The quantity of the relevant raw material harvested is provided at time of processing via /batch_process (if georeferenced plots have been manually collected), or automatically derived for the supply shed if processing via /batch_supply_shed (if only the location of the agricultural facility where raw commodity is aggregated is known). In the latter case, the identified commodity growing area identified in the surrounding supply shed is multipled by an average yield value for that commodity in that region/country, to estimate a production volume representative of that supply shed. If a production volume is known for the provided agricultural facility, it can be provided and will over-ride the automatically retrieved value.

Since HS Codes that fall under EUDR are consist of codes that are closely tied to the material in its raw form, the raw production volume is assumed to be representative. If this is not the case, the operator (or whoever managing compliance on its behalf) should provide this volume.

c. The country of production and, where relevant, parts thereof.

The country and regions (down to administrative level 2) of production are automatically retrieved and provided under this category in the audit trail PDF document.

d. The geolocation of all plots of land where the relevant commodities that the relevant product contains, or has been made using, were produced, as well as the date or time range of production; where a relevant product contains or has been made with relevant commodities produced on different plots of land, the geolocation of all different plots of land shall be included; any deforestation or forest degradation on the given plots of land shall automatically disqualify all relevant commodities and relevant products from those plots of land from being placed or made available on the market or exported; for relevant products that contain or have been made using cattle, and for such relevant products that have been fed with relevant products, the geolocation shall refer to all the establishments where the cattle were kept; for all other relevant products of Annex I, the geolocation shall refer to the plots of land.

The geolocations are returned in a validated GeoJSON format, ready for submission on the EU TRACES portal.

e. The name, postal address and email address of any business or person from whom they have been supplied with the relevant products.

These information fields are returned and provided as part of the audit trail PDF document if they have been uploaded at time of submitting the /batch_process call. If not, they need to be provided separately by the operator, or the party managing compliance on behalf of the operator.

f. the name, postal address and email address of any business, operator or trader to whom the relevant products have been supplied.

These information fields are returned and provided as part of the audit trail PDF document if they have been uploaded at time of submitting the /batch_process call. If not, they need to be provided separately by the operator, or the party managing compliance on behalf of the operator.

g. adequately conclusive and verifiable information that the relevant products are deforestation-free.

The PDF audit trail contains an aggregate-level deforestation assessment, which summarizes key supply base informations:

  • Total number of plots.
  • Number of critical risk plots.
  • Number of negligible risk plot.
  • Total surface area checked.
  • An appendix reporting the individual plots detected to be non-compliant and key attributes (surface area of plot, area of non-compliance detected, monitoring start and end date, a thumbnail providing a visual before/after situation), along with a justification as to how those plots were excluded from the imported goods.

h. Adequately conclusive and verifiable information that the relevant commodities have been produced in accordance with the relevant legislation of the country of production, including any arrangement conferring the right to use the respective area for the purposes of the production of the relevant commodity.

The conclusive and verifiable information that the relevant commodities have been produced in accordance with the relevant legislation of the country of production and proof of right to use the land for commodity production is to be provided by the submitting party (operator, or party managing compliance on their behalf), as this is not directly assessable without supplier-specific information.