Skip to main content

Manifests

Generate a manifest PDF that lists the shipments handed over to DPD for a given invoicing number. Supports traceability for the day's pickup — the file is returned as a PDF attachment and is intended to be printed and kept with the parcels.

EndpointProducesAuth
POST /api/v1/shipments/print-manifestapplication/pdfBearer JWT token required

The endpoint returns shipments owned by the authenticated user only. Filter the result with a date range (fromDate/toDate, applied to importedAt) and/or an explicit list of parcelNumbersat least one of the two filters is required.


Request

Content-Type: application/json

{
"invoicingNumber": "12345678",
"fromDate": "2026-03-25",
"toDate": "2026-04-29",
"parcelNumbers": ["05305000123456", "05305000123457"],
"address": {
"reference": "PICKUP-001"
},
"printSettings": {
"printRecipientReference": true,
"printParcelReference1": true,
"printParcelReference2": true,
"printUserName": true,
"printWeight": true,
"sortOrderForManifest": "CONSIGNEE_ZIP"
}
}
FieldTypeRequiredDescription
invoicingNumberStringMandatoryInvoicing number scoping the manifest
fromDateDate (yyyy-MM-dd)ConditionalInclusive lower bound of importedAt. Required when parcelNumbers is not provided. Must be provided together with toDate
toDateDate (yyyy-MM-dd)ConditionalInclusive upper bound of importedAt. Required when parcelNumbers is not provided. Must be provided together with fromDate
parcelNumbersArray<String>ConditionalRestrict the manifest to specific parcel numbers. Required when no date range is provided
addressObjectOptionalPickup address used to scope the manifest. Only reference is read; all other address fields are ignored. The reference is resolved against the customer configuration. When omitted and the result set spans multiple pickups, the first encountered pickup is used and other shipments are silently dropped
printSettingsObjectMandatoryPrint settings applied to the generated manifest

printSettings fields

FieldTypeRequiredDescription
printRecipientReferenceBooleanOptionalPrint the recipient reference column
printParcelReference1BooleanOptionalPrint parcel reference 1
printParcelReference2BooleanOptionalPrint parcel reference 2
printUserNameBooleanOptionalPrint the user name on the manifest
printWeightBooleanOptionalPrint the parcel weight column
sortOrderForManifestEnumMandatorySort order for shipments on the manifest

sortOrderForManifest values:

ValueDescription
CONSIGNEE_ZIPSort by consignee zip code
CONSIGNEE_COUNTRYSort by consignee country
CONSIGNEE_NAMESort by consignee name
REFERENCE_1Sort by parcel reference 1
PARCEL_NUMBERSort by parcel number

Common use case — today's manifest

The most frequent integration pattern is generating the manifest for shipments imported today, right before the driver pickup. Set fromDate and toDate to today's date (UTC days) and omit parcelNumbers to include everything for that invoicing number on that day:

{
"invoicingNumber": "12345678",
"fromDate": "2026-05-26",
"toDate": "2026-05-26",
"printSettings": {
"printRecipientReference": true,
"printParcelReference1": true,
"printUserName": true,
"printWeight": true,
"sortOrderForManifest": "CONSIGNEE_ZIP"
}
}
TODAY=$(date -u +%F)
curl -X POST "https://label-print-shipments.dpd.ch/api/v1/shipments/print-manifest" \
-H "Authorization: Bearer <jwt_token>" \
-H "Content-Type: application/json" \
-o manifest.pdf \
-d "{
\"invoicingNumber\": \"12345678\",
\"fromDate\": \"$TODAY\",
\"toDate\": \"$TODAY\",
\"printSettings\": {
\"printRecipientReference\": true,
\"printParcelReference1\": true,
\"printUserName\": true,
\"printWeight\": true,
\"sortOrderForManifest\": \"CONSIGNEE_ZIP\"
}
}"

Notes:

  • fromDate/toDate are matched against importedAt in UTC (start-of-day to end-of-day). Shipments imported after midnight UTC the next calendar day in your local zone will not appear.
  • Provide address: {"reference": "PICKUP-001"} to scope to a specific pickup when the user has multiple.

Response

200 OK — manifest generated; body is the PDF stream.

HeaderValue
Content-Typeapplication/pdf
Content-Dispositionattachment; filename="manifest.pdf"
Content-LengthPDF size in bytes

Status codes

CodeDescription
200 OKManifest generated
400 Bad RequestMissing/invalid filter (e.g. only one of fromDate/toDate set, fromDate after toDate, both date range and parcelNumbers empty, missing printSettings, unresolvable address.reference)
401 UnauthorizedMissing or invalid token
404 Not FoundNo shipments match the filter, or none match the requested pickup

Example

curl -X POST "https://label-print-shipments.dpd.ch/api/v1/shipments/print-manifest" \
-H "Authorization: Bearer <jwt_token>" \
-H "Content-Type: application/json" \
-o manifest.pdf \
-d '{
"invoicingNumber": "12345678",
"fromDate": "2026-03-25",
"toDate": "2026-04-29",
"parcelNumbers": ["05305000123456", "05305000123457"],
"address": {
"reference": "PICKUP-001"
},
"printSettings": {
"printRecipientReference": true,
"printParcelReference1": true,
"printParcelReference2": true,
"printUserName": true,
"printWeight": true,
"sortOrderForManifest": "CONSIGNEE_ZIP"
}
}'