Learn how to use Coolset APIs to meet EU Deforestation Regulation requirements.
The EU Deforestation Regulation (EUDR) requires companies to prove that imported commodities don't contribute to deforestation. Coolset's EUDR API automates compliance workflows.
First, assess the EUDR risk for your order:
curl -X POST https://developers-pulse.coolset.com/api/compliance/risk-assessments/ \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"identifier": "ORDER-12345",
"assessment_type": "eudr_order_assessment"
}'Response:
{
"id": 789,
"identifier": "ORDER-12345",
"assessment_type": "eudr_order_assessment",
"results": {
"risk_level": "low",
"risk_score": 0.15,
"geolocation_verified": true,
"deforestation_risk": false
},
"assessment_date": "2024-10-28T12:00:00Z"
}Link orders to geographic origins:
curl -X POST https://developers-pulse.coolset.com/api/eudr/trace-orders/ \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"order_ids": [123, 456],
"origin_country": "BR",
"geolocation": {
"latitude": -10.3333,
"longitude": -53.2000
}
}'If risk is acceptable, create a DDS:
curl -X POST https://developers-pulse.coolset.com/api/eudr/due-diligence-statements/ \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"reference_number": "DDS-2024-001",
"operator_name": "Your Company Ltd",
"commodity_type": "coffee",
"orders": [123, 456]
}'Add evidence to support your DDS:
# First, create document record
curl -X POST https://developers-pulse.coolset.com/api/documents/ \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Certificate of Origin.pdf",
"content_type": "application/pdf"
}'
# Then upload file using the returned URL
# (Upload URL returned in response)Package all evidence for audit:
curl -X POST https://developers-pulse.coolset.com/api/compliance/risk-assessments/789/evidence-downloads/ \
-H "Authorization: Bearer YOUR_API_TOKEN" \
--output evidence-package.zipimport requests
API_URL = "https://developers-pulse.coolset.com/api"
HEADERS = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}
def eudr_compliance_workflow(order_id):
# Step 1: Run risk assessment
assessment = requests.post(
f"{API_URL}/compliance/risk-assessments/",
headers=HEADERS,
json={
"identifier": order_id,
"assessment_type": "eudr_order_assessment"
}
).json()
print(f"Risk Level: {assessment['results']['risk_level']}")
# Step 2: If low risk, create DDS
if assessment['results']['risk_level'] == 'low':
dds = requests.post(
f"{API_URL}/eudr/due-diligence-statements/",
headers=HEADERS,
json={
"reference_number": f"DDS-{order_id}",
"operator_name": "Your Company",
"commodity_type": "coffee",
"orders": [order_id]
}
).json()
print(f"DDS Created: {dds['reference_number']}")
return dds
# Step 3: If high risk, flag for manual review
else:
print("High risk - manual review required")
return None
# Run workflow
result = eudr_compliance_workflow("ORDER-12345")| Level | Score | Action Required |
|---|---|---|
| Low | 0.0 - 0.3 | Proceed with DDS |
| Medium | 0.3 - 0.7 | Additional checks required |
| High | 0.7 - 1.0 | Enhanced due diligence |
eudr_order_assessment- Assess entire ordereudr_order_item_assessment- Assess individual itemseudr_origin_assessment- Assess geographic origineudr_supply_chain_assessment- Assess full supply chain
For EUDR compliance, you need:
✅ Commodity type and quantity
✅ Country of production
✅ Geolocation coordinates (min 4 decimal places)
✅ Harvest date
✅ Supplier information
✅ Certificate of origin
Run assessments automatically when orders are created:
@app.route('/webhook/order-created', methods=['POST'])
def handle_order_created():
order = request.json
# Automatically run EUDR assessment
assessment = run_eudr_assessment(order['id'])
if assessment['risk_level'] != 'low':
send_alert_to_compliance_team(order, assessment)
return {'status': 'processed'}Ensure coordinates meet EUDR requirements (4 decimal places = ~11m accuracy):
def validate_geolocation(lat, lon):
# Check decimal precision
lat_precision = len(str(lat).split('.')[-1])
lon_precision = len(str(lon).split('.')[-1])
return lat_precision >= 4 and lon_precision >= 4Download and archive evidence packages regularly:
import schedule
def archive_evidence_monthly():
assessments = get_monthly_assessments()
for assessment in assessments:
package = download_evidence_package(assessment['id'])
store_in_archive(package, assessment['identifier'])
# Run on first day of each month
schedule.every().month.at("00:00").do(archive_evidence_monthly)Use this checklist to ensure EUDR compliance:
- All orders have risk assessments
- Geographic origins are documented
- Geolocations meet precision requirements
- Harvest dates are recorded
- Supplier due diligence completed
- Supporting documents uploaded
- DDS created for compliant orders
- Evidence packages archived
- Non-compliant orders flagged
- Regular compliance audits scheduled
Solution: Request precise coordinates from suppliers upfront
def validate_supplier_data(data):
required_fields = [
'geolocation.latitude',
'geolocation.longitude',
'harvest_date',
'certificate_url'
]
missing = [f for f in required_fields if not data.get(f)]
if missing:
send_data_request_to_supplier(missing)
return False
return TrueSolution: Gather additional evidence and re-assess
def handle_high_risk(assessment):
# Request additional documentation
documents_needed = [
'Certificate of Origin',
'Deforestation-Free Declaration',
'Satellite Imagery',
'Chain of Custody Documentation'
]
request_documents_from_supplier(documents_needed)
# Schedule manual review
create_compliance_task(assessment['id'], 'high_risk_review')This use case demonstrates:
POST /compliance/risk-assessments/- EUDR APIPOST /eudr/trace-orders/- EUDR APIPOST /eudr/due-diligence-statements/- EUDR APIPOST /documents/- EUDR APIPOST /compliance/risk-assessments/{id}/evidence-downloads/- EUDR API