Skip to main content
Once you have generated a Due Diligence Statement, the next step in the EUDR compliance lifecycle is to transmit it to the EU’s TRACES NT clearance infrastructure. This endpoint initiates the TRACES NT handshake using your Vault-secured credentials, submits the XML payload for official processing, and returns an official EU reference number you can use to track the declaration’s clearance status. Listen for the dds.submitted webhook to confirm the payload has been accepted into the TRACES NT queue, and the dds.validated or dds.rejected webhook for the final outcome.

Endpoint

POST /api/v1/enterprise/eudr/declarations/dds/{referenceId}/submit

Path Parameters

referenceId
string
required
The unique reference identifier of the DDS you wish to submit to TRACES NT. This is the referenceId returned when you retrieved the finalized DDS payload. The DDS must be in GENERATED status. Attempting to submit a DDS that is already SUBMITTED or REVOKED will return a 409 Conflict error.

Response Fields

success
boolean
Indicates whether the TRACES NT handshake and submission completed successfully.
tracesReferenceNumber
string
The official TRACES NT submission reference number assigned upon successful enqueueing. Present this reference to customs authorities or border inspection posts as proof of filing.
verificationNumber
string
A secondary verification number returned by TRACES NT for cross-referencing the submission in the EU clearance system.
status
string
The updated DDS lifecycle status returned by TRACES NT. Will reflect SUBMITTED upon a successful call to this endpoint.
message
string
A human-readable message from TRACES NT describing the outcome of the submission attempt.
submittedAt
string
ISO 8601 timestamp recording when the TRACES NT handshake was completed and the payload entered the processing queue.
hederaTransactionId
string
The Hedera consensus transaction ID anchoring the submission event on the DLT for immutable audit evidence.

Code Examples

import agribackup
from agribackup.rest import ApiException

configuration = agribackup.Configuration(host="https://live.agribackup.com/api/v1")
configuration.api_key['ApiKeyAuth'] = 'sk_live_YOUR_API_KEY'

with agribackup.ApiClient(configuration) as api_client:
    try:
        declarations_api = agribackup.EnterpriseDeclarationsApi(api_client)

        reference_id = "DDS-AB12CD34"
        response = declarations_api.submit_dds(reference_id=reference_id)

        print("Success:", response.success)
        print("TRACES reference number:", response.traces_reference_number)
        print("Status:", response.status)
        print("Submitted at:", response.submitted_at)

    except ApiException as e:
        print("Exception when calling EnterpriseDeclarationsApi: %s\n" % e)
import { AgriBackupClient } from '@agribackup/sdk';

const client = new AgriBackupClient({
  apiKey: 'sk_live_YOUR_API_KEY',
  baseUrl: 'https://live.agribackup.com/api/v1'
});

async function submitDds() {
  try {
    const referenceId = 'DDS-AB12CD34';
    const response = await client.declarations.submitDds(referenceId);

    console.log('Success:', response.success);
    console.log('TRACES reference number:', response.tracesReferenceNumber);
    console.log('Status:', response.status);
    console.log('Submitted at:', response.submittedAt);
  } catch (error) {
    console.error('Error submitting DDS:', error.message);
  }
}

submitDds();
curl --request POST \
  --url https://live.agribackup.com/api/v1/enterprise/eudr/declarations/dds/DDS-AB12CD34/submit \
  --header 'X-API-Key: sk_live_YOUR_API_KEY'

Example Response

{
  "success": true,
  "tracesReferenceNumber": "TRACES-2026-EU-00441",
  "verificationNumber": "VRF-2026-00441",
  "status": "SUBMITTED",
  "message": "DDS successfully submitted to TRACES NT",
  "submittedAt": "2026-07-15T10:05:33Z",
  "hederaTransactionId": "0.0.12345@1234567890.000000000"
}
Submission to TRACES NT is a one-way operation that cannot be undone through re-submission. If the TRACES NT system returns a validation rejection (indicated by the dds.rejected webhook), you must revoke the statement and generate a corrected DDS before resubmitting.
TRACES NT validation is asynchronous. After receiving a successful response from this endpoint, monitor your registered webhook endpoint for the dds.validated or dds.rejected event. Full validation typically completes within minutes but may take up to 24 hours during peak periods.