EU Deforestation Regulation (EU 2023/1115) compliance events. Plot geolocation, satellite deforestation verification, chain-of-custody tracking, and Due Diligence Statement workflow.
The EU Deforestation Regulation requires commodity exports to prove deforestation-free sourcing. Seven regulated commodities: cattle, cocoa, coffee, oil palm, rubber, soya, wood. Operators must submit a Due Diligence Statement (DDS) to the EU TRACES NT system before import.
A directed acyclic graph (DAG) from farm plot to EU border.
Supply chain actor identity and role. State key is the actor’s Matrix user ID. Defines the actor’s position in the supply chain and their geographic jurisdiction.
| Field | Type | Description |
|---|---|---|
| actor_id | string | Matrix user ID of the supply chain actor |
| role | string | Role in supply chain |
|
Values:
farmer, local_trader, processor, exporter, eu_operator, ai_service |
||
| organization | string | Organisation name |
| country | string | ISO 3166-1 alpha-2 country code |
| commodities | string[] | Regulated commodities handled |
| registration_number | string | Official registration/licence number (optional) |
{
"type": "foundation.protocols.eudr.actor_registration",
"state_key": "@frm-gh-0042:coop.averdine.net",
"content": {
"actor_id": "@frm-gh-0042:coop.averdine.net",
"role": "farmer",
"organization": "Kumasi Organic Cocoa Cooperative",
"country": "GH",
"commodities": ["cocoa"],
"registration_number": "GH-COC-2024-0042"
}
}
Farm plot coordinates in GeoJSON format (WGS84). Single GPS point for plots <4 hectares, polygon boundaries for plots ≥4 hectares, per EUDR Article 9(1)(d).
| Field | Type | Description |
|---|---|---|
| plot_id | string | Unique plot identifier |
| farmer_id | string | Matrix user ID of the plot owner |
| geojson | object | GeoJSON Feature (Point or Polygon, WGS84) |
| area_hectares | number | Plot area in hectares |
| commodity | string | Primary commodity grown |
| recorded_at | string | ISO 8601 timestamp of GPS recording |
{
"type": "foundation.protocols.eudr.plot_geolocation",
"content": {
"plot_id": "PLT-GH-0042-A",
"farmer_id": "@frm-gh-0042:coop.averdine.net",
"geojson": {
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-1.6221, 6.6885]
},
"properties": { "crs": "EPSG:4326" }
},
"area_hectares": 2.3,
"commodity": "cocoa",
"recorded_at": "2026-01-15T09:30:00Z"
}
}
Satellite-verified deforestation status against the 31 December 2020 cutoff date. Sources: Sentinel-2, Landsat, Hansen Global Forest Change, JRC Forest Maps.
| Field | Type | Description |
|---|---|---|
| plot_id | string | Plot being verified |
| result | string | Verification result |
|
Values:
deforestation_free, deforestation_detected, inconclusive, insufficient_data |
||
| confidence | number | Confidence score 0.0–1.0 |
| satellite_source | string | Primary satellite data source used |
| analysis_date | string | ISO 8601 date of analysis |
| reference_images | object[] | Satellite image references with MXC URIs (optional) |
| cutoff_date | string | Regulatory cutoff date (default: 2020-12-31) |
| verified_by | string | Matrix user ID or ai_service |
{
"type": "foundation.protocols.eudr.deforestation_check",
"content": {
"plot_id": "PLT-GH-0042-A",
"result": "deforestation_free",
"confidence": 0.94,
"satellite_source": "Sentinel-2",
"analysis_date": "2026-02-10",
"cutoff_date": "2020-12-31",
"verified_by": "ai_service",
"reference_images": [
{
"date": "2020-06-15",
"source": "Sentinel-2",
"mxc_uri": "mxc://averdine.net/sat-img-pre-2020"
},
{
"date": "2026-02-01",
"source": "Sentinel-2",
"mxc_uri": "mxc://averdine.net/sat-img-current"
}
]
}
}
Harvest event linked to a verified plot. Records the quantity, date, and commodity
harvested. Must reference a plot with a passing deforestation_check.
| Field | Type | Description |
|---|---|---|
| harvest_id | string | Unique harvest identifier |
| plot_id | string | Verified plot this harvest comes from |
| farmer_id | string | Farmer Matrix user ID |
| commodity | string | Commodity harvested |
| quantity_kg | number | Harvest weight in kilograms |
| harvest_date | string | ISO 8601 date of harvest |
| deforestation_check_ref | string | Event ID of the linked deforestation check |
{
"type": "foundation.protocols.eudr.harvest_record",
"content": {
"harvest_id": "HRV-GH-0042-2026-Q1",
"plot_id": "PLT-GH-0042-A",
"farmer_id": "@frm-gh-0042:coop.averdine.net",
"commodity": "cocoa",
"quantity_kg": 320,
"harvest_date": "2026-03-01",
"deforestation_check_ref": "$deforestation_check_event_id"
}
}
Transfer between supply chain actors. Each transfer creates a new edge in the chain-of-custody DAG, linking the commodity from origin plot to final EU operator.
| Field | Type | Description |
|---|---|---|
| transfer_id | string | Unique transfer identifier |
| from_actor | string | Matrix user ID of sender |
| to_actor | string | Matrix user ID of receiver |
| commodity | string | Commodity being transferred |
| quantity_kg | number | Quantity in kilograms |
| source_refs | string[] | Event IDs of source harvests or upstream transfers |
| transfer_date | string | ISO 8601 date |
| transport_method | string | How the commodity was transported (optional) |
{
"type": "foundation.protocols.eudr.chain_of_custody",
"content": {
"transfer_id": "COC-GH-2026-0099",
"from_actor": "@frm-gh-0042:coop.averdine.net",
"to_actor": "@trd-gh-0099:trade.averdine.net",
"commodity": "cocoa",
"quantity_kg": 320,
"source_refs": ["$harvest_record_event_id"],
"transfer_date": "2026-03-05",
"transport_method": "road"
}
}
Processing step in the supply chain: drying, hulling, roasting, milling, etc. Records input and output quantities for mass balance tracking.
| Field | Type | Description |
|---|---|---|
| processing_id | string | Unique processing step identifier |
| processor_id | string | Processor Matrix user ID |
| process_type | string | Type of processing performed |
|
Values:
drying, hulling, roasting, milling, refining, packaging, ... |
||
| input_refs | string[] | Event IDs of input chain_of_custody transfers |
| input_quantity_kg | number | Input weight in kilograms |
| output_quantity_kg | number | Output weight in kilograms |
| processing_date | string | ISO 8601 date |
{
"type": "foundation.protocols.eudr.processing_event",
"content": {
"processing_id": "PRC-GH-2026-0050",
"processor_id": "@prc-gh-0099:proc.averdine.net",
"process_type": "drying",
"input_refs": ["$chain_of_custody_event_id"],
"input_quantity_kg": 320,
"output_quantity_kg": 256,
"processing_date": "2026-03-10"
}
}
Legal compliance evidence: land titles, export licences, phytosanitary certificates, organic certifications, and other regulatory documentation.
| Field | Type | Description |
|---|---|---|
| compliance_id | string | Unique compliance record identifier |
| actor_id | string | Actor this compliance applies to |
| document_type | string | Type of legal document |
|
Values:
land_title, export_licence, phytosanitary_cert, organic_cert, business_licence |
||
| document_ref | string | Document reference number |
| issuing_authority | string | Authority that issued the document |
| valid_from | string | ISO 8601 date |
| valid_until | string | ISO 8601 date |
| mxc_uri | string | Matrix content URI of uploaded document (optional) |
{
"type": "foundation.protocols.eudr.legal_compliance",
"content": {
"compliance_id": "LCM-GH-0042-LT",
"actor_id": "@frm-gh-0042:coop.averdine.net",
"document_type": "land_title",
"document_ref": "GH-LANDS-2019-4521",
"issuing_authority": "Ghana Lands Commission",
"valid_from": "2019-06-01",
"valid_until": "2029-05-31",
"mxc_uri": "mxc://averdine.net/land-title-doc"
}
}
AI or manual risk assessment for a shipment or supply chain actor. Combines country benchmark, actor history, satellite data, and compliance document status.
| Field | Type | Description |
|---|---|---|
| assessment_id | string | Unique assessment identifier |
| target_type | string | What is being assessed |
|
Values:
shipment, actor, plot, supply_chain |
||
| target_ref | string | Event ID or actor ID being assessed |
| risk_level | string | Overall risk level |
|
Values:
low, standard, high |
||
| risk_factors | object[] | Individual risk factor assessments |
| assessed_by | string | Matrix user ID or ai_service |
| assessment_date | string | ISO 8601 date |
{
"type": "foundation.protocols.eudr.risk_assessment",
"content": {
"assessment_id": "RSK-GH-2026-0042",
"target_type": "shipment",
"target_ref": "$chain_of_custody_event_id",
"risk_level": "low",
"risk_factors": [
{ "factor": "country_benchmark", "level": "standard", "source": "EU Commission" },
{ "factor": "deforestation_check", "level": "low", "confidence": 0.94 },
{ "factor": "actor_history", "level": "low", "note": "3 years clean record" }
],
"assessed_by": "ai_service",
"assessment_date": "2026-03-12"
}
}
Draft Due Diligence Statement assembled from room data. Contains all required EUDR fields for the EU operator to review before submission to TRACES NT.
| Field | Type | Description |
|---|---|---|
| dds_id | string | Unique DDS identifier |
| operator_id | string | EU operator Matrix user ID |
| commodity | string | Regulated commodity |
| country_of_origin | string | ISO 3166-1 country code |
| plot_refs | string[] | Event IDs of linked plot_geolocation events |
| deforestation_refs | string[] | Event IDs of linked deforestation_check events |
| chain_of_custody_refs | string[] | Event IDs of the full chain |
| risk_assessment_ref | string | Event ID of the risk assessment |
| total_quantity_kg | number | Total import quantity |
| status | string | Draft status |
|
Values:
draft, under_review, approved, rejected |
||
{
"type": "foundation.protocols.eudr.dds_draft",
"content": {
"dds_id": "DDS-DE-2026-0001",
"operator_id": "@op-de-aver-001:eu.averdine.net",
"commodity": "cocoa",
"country_of_origin": "GH",
"plot_refs": ["$plot_geolocation_event_id"],
"deforestation_refs": ["$deforestation_check_event_id"],
"chain_of_custody_refs": [
"$coc_farmer_to_trader",
"$coc_trader_to_processor",
"$coc_processor_to_exporter",
"$coc_exporter_to_operator"
],
"risk_assessment_ref": "$risk_assessment_event_id",
"total_quantity_kg": 256,
"status": "under_review"
}
}
Confirmation of DDS submission to the EU TRACES NT system. Includes the TRACES reference number for regulatory audit trail.
| Field | Type | Description |
|---|---|---|
| dds_id | string | Links to the dds_draft event |
| traces_reference | string | TRACES NT submission reference number |
| submitted_by | string | EU operator Matrix user ID |
| submitted_at | string | ISO 8601 timestamp of submission |
| status | string | Submission status |
|
Values:
submitted, accepted, rejected, under_review |
||
{
"type": "foundation.protocols.eudr.dds_submitted",
"content": {
"dds_id": "DDS-DE-2026-0001",
"traces_reference": "TRACES-NT-2026-DE-COCOA-00421",
"submitted_by": "@op-de-aver-001:eu.averdine.net",
"submitted_at": "2026-03-15T14:30:00Z",
"status": "submitted"
}
}
Country risk benchmarking data from the EU Commission. State key is the ISO country code.
Used by risk_assessment events to factor in country-level risk.
| Field | Type | Description |
|---|---|---|
| country | string | ISO 3166-1 alpha-2 country code |
| risk_category | string | EU Commission risk category |
|
Values:
low, standard, high |
||
| assessment_date | string | Date of EU Commission assessment |
| source | string | Source reference |
| notes | string | Additional context (optional) |
{
"type": "foundation.protocols.eudr.country_benchmark",
"state_key": "GH",
"content": {
"country": "GH",
"risk_category": "standard",
"assessment_date": "2025-12-30",
"source": "EU Commission EUDR Country Benchmarking, Dec 2025",
"notes": "Ghana classified as standard risk for cocoa and wood"
}
}
EUDR rooms use Matrix power levels to enforce supply chain hierarchy.
| Actor | Power Level | MXID Pattern |
|---|---|---|
| Farmer | 40 | @frm-gh-0042:coop.averdine.net |
| Local Trader | 50 | @trd-gh-0099:trade.averdine.net |
| Processor | 60 | @prc-gh-0099:proc.averdine.net |
| Exporter | 70 | @exp-gh-0200:export.averdine.net |
| EU Operator | 80 | @op-de-aver-001:eu.averdine.net |
| AI EUDR Service | 75 | (bot) |
AI-driven EUDR operations (deforestation checks, risk assessments) are wrapped in the general ai.* governance flow:
7-stage pipeline from data submission to regulatory confirmation: