EUDR Implementation Guide

Step-by-step guide for implementing EU Deforestation Regulation compliance using GS1 standards

3 min read

Masterdata and eventsmasterDataAvailableFor is GS1 Web Vocabulary (no gs1: prefix needed). It is used to carry lot- or serial-level masterdata alongside an event: production batch, declaration references, incident records, regulatory citations. It must not carry GTIN-level masterdata (product name, generic specifications) — those live on the resolver, POSTed once via POST /products/{gtin}. Extension vocabularies (battery:, eudr:, textile:, electronics:) keep their prefix; they are declared in the document's @context.

EUDR Implementation Guide

This guide provides step-by-step instructions for implementing EU Deforestation Regulation (EUDR) 2023/1115 compliance using GS1 standards.

Prerequisites

Before implementing EUDR compliance:

  1. GS1 Company Prefix - Required for GTIN/GLN generation
  2. GS1 Digital Link Resolver - For content negotiation
  3. EPCIS Repository - For event storage and querying

Implementation Steps

Step 1: Set Up Identifiers

Use GS1 Digital Link identifiers for all entities:

Product:      https://id.gs1.org/01/{GTIN}/21/{Serial}
Location:     https://id.gs1.org/414/{GLN}
Organization: https://id.gs1.org/417/{GLN}

Example Timber Product:

https://id.gs1.org/01/09521234000020/21/LOG-2025-001

Step 2: Create Location Master Data (Plot of Land)

Every EUDR-regulated commodity must be traceable to its production plot:

{
  "@context": [
    { "gs1": "https://ref.gs1.org/voc/" },
    { "eudr": "https://ref.openepcis.io/extensions/eu/eudr/" }
  ],
  "@id": "https://id.gs1.org/414/9521234000099",
  "@type": "gs1:Place",

  "name": "Sustainable Oak Forest - Plot 47",

  "gs1:geo.polygon": "POLYGON((13.40 52.51, 13.41 52.51, 13.41 52.52, 13.40 52.52, 13.40 52.51))",
  "eudr:areaHectares": 2.5,
  "gs1:countryOfOrigin": "DE",
  "gs1:provinceOfOrigin": "Brandenburg",
  "eudr:forestManagementUnit": "FMU-DE-2024-00123",
  "eudr:landUseHistory": "Managed sustainable forest since 1920"
}

Geolocation Requirements:

  • Plots > 4 hectares: Full polygon coordinates (WKT or GeoJSON)
  • Plots ≤ 4 hectares: Center point (gs1:geo: "lat,lon")

Step 3: Create Product Master Data

{
  "@id": "https://id.gs1.org/01/09521234000020/21/LOG-2025-001",
  "@type": ["gs1:Product", "gs1:Product"],

  "gtin": "09521234000020",
  "serialNumber": "LOG-2025-001",

  "eudr:commodityType": { "@id": "eudr:Wood" },
  "eudr:timberProductType": { "@id": "eudr:RoundWood" },
  "eudr:speciesScientificName": "Quercus robur",
  "eudr:speciesCommonName": "European Oak",
  "gs1:harvestDate": "2025-01-15",

  "eudr:originDetails": {
    "@id": "https://id.gs1.org/414/9521234000099",
    "masterDataAvailableFor": {
      "@id": "https://id.gs1.org/414/9521234000099"
    }
  },

  "gs1:countryOfOrigin": "DE"
}

Step 4: Record Harvesting Event

When a commodity is harvested/produced:

{
  "@context": [
    "https://ref.gs1.org/standards/epcis/epcis-context.jsonld",
    { "eudr": "https://ref.openepcis.io/extensions/eu/eudr/" }
  ],
  "type": "EPCISDocument",
  "epcisBody": {
    "eventList": [{
      "type": "ObjectEvent",
      "eventTime": "2025-01-15T08:30:00.000Z",
      "action": "ADD",
      "bizStep": "commissioning",

      "epcList": [{
        "@id": "https://id.gs1.org/01/09521234000020/21/LOG-2025-001",
        "masterDataAvailableFor": {
          "@id": "https://id.gs1.org/01/09521234000020/21/LOG-2025-001"
        }
      }],

      "readPoint": {
        "id": "https://id.gs1.org/414/9521234000099",
        "masterDataAvailableFor": {
          "@id": "https://id.gs1.org/414/9521234000099"
        }
      },

      "ilmd": {
        "gs1:harvestDate": "2025-01-15",
        "eudr:speciesScientificName": "Quercus robur",
        "gs1:countryOfOrigin": "DE"
      }
    }]
  }
}

