Independent AI agent for EU Deforestation Regulation compliance, not affiliated with the EU. Scope & disclaimer →
eudr.dev

TRACES NT submission

The legal submission of a Due Diligence Statement happens via the EU's TRACES NT v2 information system, not via eudr.dev. The engine produces the JSON receipt and (via the CLI) the TRACES-shaped XML; the operator submits using their own EU Login credentials.

What TRACES NT v2 expects

The TRACES NT v2 submission API accepts a SOAP envelope with WS-Security UsernameToken-Digest authentication. The service is hosted at tracesnt.ec.europa.eu; the production service path is /tracesnt/ws/EUDRSubmissionServiceV2.

For the canonical wire format you should pull the live WSDL from your TRACES NT acceptance environment and treat that as the source of truth. Public documentation lags the actual service contract. The engine's offline export targets the XML shape currently described in the public ATIBT-hosted spec; flag any drift against the live WSDL when you onboard.

Required fields (per TRACES service contract)

FieldSource on the receiptNotes
Operator identification1_operatorName, EORI, address, role.
Activity typeactivity_type (engine extension)IMPORT / EXPORT / DOMESTIC / TRADE. These categories are a TRACES NT API construct — they predate Reg. (EU) 2025/2650 and are required on every submission.
Commodity HS code(s)2_product.hs_codeAt least HS-6; HS-8 recommended for customs alignment.
Quantity2_product.quantity_kg + supplementary unit
Country of production3_geolocation[].countryISO-3166-1 alpha-2.
Geolocation (GeoJSON)3_geolocation[].plot_geojsonPolygon or point per the rules in geolocation-requirements.
Production time-range3_geolocation[].harvest_windowFree-text ISO 8601 date or interval.
Upstream DDS reference (when applicable)engine extension upstream_dds[]Annex II point 4 was deleted by Reg. 2025/2650, but the reference + verification code are still collected by TRACES outside the numbered Annex II body.

The 25 MB upload limit applies to the entire payload (geometry-heavy submissions hit this quickly. The engine warns at 80 % of the limit).

How to export from a eudr.dev receipt

eudr export-traces path/to/receipt.json --format official --activity IMPORT

produces the XML envelope in the EU IS v2 shape. Use --format soap to wrap it in a SOAP+WS-Security envelope with credentials from EUDR_TRACES_USERNAME + EUDR_TRACES_PASSWORD:

EUDR_TRACES_USERNAME=.. EUDR_TRACES_PASSWORD=.. \
 eudr export-traces receipt.json --format soap --activity IMPORT

The output is ready to POST to the TRACES NT endpoint. The engine itself never POSTs on the operator's behalf. Submission is the operator's regulatory act under their EU Login identity.

What TRACES returns

On successful submission TRACES NT v2 assigns:

Store both on your side. The engine has a slot for them under signature.dds_ref_official so a re-issue of the printable report can show the TRACES reference next to the engine reference.

Submission cadence

Activity types. Practical guidance

Activity typeWhen to use
IMPORTBringing the commodity into the EU customs territory from outside the bloc. The most common case.
EXPORTSending the commodity out of the EU. The exporting operator files.
DOMESTICProduction + first market placement entirely inside one Member State.
TRADECross-EU intracom — moving a covered product from one Member State to another after first-place-on-market.

eudr.dev defaults to IMPORT when the scenario doesn't specify, because that's the most common case in our sample set and the conservative interpretation under the regulation.

See also