EUDR Implementation Guide
Step-by-step guide for implementing EU Deforestation Regulation compliance using GS1 standards
Masterdata and events — masterDataAvailableFor 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:
- GS1 Company Prefix - Required for GTIN/GLN generation
- GS1 Digital Link Resolver - For content negotiation
- 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
- Gather Information
- Product identification
- Geolocation of production plot
- Supplier documentation
- Species identification
- Assess Risk
- Check country risk category
- Verify documentation
- Consider satellite imagery if needed
- Mitigate Risk (if not negligible)
- Additional verification
- Third-party audits
- Certification verification
- 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:
- Enhanced verification required
- Third-party audits recommended
- Satellite monitoring may be necessary
- 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
- Review Event Types for all EPCIS events
- See URL Patterns for identifier structures
- Check the GitHub repository for complete examples