# EUDR Compliance Use Case

Learn how to use Coolset APIs to meet EU Deforestation Regulation requirements.

## Overview

The EU Deforestation Regulation (EUDR) requires companies to prove that imported commodities don't contribute to deforestation. Coolset's EUDR API automates compliance workflows.

## Compliance Workflow


```mermaid
graph LR
    A[Import Order] --> B[Run Risk Assessment]
    B --> C{Risk Level}
    C -->|Low| D[Create DDS]
    C -->|High| E[Gather Evidence]
    E --> F[Upload Documents]
    F --> B
    D --> G[Submit to Authorities]
```

## Step 1: Create Risk Assessment

First, assess the EUDR risk for your order:


```bash
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:**


```json
{
  "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"
}
```

## Step 2: Trace Orders

Link orders to geographic origins:


```bash
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
    }
  }'
```

## Step 3: Create Due Diligence Statement

If risk is acceptable, create a DDS:


```bash
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]
  }'
```

## Step 4: Upload Supporting Documents

Add evidence to support your DDS:


```bash
# 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)
```

## Step 5: Download Evidence Package

Package all evidence for audit:


```bash
curl -X POST https://developers-pulse.coolset.com/api/compliance/risk-assessments/789/evidence-downloads/ \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  --output evidence-package.zip
```

## Complete Example: Python


```python
import 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")
```

## Key Concepts

### Risk Levels

| 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 |


### Assessment Types

- `eudr_order_assessment` - Assess entire order
- `eudr_order_item_assessment` - Assess individual items
- `eudr_origin_assessment` - Assess geographic origin
- `eudr_supply_chain_assessment` - Assess full supply chain


### Required Information

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

## Best Practices

### 1. Automate Risk Assessments

Run assessments automatically when orders are created:


```python
@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'}
```

### 2. Track Geolocation Accuracy

Ensure coordinates meet EUDR requirements (4 decimal places = ~11m accuracy):


```python
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 >= 4
```

### 3. Maintain Evidence Packages

Download and archive evidence packages regularly:


```python
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)
```

## Compliance Checklist

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


## Common Issues

### Issue: Insufficient Geolocation Data

**Solution**: Request precise coordinates from suppliers upfront


```python
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 True
```

### Issue: High Risk Assessment

**Solution**: Gather additional evidence and re-assess


```python
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')
```

## API Endpoints Used

This use case demonstrates:

- `POST /compliance/risk-assessments/` - [Compliance API](/compliance-api#operation/compliance_risk-assessments_create)
- `POST /eudr/trace-orders/` - [Supply Chain API](/supply-chain-api#operation/eudr_trace-orders_create)
- `POST /eudr/due-diligence-statements/` - [Supply Chain API](/supply-chain-api#operation/eudr_due-diligence-statements_create)
- `POST /documents/` - [Data API](/data-api#operation/documents_create)
- `POST /compliance/risk-assessments/{id}/evidence-downloads/` - [Compliance API](/compliance-api#operation/compliance_risk-assessments_evidence-downloads_create)


## Next Steps

- [PPWR Compliance →](/use-cases/ppwr-compliance)
- [Supply Chain Management →](/use-cases/supply-chain-management)
- [Compliance API Reference →](/compliance-api)
- [Supply Chain API Reference →](/supply-chain-api)
- [Data API Reference →](/data-api)
- [Authentication Guide →](/getting-started/authentication)