---
title: "Update a customer DDS for an inbound product"
method: PUT
path: "/public/v2/eudr/customers/customer-dds/{ddsId}"
tags: ["EUDR - Customers - DDS"]
---

# Update a customer DDS for an inbound product

`PUT /public/v2/eudr/customers/customer-dds/{ddsId}`

## Request

- Base URL: `https://api.prewave.com`
- URL: `https://api.prewave.com/public/v2/eudr/customers/customer-dds/{ddsId}`
- Auth: API key in header `X-Auth-Token`
- TypeScript: <https://skmtc.dev/prewave/apis/public-prewave-api/docs/public/v2/eudr/customers/customer-dds/:ddsId/put.ts> (a function with typed inputs; its response is checked against the schema)

Updates an existing customer Due Diligence Statement (DDS) identified by `ddsId`.
The payload must contain all required customer, activity, and product measure fields.

**Use Cases**:
- Update compliance statements
- Modify due diligence information
- Correct DDS data before submission

**Required permission:** `access_public_products` and `UPDATE` on the DDS

## Path parameters

- `ddsId` integer, required

## Request body

- PublicCustomerDDSPayload: Payload for creating or updating a Customer DDS. Contains all required and optional fields for a customer DDS statement, including references and product measures.
  - `eoriNumber` string, required: EORI number of the customer.
  - `customerName` string, required: Name of the customer as stated on the DDS.
  - `customerCity` string, required: City of the customer as stated on the DDS.
  - `customerPostalCode` string, required: Postal code of the customer as stated on the DDS.
  - `customerStreet` string, required: Street of the customer as stated on the DDS.
  - `customerCountryId` integer, required: ID of the customer's home country (see /countries endpoint).
  - `operatorType` 'RepresentativeOperator' | 'Operator' | 'Trader': Public operator type. RepresentativeOperator is the only supported value. Operator and Trader are deprecated and retained only for legacy data.
  - `activityType` 'Import' | 'Export' | 'Domestic' | 'Trade', required: Public activity type on responses and legacy payloads. Trade is deprecated and retained only for legacy data; create-and-submit uses PublicCustomerDDSCreateActivityType instead.
  - `countryOfActivityId` integer, nullable: ID of the country where the economic activity is taking place (see /countries endpoint).
  - `originRequestReferences` PublicDDSReferencePayload: Reference for a DDS statement, including one or more reference labels and the reference type.
    - `reference` string[], required: Reference labels (e.g. purchase order numbers, shipment numbers).
    - `type` 'PurchaseOrder' | 'ShipmentNumber' | 'Other', required: Public product reference type.
  - `netWeightInKg` number, required: Net weight of the product in kg.
  - `quantity` number, nullable: Product quantity (additional info).
  - `unit` string, nullable: Unit of the quantity (e.g. kg, t, m3).

## Response `200`

Customer DDS updated successfully.

