Common Issues
Quick answers to the most frequent integration problems.
Authentication
401 Unauthorized on every request
Cause: Token is missing, expired, or malformed.
Fix:
- Confirm you're sending the header:
Authorization: Bearer <token>(with the wordBearer) - Check whether your token has expired — use
/api/v1/login-extendedto see theexpireAtfield - Re-authenticate with
/api/v1/loginto get a fresh token
Token expires too quickly
Cause: Token TTL is configured server-side.
Fix: Contact your DPD account manager to adjust the token TTL for your account. In the meantime, implement token refresh logic that re-authenticates before expiry.
Shipments
400 Bad Request — validation error
Cause: A required field is missing or fails validation.
Fix: Check the fieldErrors object in the response — it tells you exactly which field failed and why:
{
"fieldErrors": {
"receiver.email": ["REQUIRED_FOR_INTERNATIONAL"],
"receiver.countryCode": ["NOT_SUPPORTED"]
}
}
Common field requirements:
emailis required for all non-CH/LI destinations (except GB)phoneis required for GB destinations (international format:+44...)houseNumberis required for NL destinationsstateCodeis required for US/CA destinations
207 Multi-Status — partial batch failure
Cause: In a batch request some shipments succeeded and others failed.
Fix: Check the failed array in the response for per-item fieldErrors. The success array contains created shipments with their parcel numbers and labels.
Label is empty / not printing
Cause: printOptions.labelFormat mismatch with your printer.
Fix: Set labelFormat explicitly in your request:
"A4"— full A4 sheet (multiple labels per page, uselabelStartPosition1–4)"A6"— thermal label printers
Parcel Shops
Empty results from address search
Cause: No shops found within the default 5 km search radius, or the address could not be resolved.
Fix:
- Try providing both
zipCodeandcity— the API falls back to postal code if the full address cannot be geocoded - Remove service/type filters to widen the search
- Set
hideClosed: falseto include shops that may be temporarily closed
404 Not Found for parcel shop ID
Cause: The shop ID does not exist or is no longer active.
Fix: Re-search by address or coordinates to get current shop IDs. Parcel shop IDs can change when shops close or reopen.
Tracking
404 Not Found for parcel number
Cause: Tracking data is not yet available or the parcel number is incorrect.
Fix:
- Verify the parcel number from the shipment creation response (
success[].parcelNumber) - Allow a few minutes after shipment creation for tracking to become available
- Ensure the parcel number format is correct (e.g.,
05305000123456)
Collection Requests & Pickup Orders
pickupDate rejected
Cause: The date is in the past or incorrectly formatted.
Fix: Use yyyy-MM-dd format and ensure the date is at least tomorrow's date in the European timezone.
General
HTTPS / SSL errors
All API calls must use HTTPS. Self-signed certificates are not accepted in production.
Rate limiting (429 Too Many Requests)
Implement exponential backoff in your application. Consider caching parcel shop data (it changes infrequently) to reduce API calls.
Still stuck?
Contact DPD support and include:
- The
tracingIdfrom the API response (or the full error response body) - The endpoint you called and approximate time of the request
- Your integration environment (dev/staging/production)