DPD Parcel - ordering

The following is a guide to use Ordering integration from DPD Parcel on the Viya platform.

Service levels

The API at DHL Parcel automatically detects which product to use based on the destination country, weight of the parcel and if the receiver is a business entity or not. If you want to use that automatic detection, you can use the ECOMMERCE service level reference. This is the preferred way to use the DHL Parcel API.

Following services are available, simplified when using automatic detection:

DHL ServiceDescriptionAutomatic dection trigger
DHL For youB2C Service within the BeneluxserviceLevelReference =ECOMMERCE
receiver.countryCode = NL, BE, LU
Receiver is not a business: serviceOptions.residentialDelivery = true
DHL Parcel ConnectB2C Service within Europe (excl Benelux)serviceLevelReference =ECOMMERCE
receiver.countryCode not NL, BE, LU
Receiver is not a business: serviceOptions.residentialDelivery = true
DHL EuroplusB2B service within Europe (incl Benelux)serviceLevelReference =ECOMMERCE
receiver.countryCode not NL, BE, LU
Receiver is a business: serviceOptions.residentialDelivery = false or empty

If there is a need to overwrite the automatic detection, specific serviceLevelReference can be used. Please note: if an unsupported combination is choosen: the user will receive an error and has to re-try it with different combination.

Overwrite services can be done by using the serviceLevelReference field.
The following products are supported:

DHL ProductDescriptionserviceLevelReferenceserviceLevelReference
for return shipments
DHL PARCEL CONNECTFor B2C shipments to countries:
DHL PARCEL CONNECTFor B2C shipments to countries:
DFYDHL For You For B2C shipments to countries: NL, BEDFY-B2CDFY-RETURN
EUROPLUSFor B2B parcel shipments to countries:
EUROPLUS PALLET INTFor B2B pallet shipments (50kg+) to countries:

If one of the overwrite serviceLevelReference is used and in the shipment it is not indicated if the receiver is a business location (there is no serviceOptions.residentialDelivery specified), the ‘isBusiness’ indicator for the receiver address will be aligned with the specific service in the message towards DHL parcel. For instance for a serviceLevelReference = CON we will send to DHL that the receiver is NOT a business address if serviceOptions.residentialDelivery is not specified.

In short: When using the overwrite servicelevelReference there is no need to specify the serviceOptions.residentialDelivery field.

The applied DHL product is returned after ordering, as additionalKeyValues.dhlProduct in the response.


Create return shipments for products:

  • DHL For You
  • DHL Parcel Connect
  • DHL Europlus

The product definition is based on the service levels explained above.

Create a return label by:

  • serviceOptions.returns = true
  • serviceOptions.returns.pickupPolicy = prl (means “Print return label” at the shipper side, the return label is printed at the shipper’s location and included in the outbound shipment. The customer that wants to return the goods needs to arrange pickup/dropoff at DHL service point or DHL Parcelshop.)


  1. The “No label” option where the return label is printed at the DHL Parcelshop based on a QR code is not implemented.
  2. The option where a return label is generated together with the outbound label is not implemented.

Parcel shop

For delivery to a parcel shop:

  • Pass the DHL Parcelshop id (eg 8004-NL-600402) in the addresses.dropOff.carrierAssignedAddressId field.
  • Make sure to have the addresses.receiver.contactName populated

Package types

The integration does not validate package type codes but it does categorize the package type based on the weight and dimensions of the parcel based on DHL Parcel’s API response for a given shipto country & postalcode.

Typical types that are used:

  • XSMALL: 0-2kg
  • SMALL: 0-23kg
  • MEDIUM: 23-31kg
  • LARGE: 31-50kg
  • PALLET: All above 50kg

Some maximum dimensions apply but we transmit the actual dimensions to DHL Parcel which did not (yet) result into booking errors if the dimensions are larger. It might provide operational issues at the pickup or delivery point if maximum dimensions are exceeded.

Note: If you encounter scenarios where size limits do pose operational or technical issues: please reach out to our viya.me team.


Following options are implemented

DHL OptionDescriptionTrigger
BOUWDelivery to construction siteserviceOptions.constructionSite = true
COD_CASHCash on delivery. Payment method cashserviceOptions.cashOnDelivery.value > 0
serviceOptions.cashOnDelivery.type= cash
COD_CHECKCash on delivery. Payment method checkserviceOptions.cashOnDelivery.value > 0
serviceOptions.cashOnDelivery.type= cheque
DOORDelivery to the address of the recipientNot implemented
EAExtra AssuranceNot implemented, see INS for insurance
EVEEvening deliverytimeWindows.delivery.start >= 18:00
EXPExpresserNot implemented
EXWEx Works. The recipient pays for the transportation from factory to destinationincoterm= EXW
HHold for collectionserviceOptions.holdForPickup = true
HANDTSignature on deliveryserviceOptions.signatureForDelivery is one of: consigneeOnly, indirect, adult
addresses.dropOff.carrierAssignedAddressId is empty
HANDTPSSignature on delivery at parcel shopserviceOptions.signatureForDelivery is one of: consigneeOnly, indirect, adult
addresses.dropOff.carrierAssignedAddressId is populated
INSAll risk insurancesum of handlingUnits.serviceOptions.insuredValue > 0
NBBNo neighbor deliveryserviceOptions.allowDeliveryToNeighbour = false
PSDelivery to the specified DHL Parcelshop or DHL Parcelstationaddresses.dropOff.carrierAssignedAddressId is populated
RECAPAdditional proof of deliveryserviceOptions.scannedPodRequested = true
PERS_NOTEEmail to the receiver (for MDP Business app only)serviceOptions.preAdviceDelivery.useEmail = true
PRINTLESSGenerates a printless label/return label with QR codeNot implemented
REFERENCEReference on labelConfigure the additional reference in ordering
REFERENCE2Extra reference labelConfigure the additional reference in ordering
ADD_RETURN_LABELInclude extra label for return shipmentNot implemented
SSaturday deliverytimeWindows.delivery.onlySaturday = true
SSNUndisclosed senderaddresses.neutralSender is populated
BPMailbox deliveryall handlingUnits are: <= 2kg, <= 38x26x23cm
receiver.CountryCode in NL, BE
NO_TRACK_TRACENo track and trace for shipmentNot implemented