EUDR Audit Trail

The working surface for an EUDR Due Diligence Statement. An audit record is the editable draft you build, refine, and version before filing — everything here happens at /regulations/eudr/audit-trail. When you're satisfied, you submit it (see Due Diligence Statement) and it becomes a filed DDS.

Think of a record as a living dossier: a set of plots, the deforestation and legality assessments behind them, the operator and commodity details, and the operator's decisions (exclusions, justifications, compliance overrides) — all snapshotted into immutable versions and backed by an append-only audit log.

How a record is structured

  • Record — the top-level dossier (:recordId). Carries the operator block, name, and config.
  • Version — an immutable snapshot of the plots + assessments + deforestation metric at the moment it was cut. The newest is the current version; older ones stay readable for audit/diff.
  • Config — operator decisions that shape the package: exclusions, justifications, compliance overrides, suppliers, report data fields.

What you can do here

AreaWhat it's forWhen you'd use it
Get DDS RecordFetch the record, current version, and completenessCheck readiness before submit
Update DDS RecordSet/patch the operator and commodity blocks and the record nameFill in details the fast path left blank
Patch DDS ConfigBulk-edit exclusions and justifications in one callTriage many plots at once
PlotsRead which plots the package will use, which are excluded, and which are newly unaccountedReview and curate the plot set
VersionsRead historic version snapshots and their plotsAudit or diff past submissions
SuppliersPer-DDS supplier rollup + override (pinned to this record)Correct supplier identity for one DDS
Data FieldsProject arbitrary upload columns into the report's per-plot data_fieldsCarry custom attributes into the report
AuthorisationsRecord the operator's "submit on my behalf" acknowledgementRequired before on-behalf-of TRACES submission
Audit LogAppend-only history of every create/edit/submit actionRegulatory audit, change traceability
ReportExport the DDS report (JSON or GeoJSON)Preview the package before filing
ReprocessCut a new version against fresh assessments / a new end_dateSourcing changed and the snapshot is stale
Get Traces OverviewLive TRACES overview alongside the stored valueCheck what TRACES says right now, not just the last sweep
Get Traces StatementThe full as-filed statement TRACES holdsAudit/compare against fm-api's local copy

Typical flow

  1. Create the record (fast path on ingestion, or Create Audit Trail).
  2. Fill in operator + commodity via Update DDS Record.
  3. Curate the plot set — exclude plots that don't belong, attach findings and compliance overrides where needed.
  4. Preview with the Report.
  5. Authorise and submit (see Due Diligence Statement).
  6. Reprocess later if the underlying data changes.

The whole record lifecycle is captured in the Audit Log — exclusions, justifications, version cuts, and submission state transitions are all immutable events you can replay for an auditor.

Required scope: eudr:read for reads, eudr:write for edits. Records are org-scoped — another org's record returns 404.