Step 5: Complete Due Diligence Process

  1. Gather Information
    • Product identification
    • Geolocation of production plot
    • Supplier documentation
    • Species identification
  2. Assess Risk
    • Check country risk category
    • Verify documentation
    • Consider satellite imagery if needed
  3. Mitigate Risk (if not negligible)
    • Additional verification
    • Third-party audits
    • Certification verification
  4. Submit to EUIS
    • File due diligence statement
    • Receive EUIS reference number

Step 6: Record Due Diligence Statement Event

{
  "@context": [
    "https://ref.openepcis.io/extensions/eu/eudr/eudr-context.jsonld",
    "https://ref.gs1.org/standards/epcis/epcis-context.jsonld"
  ],
  "type": "ObjectEvent",
  "eventTime": "2025-01-20T10:00:00.000Z",
  "action": "OBSERVE",
  "bizStep": "inspecting",
  "epcList": [
    {
      "@id": "https://id.gs1.org/01/09521234000020/21/LOG-2025-001"
    }
  ],
  "regulatoryInformation": [
    {
      "@type": "gs1:RegulatoryInformation",
      "regulationType": {
        "@id": "gs1:RegulationTypeCode-DEFORESTATION_REGULATION"
      },
      "regulatoryAct": "EU 2023/1115",
      "regulatoryIdentifier": [
        {
          "regulatoryReferenceNumber": "EUIS-2025-DE-00012345",
          "regulatoryIdentifierType": "DUE_DILIGENCE_STATEMENT"
        }
      ],
      "isRegulationCompliant": true,
      "eudr:legallyHarvested": true,
      "eudr:riskLevel": {
        "@id": "eudr:Low"
      },
      "eudr:riskAssessmentDate": "2025-01-18"
    }
  ]
}

Step 7: Record Transformations (Derived Products)

When commodities are processed into derived products:

{
  "@context": [
    "https://ref.openepcis.io/extensions/eu/eudr/eudr-context.jsonld",
    "https://ref.gs1.org/standards/epcis/epcis-context.jsonld"
  ],
  "type": "TransformationEvent",
  "eventTime": "2025-02-15T14:00:00.000Z",
  "bizStep": "commissioning",
  "inputEPCList": [
    {
      "@id": "https://id.gs1.org/01/09521234000020/21/LOG-2025-001"
    },
    {
      "@id": "https://id.gs1.org/01/09521234000020/21/LOG-2025-002"
    }
  ],
  "outputEPCList": [
    {
      "@id": "https://id.gs1.org/01/09521234000037/21/TABLE-2025-001"
    }
  ],
  "ilmd": {
    "eudr:transformationDate": "2025-02-15",
    "eudr:timberProductType": {
      "@id": "eudr:Furniture"
    }
  }
}

Validation

Use the OpenEPCIS Event Sentry validation profile:

# Validate harvesting event
openepcis-sentry validate --profile eudr-harvesting event.json

# Validate due diligence statement
openepcis-sentry validate --profile eudr-due-diligence statement.json

Common Patterns

Aggregating Geolocation for Derived Products

When a derived product comes from multiple plots:

"eudr:originList": [
  { "@id": "https://id.gs1.org/01/09521234000020/21/LOG-2025-001" },
  { "@id": "https://id.gs1.org/01/09521234000020/21/LOG-2025-002" }
]

The derived product inherits traceability to all source plots.

Handling High-Risk Countries

For products from high-risk countries:

  1. Enhanced verification required
  2. Third-party audits recommended
  3. Satellite monitoring may be necessary
  4. Document all mitigation measures
"eudr:riskAssessment": {
  "@type": "eudr:RiskAssessment",
  "eudr:riskLevel": { "@id": "eudr:High" },
  "eudr:mitigationMeasures": "Third-party audit conducted. Satellite monitoring in place.",
  "eudr:verificationMethod": "On-site inspection + satellite imagery"
}

Next Steps