Skip to main content

Collection Requests

Schedule a one-time parcel collection from your location. DPD will pick up the parcels on the requested date within a specified time window.

Endpoint: POST /api/v1/collection-requests Auth: Bearer JWT token required


Request

Query parameter: locale (optional) — localise error messages (e.g., de_CH, en_US, fr_CH, it_CH)

Body: List<CollectionRequestDTO>

Fields

FieldTypeLengthRequiredDescription
idLongOptionalRequest identifier for tracking in response
invoicingNumberString1–20MandatoryYour DPD customer billing number
pickupDateString10MandatoryRequested pickup date (yyyy-MM-dd), must be a future date
referenceNumberString0–50OptionalYour internal reference number
noteString0–255OptionalSpecial collection instructions
senderAddressDTOMandatoryAddress where parcels will be collected
receiverAddressDTOMandatoryFinal destination address
requesterAddressDTOOptionalPerson requesting the collection (defaults to receiver)
numberOfParcelsIntegerMandatoryExpected number of parcels (1–999)
weightDoubleOptionalTotal weight of all parcels in grams
serviceCodeString2–10MandatoryDPD service code (e.g., PSD, PSI)
clientSoftwareString0–50OptionalYour application name
clientVersionString0–20OptionalYour application version

Example

curl -X POST "https://label-print-shipments.dpd.ch/api/v1/collection-requests?locale=de_CH" \
-H "Authorization: Bearer <jwt_token>" \
-H "Content-Type: application/json" \
-d '[
{
"invoicingNumber": "12345678",
"pickupDate": "2025-10-31",
"serviceCode": "PSD",
"numberOfParcels": 5,
"weight": 25000.0,
"sender": {
"name": "Sender Company AG",
"countryCode": "CH",
"zipCode": "8000",
"city": "Zürich",
"street": "Industriestrasse 25",
"phone": "+41441234567"
},
"receiver": {
"name": "Receiver GmbH",
"countryCode": "DE",
"zipCode": "10115",
"city": "Berlin",
"street": "Alexanderplatz 1"
}
}
]'

Response

201 Created — all requests created:

{
"tracingId": "TRACE-789",
"success": [
{ "id": 1, "referenceNumber": "CR-20251031-001" }
],
"failed": []
}

207 Multi-Status — partial success:

{
"tracingId": "TRACE-790",
"success": [],
"failed": [
{
"id": 1,
"fieldErrors": {
"pickupDate": ["MUST_BE_FUTURE_DATE"]
}
}
]
}

Status codes:

CodeDescription
201 CreatedAll collection requests created
207 Multi-StatusSome succeeded, some failed
400 Bad RequestValidation error
401 UnauthorizedMissing or invalid token

Notes

  • pickupDate must be a future date; past dates are rejected
  • weight is in grams (e.g., 25000 = 25 kg)
  • Address validation follows the same country-specific rules as Shipments (NL house number, GB phone, non-CH/LI email, etc.)