- PublicCustomerDDS
  - `id` integer, required: DDS ID
  - `active` boolean, required: Active status
  - `referenceNumber` string, nullable: Reference number
  - `verificationNumber` string, nullable: Verification number
  - `date` string, date-time, required: DDS date
  - `archived` boolean, required: Archived
  - `archiveDate` string, date-time, nullable: Archive date
  - `origins` PublicOrigin[], required: List of DDS origins
    - `id` integer, required: Origin ID
    - `name` string, nullable: Origin name
    - `active` boolean, required: Active status
    - `producedAtStart` string, date-time, nullable: Production start date
    - `producedAtEnd` string, date-time, nullable: Production end date
    - `producer` PublicProducer: Producer of the origin
      - `id` integer, required: Target ID of the producer
      - `name` string, required: Producer name
      - `geo` PublicGeometrySchema: Geometry plot object
        - `type` string, required: Geometry available types: Point, MultiPoint, Polygon, MultiPolygon
        - `coordinates` array[], required: Geometry coordinates
          - array[]: Geometry coordinates
            - number[]: Geometry coordinates
      - `countryId` integer, nullable: Country ID of the producer
    - `country` PublicCountry, required: Country where the economic activity is taking place
      - `id` integer, required: Country ID
      - `name` string, required: Country name
      - `countryCode` string, nullable: Country code in form of ISO 3166-1 alpha-2 code
      - `bounds` PublicGeometrySchema: Geometry plot object
        - `type` string, required: Geometry available types: Point, MultiPoint, Polygon, MultiPolygon
        - `coordinates` array[], required: Geometry coordinates
          - array[]: Geometry coordinates
            - number[]: Geometry coordinates
    - `plot` PublicFeatureCollection, required: Plot geometry
      - `features` PublicFeature[], required
        - `geometry` PublicGeometrySchema, required: Geometry plot object
          - `type` string, required: Geometry available types: Point, MultiPoint, Polygon, MultiPolygon
          - `coordinates` array[], required: Geometry coordinates
            - array[]: Geometry coordinates
              - …
        - `properties` object, required: Value map with available keys: - ProducerName (String) - ProducerCountry (Country code in form of ISO 3166-1 alpha-2 code) - ProductionPlace (String) - Area (Double)
    - `plotAreaHa` number, double, required: Plot area in hectares
    - `dds` PublicProductSupplierDDS: Supplier DDS
      - `id` integer, required: Supplier DDS ID
      - `active` boolean, required: Active status
      - `referenceNumber` string, nullable: Reference number
      - `date` string, date-time, required: DDS date
      - `netWeightInKg` number, required: Net Weight in Kg
      - `archived` boolean, required: Archived
      - `archiveDate` string, date-time, nullable: Archive date
    - `request` PublicMinimalOriginRequest: Origin request references
      - `id` integer, required: Origin request ID
      - `createdAt` string, date-time, required: Creation date of the origin request
      - `status` 'Requested' | 'Delayed' | 'Rejected' | 'Canceled' | 'Answered', required: Filter by origin request status.
      - `references` PublicOriginRequestRef[], required: References date of the origin request
        - `id` integer, required: Request ID
        - `reference` string, required: Reference label
        - `referenceType` 'PurchaseOrder' | 'ShipmentNumber' | 'Other', required: Public product reference type.
    - `pendingProducerDiscoveryRequest` PublicProducerDiscoveryRequest: Pending producer discovery request
      - `id` integer, required: Producer discovery request ID
      - `originId` integer, required: Origin ID
      - `name` string, required: Producer name
      - `targetId` integer, nullable: Producer Target ID
    - `countryRisk` 'Low' | 'Mid' | 'High': Public EUDR risk.
    - `pendingDFRequest` PublicPendingDFRequest: Public pending deforestation request details.
      - `type` 'Basic' | 'Advanced', required: Public deforestation check type.
    - `dfCheck` PublicDFCheck: Result of deforestation check request
      - `checkDate` string, date-time, required: Deforestation check date
      - `primaryForestArea` number, double, required: Available forest area in hectares
      - `deforestedArea` number, double, required: Deforested area in hectares
      - `numberOfAlerts` integer, required: Number of alerts
      - `pictures` string[], required
    - `dfCheckResult` PublicDFCheckResult: Deforestation check result status
      - `status` 'Negligible' | 'NonNegligible' | 'NotRequired' | 'Required', required: Public deforestation status.
      - `outdated` boolean, required: Always false. Retained for backwards compatibility with V1 clients; checks no longer expire.
    - `legalityCheck` PublicOriginLegalityCheck: Legality check result
      - `score` Score
        - `value` integer, required
        - `risk` 'NA' | 'No' | 'Low' | 'Mid' | 'High' | 'Critical', required: Impact level.
      - `scoreAvail` 'None' | 'Peer' | 'Alert' | 'SSA' | 'External', required
      - `status` 'Negligible' | 'NonNegligible' | 'NotRequired' | 'Required', required: Public deforestation status.
    - `weight` number, nullable: Weight, if origin is provided from an origin request with weight
    - `createdAt` string, date-time, required: Creation date of the origin
    - `updatedAt` string, date-time, required: Last update date of the origin
  - `eoriNumber` string, required: EORI number of the customer
  - `customerName` string, required: Name of the customer as stated on the DDS
  - `customerCity` string, required: City of the customer as stated on the DDS
  - `customerPostalCode` string, required: Postal code of the customer as stated on the DDS
  - `customerStreet` string, required: Street of the customer as stated on the DDS
  - `customerCountry` PublicCountry, required: Country where the economic activity is taking place
    - `id` integer, required: Country ID
    - `name` string, required: Country name
    - `countryCode` string, nullable: Country code in form of ISO 3166-1 alpha-2 code
    - `bounds` PublicGeometrySchema: Geometry plot object
      - `type` string, required: Geometry available types: Point, MultiPoint, Polygon, MultiPolygon
      - `coordinates` array[], required: Geometry coordinates
        - array[]: Geometry coordinates
          - number[]: Geometry coordinates
  - `state` 'New' | 'Submitting' | 'Submitted' | 'SubmissionError' | 'Available' | 'Rejected' | 'Cancelled' | 'Withdrawn' | 'Archived' | 'Suspended' | 'Updated' | 'Grouped' | 'Obsolete', required: Public customer DDS state.
  - `operatorType` 'RepresentativeOperator' | 'Operator' | 'Trader', required: Public operator type. RepresentativeOperator is the only supported value. Operator and Trader are deprecated and retained only for legacy data.
  - `activityType` 'Import' | 'Export' | 'Domestic' | 'Trade', required: Public activity type on responses and legacy payloads. Trade is deprecated and retained only for legacy data; create-and-submit uses PublicCustomerDDSCreateActivityType instead.
  - `countryOfActivity` PublicCountry: Country where the economic activity is taking place
    - `id` integer, required: Country ID
    - `name` string, required: Country name
    - `countryCode` string, nullable: Country code in form of ISO 3166-1 alpha-2 code
    - `bounds` PublicGeometrySchema: Geometry plot object
      - `type` string, required: Geometry available types: Point, MultiPoint, Polygon, MultiPolygon
      - `coordinates` array[], required: Geometry coordinates
        - array[]: Geometry coordinates
          - number[]: Geometry coordinates
  - `originRequestReferences` PublicDDSReference: List of DDS references
    - `ddsId` integer, required: Referenced DDS ID
    - `reference` string, required: Reference label
    - `type` 'PurchaseOrder' | 'ShipmentNumber' | 'Other', required: Public product reference type.
  - `productName` string, required: Product name label
  - `productDescription` string, required: Product description label
  - `netWeightInKg` number, required: Net Weight in Kg
  - `quantity` number, nullable: Product quantity (additional info)
  - `unit` string, nullable: Quantity unit
  - `hsCode` string, required: HS code
  - `submissionError` PublicSubmissionError: Submission error details when state is SubmissionError
    - `code` string, required: Error code
    - `detail` string, required: Human readable details about the error
    - `reasons` string[], nullable: Detailed reasons about the error, if any

## Other responses

- `400`: Invalid request payload (e.g. missing required fields, invalid values).
- `403`: 403 Forbidden - Authentication or authorization failure. This status code is returned when: (1) the request lacks valid authentication credentials (missing or invalid X-Auth-Token header), or (2) the authenticated user does not have the required permission to access this resource.
- `404`: DDS not found.
- `429`: 429 Too Many Requests - API rate limit exceeded. The request has been rejected because the rate limit for this endpoint has been exceeded. Default rate limits: GET requests - 100 per 10 seconds, 500 per minute; POST/PUT/PATCH/DELETE requests - 20 per 10 seconds, 100 per minute. For increased access, please contact customer success.
- `500`: 500 Internal Server Error - An unexpected error occurred on the server. The request may or may not have been processed.

---

[API](https://skmtc.dev/prewave/apis/public-prewave-api.md) - [All operations](https://skmtc.dev/prewave/apis/public-prewave-api/llms.txt) - [OpenAPI document](https://skmtc.dev/prewave/apis/public-prewave-api/revisions/8b6e3b3827ca?raw)
