Meta API Live shipment call and response
Last reviewed: September 2026
Reviewed and validated by the DPD Customer IT team.
Meta API Live shipment call and response
The shipment service is used to generate parcel labels. A request to the shipment service will only succeed after a call to the login service to get a unique token to access the shipment service. The token will be valid 24 hours. Please store it for that time.
For other services and products, choose the corresponding topic in the navigation to the right.
When a ShipmentService request is successful, the system will respond with a Base64 string that can be decoded into a PDF with a label as well as the corresponding 14 digit parcel number.
Please take note that once a live label is created, it needs to be used and the corresponding parcel needs to be given to DPD within the next 48 hours
The example below is a basic call, but you can find all possible parameters and fields in detail on the Swagger page.
Method:
- POST
URL:
Parameters:
- LabelPrintFormat PDF / ZPL
- LabelPaperFormat A6 / A4
- LabelPrinterStartPosition LOWER_LEFT / UPPER_LEFT / LOWER_RIGHT / UPPER_RIGHT
- debug true
Authorization:
- X_DPD_TOKEN Bearer Token from login service (326-digits)
Body:
- Object JSON (raw)
[
{
"shipmentInfos":
{
"productCode": "101"
},
"numberOfParcels": "1",
"sender":
{
"address":
{
"name1": "Sender name 1",
"name2": " Sender name 2",
"country": "BE",
"zipCode": "2800",
"city": "Mechelen",
"street": "Egide Walschaertstraat 20"
}
},
"receiver":
{
"address":
{
"name1": "DPD Hub",
"country": "BE",
"zipCode": "1800",
"city": "Vilvoorde",
"street": "Tyraslaan"
},
"contact":
{
"contactPerson": "Mrs Mdm",
"email": "contact@dpd.be"
},
"comment": "TEST for META API"
},
"parcel":
[
{
"parcelInfos":
{
"weight": "5000"
}
}
]
}
]
Body:
- shipmentID MPSID
- parcelId Labelnumbers
- label – base64Data string converting to PDF or ZPL
Body:
- Object JSON (raw)
[
{
"shipmentInfos":
{
"productCode": "332"
},
"numberOfParcels": "1",
"sender":
{
"address":
{
"name1": "Sender name 1",
"name2": " Sender name 2",
"country": "BE",
"zipCode": "2800",
"city": "Mechelen",
"street": "Egide Walschaertstraat 20"
}
},
"receiver":
{
"address":
{
"name1": "DPD Hub",
"country": "BE",
"zipCode": "1800",
"city": "Vilvoorde",
"street": "Tyraslaan"
},
"contact":
{
"contactPerson": "Mrs Mdm",
"email": "contact@dpd.be"
},
"comment": "TEST for META API"
},
"parcel":
[
{
"parcelInfos":
{
"weight": "5000"
}
}
]
}
]
Body:
- shipmentID MPSID
- parcelId Labelnumbers
- label – base64Data string converting to PDF or ZPL
B2C Home implies the use of a Predict message. This message will notify the receiver that a parcel is underway. You will have to add a messages segment to your call, as shown below.
The messages segment has 3 possible fields:
Body:
- Object JSON (raw)
[
{
"shipmentInfos": {
"productCode": "327"
},
"numberOfParcels": "1",
"sender": {
"address": {
"name1": "Sender name 1",
"name2": "Sender name 2",
"country": "BE",
"zipCode": "2800",
"city": "Mechelen",
"street": "Egide Walschaertstraat 20"
}
},
"receiver": {
"address": {
"name1": "DPD Hub",
"country": "BE",
"zipCode": "1800",
"city": "Vilvoorde",
"street": "Tyraslaan"
},
"contact": {
"contactPerson": "Mrs X",
"email": "test@dpdgroup.com"
},
"comment": "RMP TEST for META API"
},
"parcel": [
{
"parcelInfos": {
"weight": "6000"
},
"messages": [
{
"messageType": "EMAIL",
"messageDestination": "test@dpdgroup.com"
}
],
"senderParcelRefs": [
"P_2022-02-09_04"
]
}
]
}
]
Body:
- shipmentID MPSID
- parcelId Labelnumbers
- label – base64Data string converting to PDF or ZPL
Please note that B2C Shop also needs a messages segment.
Body:
- Object JSON (raw)
[
{
"customerReferenceNumbers": [
"S_2022-02-09_09"
],
"shipmentInfos": {
"productCode": "337"
},
"sender": {
"address": {
"name1": "DPD BE SENDER",
"street": "Egide Walschaertsstraat 20",
"country": "BE",
"zipCode": "2800",
"city": "Mechelen"
}
},
"receiver": {
"pudoId": "BE10002",
"address": {
"name1": "DPD BE RECEIVER",
"street": "Rue de Liege 25",
"country": "BE",
"zipCode": "6180",
"city": "Courcelles"
},
"contact": {
"phone1": "0123456789",
"email": "test@dpdgroup.com",
"contactPerson":"DPD Contact"
}
},
"numberOfParcels": "1",
"parcel": [
{
"parcelInfos": {
"weight": "6000"
},
"messages": [{
"messageType": "SMS",
"messageDestination": "0123456789"
}],
"senderParcelRefs": [
"P_2022-02-09_09"
]
}
]
}
]
Body:
- shipmentID MPSID
- parcelId Labelnumbers
- label – base64Data string converting to PDF or ZPL
A Multi-Parcel Shipment (MPS) allows multiple parcels to be created as part of the same shipment. All parcels belong to the same shipment while each parcel receives its own individual parcel number and label. (e.g. 1/3 | 2/3 | 3/3)
The MPS structure is not limited to a specific service. The applicable service is defined through the productCode in shipmentInfos. The example below uses a B2B predict shipment.
To create an MPS, set numberOfParcels to the total number of parcels in the shipment and provide one object in the parcel array for each physical parcel.
Each parcel can contain its own weight, parcel reference and, where applicable, notification information.
The number of objects provided in the parcel array should correspond to the value specified in numberOfParcels.
- Body: Object JSON (raw)
[
{
"customerReferenceNumbers": [
"MPS-BE-20260917-042"
],
"shipmentInfos": {
"productCode": "101"
},
"sender": {
"address": {
"name1": "Northstar Logistics NV",
"street": "Integration Avenue 42",
"country": "BE",
"zipCode": "2800",
"city": "Mechelen"
},
"contact": {
"phone1": "015000042",
"email": "shipping@example.com",
"contactPerson": "Shipping Desk"
}
},
"receiver": {
"address": {
"name1": "Contoso Distribution",
"street": "Warehouse Lane 7",
"country": "BE",
"zipCode": "6180",
"city": "Courcelles"
},
"contact": {
"phone1": "071000042",
"email": "receiving@example.com",
"contactPerson": "Receiving Desk"
}
},
"numberOfParcels": "3",
"parcel": [
{
"parcelInfos": {
"weight": "2000"
},
"messages": [
{
"messageType": "EMAIL",
"messageDestination": "receiving@example.com",
"messageLanguage": "EN"
}
],
"senderParcelRefs": [
"MPS-42-P01"
]
},
{
"parcelInfos": {
"weight": "2500"
},
"messages": [
{
"messageType": "EMAIL",
"messageDestination": "receiving@example.com",
"messageLanguage": "EN"
}
],
"senderParcelRefs": [
"MPS-42-P02"
]
},
{
"parcelInfos": {
"weight": "1750"
},
"messages": [
{
"messageType": "EMAIL",
"messageDestination": "receiving@example.com",
"messageLanguage": "EN"
}
],
"senderParcelRefs": [
"MPS-42-P03"
]
}
]
}
]
When the request is accepted, the response contains the shipment identifier (shipmentID / MPSID) and the individual parcel identifiers (parcelIds) for the parcels created within the shipment.
numberOfParcels represents the number of physical parcels belonging to the shipment. A corresponding entry must be provided in the parcel array for every parcel.
UK shipments: Multi-Parcel Shipments (MPS) are not supported for shipments to the United Kingdom. Shipments to the UK must be created as single-parcel shipments, with one shipment request per parcel.
By changing the product code and adding the mandatory fields to a standard B2B call, the request changes accordingly.
Please note that for Express 10, 12 and 18, contact details (name and email) become mandatory for the recipient. You can find a full example below.
Body:
[
{
"customerReferenceNumbers":
[
"S_2022-04-29_01"
],
"shipmentInfos":
{
"productCode": "101"
},
"sender":
{
"address":
{
"name1": "DPD BE SENDER",
"street": "Egide Walschaertsstraat 20",
"country": "BE",
"zipCode": "2800",
"city": "Mechelen"
},
"contact":
{
"phone1": "0123456789",
"email": "test@dpdgroup.com",
"contactPerson": "DPD Contact"
}
},
"receiver":
{
"address":
{
"name1": "DPD BE RECEIVER",
"street": "Rue de Liege 25",
"country": "BE",
"zipCode": "6180",
"city": "Courcelles"
},
"contact":
{
"phone1": "0123456789",
"email": "test@dpdgroup.com",
"contactPerson": "DPD Contact"
}
},
"numberOfParcels": "1",
"parcel":
[
{
"parcelInfos":
{
"weight": "2000"
},
"senderParcelRefs":
[
"P_2022-04-29_01"
],
"messages": [
{
"messageType": "EMAIL",
"messageDestination": "test@dpdgroup.com"
}
]
}
]
}
]
The following example demonstrates a valid shipment request for United Kingdom using the Meta API.
It includes all mandatory customs information required to create a shipment to the United kingdom using the Meta API.
errorCode: error_maximal_parcel_count_for_country
errorMessage: Maximal parcel count for GB is 1.
Product: This example uses product code 101, which corresponds to the B2B service.
It demonstrates a valid shipment request for the united Kingdom using this product.
Requirements and business rules may differ for other products or services.
Body:
- Object JSON (raw)
[
{
"shipmentInfos": {
"productCode": "101"
},
"numberOfParcels": "1",
"mpsCompleteDelivery": "s2",
"sender": {
"address": {
"name1": "Sender Company",
"name2": "Logistics Department",
"street": "Example Street 1",
"zipCode": "1000",
"city": "Example City",
"country": "BE"
},
"contact": {
"contactPerson": "John Doe",
"email": "sender@example.com"
},
"legalEntity": {
"businessType": "B",
"eori": "BE123456789000",
"vatNumber": "BE0123456789"
}
},
"receiver": {
"address": {
"name1": "Receiver Company",
"street": "Example Road 10",
"zipCode": "SW1A 1AA",
"city": "London",
"country": "GB"
},
"contact": {
"contactPerson": "Jane Doe",
"email": "receiver@example.com"
},
"legalEntity": {
"businessType": "B",
"eori": "GB123456789000",
"vatNumber": "GB123456789"
}
},
"parcel": [
{
"parcelInfos": {
"weight": "5000"
}
}
],
"international": {
"parcelType": "P",
"customsAmount": {
"amount": 150.00,
"currency": "GBP"
},
"customsAmountEx": {
"amount": 150.00,
"currency": "GBP"
},
"customsTerms": "s06",
"incoTerm": "DAP",
"paymentTerm": "A",
"customsPaper": "A",
"clearanceStatus": "N",
"customsHighLowValue": "M",
"customsInvoice": "INV-0BADC0DE",
"customsInvoiceDates": [
"2025-07-02"
],
"importer": {
"address": {
"name1": "Receiver Company",
"street": "Example Road 10",
"zipCode": "SW1A 1AA",
"city": "London",
"country": "GB"
},
"contact": {
"contactPerson": "Jane Doe",
"email": "receiver@example.com"
},
"vatNumber": "GB123456789",
"eori": "GB123456789000"
},
"shipmentBroker": "",
"exporter": {
"address": {
"name1": "Sender Company",
"street": "Example Street 1",
"zipCode": "1000",
"city": "Example City",
"country": "BE"
},
"contact": {
"contactPerson": "John Doe",
"email": "sender@example.com"
},
"vatNumber": "BE0123456789",
"eori": "BE123456789000"
},
"numberOfArticles": "1",
"destinationCountryRegistration": "",
"exportReason": "s01",
"interInvoiceLines": [
{
"invoicePosition": "1",
"quantityOfItems": "1",
"content": "Electronic Device",
"amountOfPosition": 150.00,
"manufacturedCountry": "CN",
"netWeight": "5000",
"grossWeight": "5000",
"customerProductCode": "PRD001",
"productDescription": "Electronic Device",
"fabricComposition": "",
"importTarifCode": "85183000",
"exportTarifCode": "85183000",
"goodsWebPage": "https://example.com/products/prd001",
"parcelRank": "1"
}
],
"shipmentContent": "Electronic devices"
}
}
]
The following example demonstrates a valid B2C shipment request from Belgium to the United Kingdom using the Meta API. It includes the customs information required to create the shipment.
errorCode: error_maximal_parcel_count_for_country
errorMessage: Maximal parcel count for GB is 1.
Product: This example uses product code 327 for a B2C Normall OR a 328 for a B2C small shipment to the United Kingdom.
Requirements and business rules may differ for other products or services.
Receiver: The receiver is a private individual and is therefore defined with productCode: "327" AND businessType: "P".
Body:
- Object JSON (raw)
[
{
"shipmentInfos": {
"productCode": "327"
},
"numberOfParcels": "1",
"mpsCompleteDelivery": "s2",
"sender": {
"address": {
"name1": "Sender Company",
"name2": "Logistics Department",
"street": "Example Street 1",
"zipCode": "1000",
"city": "Example City",
"country": "BE"
},
"contact": {
"contactPerson": "John Doe",
"email": "sender@example.com",
"phone": "+3212345678"
},
"legalEntity": {
"businessType": "B",
"eori": "BE123456789000",
"vatNumber": "BE0123456789"
}
},
"receiver": {
"address": {
"name1": "Jane Doe",
"street": "Example Road 10",
"zipCode": "SW1A 1AA",
"city": "London",
"country": "GB"
},
"contact": {
"contactPerson": "Jane Doe",
"email": "receiver@example.com",
"phone": "+441234567890"
},
"legalEntity": {
"businessType": "P"
}
},
"parcel": [
{
"parcelInfos": {
"weight": "5000"
},
"reference": "REF-B2C-001",
"messages": [
{
"messageType": "EMAIL",
"messageDestination": "receiver@example.com",
"messageLanguage": "EN"
}
]
}
],
"international": {
"parcelType": "P",
"customsAmount": {
"amount": 65.00,
"currency": "GBP"
},
"customsAmountEx": {
"amount": 65.00,
"currency": "GBP"
},
"customsTerms": "s06",
"incoTerm": "DAP",
"paymentTerm": "A",
"customsPaper": "A",
"clearanceStatus": "N",
"prealertStatus": "S03",
"customsHighLowValue": "M",
"customsInvoice": "INV-B2C-0001",
"customsInvoiceDates": [
"2025-07-02"
],
"importer": {
"address": {
"name1": "Jane Doe",
"street": "Example Road 10",
"zipCode": "SW1A 1AA",
"city": "London",
"country": "GB"
},
"contact": {
"contactPerson": "Jane Doe",
"email": "receiver@example.com",
"phone": "+441234567890"
}
},
"shipmentBroker": "",
"exporter": {
"address": {
"name1": "Sender Company",
"street": "Example Street 1",
"zipCode": "1000",
"city": "Example City",
"country": "BE"
},
"contact": {
"contactPerson": "John Doe",
"email": "sender@example.com",
"phone": "+3212345678"
},
"vatNumber": "BE0123456789",
"eori": "BE123456789000"
},
"numberOfArticles": "1",
"destinationCountryRegistration": "",
"exportReason": "s01",
"interInvoiceLines": [
{
"invoicePosition": "1",
"quantityOfItems": "1",
"content": "Bluetooth Headphones",
"amountOfPosition": 65.00,
"manufacturedCountry": "CN",
"netWeight": "5000",
"grossWeight": "5000",
"customerProductCode": "HP001",
"productDescription": "Wireless Bluetooth Headphones",
"fabricComposition": "",
"importTarifCode": "85183000",
"exportTarifCode": "85183000",
"goodsWebPage": "https://example.com/products/hp001",
"parcelRank": "1"
}
],
"shipmentContent": "Electronic accessories"
}
}
]
Home » Knowledgebase » Meta API » Shipment Service
| Cookie | Duration | Description |
|---|---|---|
| viewed_cookie_policy | 11 months | The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data. |
| cookielawinfo-checkbox-necessary | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary". |
| cookielawinfo-checbox-functional | 11 months | The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional". |
| cookielawinfo-checkbox-performance | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance". |
| cookielawinfo-checbox-analytics | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics". |
| cookielawinfo-checbox-others | 11 months | This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other. |