DHL Parcel DE Pickup (Post & Parcel Germany)
v 1.0.3
Division: Post & Parcel Germany, Parcel

Best for:

  • Place free or chargeable pick-up orders via web service.
Region: Germany
Used for: Pickup
Overview

You are on the documentation page of the DHL Parcel DE Pickup API of Post & Parcel Germany. In the following chapters we offer you:

Scope

Customers are enabled to place:

  1. Pickup orders at predefined locations in Germany (pickup costs are included in the parcel price)
  2. Pickup orders at any address in Germany (additional costs per pickup-order and -attempt)

Pickup orders at predefined locations require a corresponding configuration of the locations in the DHL systems - these have to be available in the Post & DHL Business Customer Portal (GKP). Please check all possible pickup locations and information before placing pickup orders.

Pickup orders at any address require a valid billingnumber/accountnumber which is configured in the customers GKP. In case the service "Label" (DHL brings the shipping-label) is used there must be a billingnumber/accountnumber in procedure 08 (DHL Retoure with pickup) configured int the customers GKP.

Prerequisites

To place pickup orders using the API Pickup, the following prerequisites must be fulfilled:

  • a business customer contract with DHL Parcel Germany
  • a user for the GKP with access rights for function "Pickup"
  • Depending on the usecase at least one contractual agreed pickup place or a billingnumber/accountnumber which is configured for the GKP user

You can view which billing number is authorized for order pickups (more specifically which one is authorized for the function "Pickup" in Post & DHL Business Customer Portal) at the Post & DHL Business Customer Portal in the menu "My Files" following the tab "Pickups".

Using the API

Pickup types

Depending on the number and characteristics of parcels and the location where the pickup should take place, different services can be ordered via the pickup API

  1. Parcel pickup at a predefined location
  2. Parcel pickup at any address
Parcel pickup at a predefined location (costs are included in the parcel price)

Requires at least one pickup location for the used customer number (EKP) which is contracted with DHL and configured in the DHL GKP system.

Depending on the number or characteristics of parcels the pickup will take place as

  • Parcel collection on request by the delivery driver (usually up to 10 parcels) 
  • Singular collection as a planned pickup tour (for more than 10 parcels/day or bulky goods)
Parcel collection on request

For customers who do not have a regular (daily) pickup by DHL.

  • Pickup location must be agreed with DHL sales
  • Has to be ordered until 10pm the day before the pickup
  • Possible pickup Monday-Saturday
  • Pickup by the DHL delivery driver in the regular delivery tour
  • Max. 10 parcels/day and location
  • No bulky goods
  • Costs are included in the parcel price
  • Cannot be combined with additional pickup services (e.g. labelprint by DHL)
  • Usually there is a pickup scan per parcel

In case there are more than 10 on demand pickup-orders per day/location, the pickup order is changed to a one-time pickup order.

Singular collection

For customers who do not have a regular (daily) pickup by DHL and want to order a pickup for more than 10 parcels, bulky goods, or who want the pickup for higher volumes in addition to their regular pickup

  • Pickup location is agreed with DHL
  • Pickup orders for the next day  possible Monday to Friday until 12am
  • Execution has to be confirmed by DHL
  • Execution with a separate pickup tour
  • Execution usually possiible mo-fr, Saturday not in all regions
  • Pickup of more than 10 parcels per location/day or bulky shipments. Shipments have to be in wheeled trays, swap bodies or on pallets.
  • Cannot be combined with additional pickup services (e.g. labelprint by DHL)
  • No pickup scan for each parcel

The one time pickup is just a request of a pickup to the DHL transport coordination - a pickup on the desired collection day is not automatically booked. The DHL transport coordination checks the availability and informs the customer via email (to the email address defined in the Post & DHL Business Customer Portal for the location). A further bilateral communication may be required.


Parcel pickup at any location in Germany (individual collection order (paid service))

Requires at least one billingnumber/accountnumber configured for the user in the Post & DHL Business Customer Portal.

  • Pickup orders for the next working day have to be placed until 10 pm 
  • Pickup up to 10 parcels or bulky goods per location/day
  • Pickup possible mo-fr
  • Pickup by the DHL delivery driver
  • Pickup possible at any codeable address in Germany
  • Chargeable, even if the pickup is not successful
  • Additional, chargeable service "labelprint by DHL" possible
    • DHL prints and brings the transportation label
    • In case a pickup is not possible, the transportation label is put in the mailbox
    • A billingnumber/accountnumber in procedure 08 is required to book the service
  • Cancellation for a next-day order possible until 10pm
  • Pickup-scan for all parcels

Adresses

  • Pick-up address: address, at which the shipment shall be picked up
  • Target address (only if label printing is ordered): address the shipment shall be delivered to

Pick-ups cannot be ordered for the following pick-up addresses:

  • large receiver addresses ("Grossempfaenger")
  • Post Offices
  • DHL Packstations
  • DHL Parcel Shops

 

Please note: If a shipment is stored in a DHL Parcel Shop or a Packstation, a new delivery can be ordered via: https://www.dhl.de/nochmal-zustellen


Pickup dates

Individual collection orders and parcel collections on request:

  • can be ordered & cancelled until 10 p.m. for the following working day
  • can be ordered for up to 14 days in advance
  • can be fulfilled Mondays to Saturdays from 8:00 am to 7:00 pm
  • the booking of time windows is not available
  • the pickup-timeframe is announced only on the pickup-day
  • In case an email address is placed in the pickup order, the pickup-timeframe is announced per email on the pickup-day

Singular collections

  • can be ordered Monday to Friday until 12am for the next working day (exception: Saturday)
  • orders for Saturdays have to be placed on Thursday until 12am, in case a pickup is possible on Saturday in the ZIP code area
  • availability is checked by the DHL transport coordination - customer is notified on the result
  • can be ordered for up to 30 days in advance
  • pickup-timeframes are not possible
  • pickup usually in the morning, opening times will be taken into account where possible

 

Hint:

It is possible to put "asap" as pickup day in the API-request. In this case a pickup-order is placed for the next possible day. This day is delivered back in the API-response.


Services

Services are only possible for individual pickup orders at any address

Bulky goods

For the collection of bulky goods, the field "Comment on bulky goods" is a mandatory field and must be filled.

Please note: The definition of bulky goods is listed in the FAQs. Further details on DHL Paket's business customer products and services can be found at: www.dhl.de

 

Label printing

The shipping label can be created by DHL's label printing service. For that, a valid German destination address must also be specified in addition to the collection address.

 

Shipping number/tracking-id

If label printing by DHL was not ordered, the shipment must already have a valid shipping label for successful collection.

If no shipment number is provided when the order is placed, a shipment number from DHL's central number range will automatically be used.

Please note:

  • When ordering pick-ups, always hand over the shipment number of the parcel; this makes it easier to identify the shipment that shall be picked up
  • When using the service "labelprint by DHL", the tracking-number must be from a range provided by DHL and has to be of type Identcode (12 digits tracking-id)

 

Further information and recommendations

  • A DHL product can have several billing numbers or participations, for example, to differentiate between locations, clients, or promotions. We recommend that shop software providers and marketplaces set up several fields for entering billing numbers or participations in these cases.
  • If you, as a marketplace or shop software provider, do not want to connect all DHL products and services via the API, we recommend that you also integrate a direct call link to the Post & DHL Business Customer Portal, via which you can call up the "Pickup" function.
User Guide

The following provides an overview on how to get access to the API.

  • Technical Details on the API calls can be found in "API Specification".
  • Further hints on API usage are given in the sections "Support" and "FAQ".

If you implemented the previous parcel pickup API, please notice the changes under Release Notes.

Get Access

How to register your DHL Parcel DE Pickup API and get your API subscription keys:

  1. Click Get Access Button on top of this page and the create App form will open with the sandbox environment of the API being pre-selected.
  2. If required, change selection to "DHL Parcel DE Pickup API"
  3. When you have completed the form, click the Create App button.
  4. You will now find your App under My Apps.
  5. From the My Apps screen, click on the name of your app.
    The Details screen appears.
  6. If you have access to more than one API, click the name of the relevant API.
    Note: The APIs are listed under the "Credentials" section.
  7. Click the Show link below the asterisks that are hiding the Consumer Key.
    The Consumer Key appears.

Every call to the API requires a consumer key. This key needs to be specified in the request header (DHL-API-Key).

Please note that different keys are required for sandbox respectively production environment. Both can be requested via above procedure and copied from API credentials section.

Alternatively to "get access" you can go to My Apps on the portal website and click the + Create App button:

  • The "Create App" form appears.
  • Complete the Create App form and select the "DHL Parcel DE Pickup API".
    • You will find two entries of the API in the list: one for Sandbox, one for Production use.

Authentication

Sandbox

To create collection orders in the sandbox, you have the option of using our test suite with the following user data:

  • Username: 2222222222_abr_0801
  • PasswordS8PjmLB!s2vrzWV3o
  • Above given username and password must be provided via basic authentication (Basic Auth).

You can download the "Open API Specification" here

To create test collection orders only the following customer details can be used:

  • Billingnumber for individual collection orders: 22222222220801
  • Customernumber for pickup at requests and singular collections: 2222222222

Production

To use the "DHL Parcel DE Pickup API", you will first need an application created including the API in production mode.

In addition, the following access data for the webservice (API) must be specified:

  • User: "User from Post & DHL Business Customer Portal (GKP)".
    (User must be authorized for pickups!)
  • Password: "Password of above user".
  • Your active business customers user and password values must be provided via basic authentication (Basic Auth).

When selecting the respective user, please also consider the duration of the validity of passwords:

  • the password validity of a "user" is" 90 days
  • the password validity of a "system user" is" 365 days

It is not possible to log on to the Post & DHL Business Customer Portal (GKP) with a "system user".

Requirements for production

  • A valid business customer contract with DHL Parcel
  • A valid user for the Post & DHL Business Customer Portal (GKP) with access rights for function "Pickup"
  • Depending on the use case at least one prearranged pickup location or configured billingnumber/accountnumber for the GKP-user 

Please provide the Post & DHL Business Customer Portal (GKP) user name in lower case letters only.

Hints:

  • For pickups at any location: In the GKP you can look up which billingnumbers/accountnumber are available for a user

Req-Prod

 

Please note:

  • Pickup orders can only be placed for German addresses
  • Pickup costs for prearranged locations are included in the parcel price, therefore they have to be contracted in advance
  • Pickup-orders for any location (not prearranged) are billed even if they are not successful  

We recommend:

  • A billingnumber/accountnumber in procedure 08 for pickups at any address. This enables the option to use the service "Labelprint by DHL".
  • A GKP user with role "systemuser" - for such users a password changes is only required once a year (personal user: 3 month)
  • For pickups at prearranged locations: Please check all available pickup locations and the information for these in the GKP. For this a GKP user is required with access rights for "Pickup" and in addition "Settings"

Bus-Cust-Portal

 

Status Codes and Error Codes

The following table lists the possible status codes for the execution information of pick-ups:

Statuscode Description Recommended action
1 Internal error Pick-Up-Order cannot be processed currently. Please contact DHL.
2 Authorization failed Please check Post & DHL Business Customer Portal user and/or password.
3 Invalid request Please check request structure.
4 Missing mandatory information Please complete all mandatory information.
5 Invalid entry Please check order data.
6 Pickup address cannot be routed Please check pickup address via post code search from Deutsche Post Direkt www.postdirekt.de/plzserver for validity.
7 Receiver address cannot be routed Please check receiver address via post code search from Deutsche Post Direkt www.postdirekt.de/plzserver for validity.
8 Number of shipments for pickup date or pickup address exceeded Please adjust the number of shipments to be picked up or the pickup date.
9 The required number of shipments for the day of execution has not been reached. Please choose another pickup date.
10 Pickup date invalid. Please check pickup date.
11 Pickup date after cut-off, in the past or too far in the future. Please choose another pickup date.
12 Pickup date is a bank holiday or pickups cannot be carried out on this day. Please choose another pickup date.
13 Pickup date is a Sunday. Please choose another pickup date.
14 Email address not accepted. Please check the email address for validity.
15 Billing number is missing. Please check the customer configuration for the pickup function in the Post & DHL Business Customer Portal (GKP), at least one billing number is required for this type of order
16 Billing number not allowed. This billing number is not configured for the pickup function in the customer configuration of the Post & DHL Business Customer Portal (GKP).
17 Collection point unknown. Please check the pickup location or request a chargeable pickup.
18 On the pickup date, regular pickup by DHL will be carried out at the pickup location. Please check the pickup date.
19 Pickup order cannot be carried out at the pickup location. Please check the pickup location or request a chargeable pickup.

 

Response Codes

Code

Description

200

OK - Request has been processed successfully

201

Created - Request has been processed successfully and has resulted in one or more new resources being created

400

Bad Request - The request could not be understood by the server due to malformed syntax.

401

Unauthorized - The client could not be authenticated since the request lacks the required HTTP headers or the credentials are just wrong

403

Forbidden - The client has successfully been authenticated but could not be authorized for the particular request

404

Not found

409

Conflict

422

Unprocessable Entity

429

Too Many Requests - The caller has exceeded its request quota.

500

Internal Server Error

503

Service Unavailable

 

 

 

Postman Collection

We recommend using the Postman software to test our APIs. Postman is a collaboration platform for API development and testing. Post & DHL Germany provides you a comprehensive Postman collection for every single API. You can download the complete API collection, import it into your Postman work space and get started quickly on your integration with our APIs.

The following steps must be performed to test the API beforehand:

You must request access to the sandbox environment to obtain an API key (dhl-api-key).
You can find detailed instructions on how to do this under Get Access.

Setting up the Postman Test Collection

  • Download the Postman test collection from the download section.
  • Import the Postman Test Collection (see official documentation of the Postman learning platform)
  • Replace the value of the variable "dhl-api-key" with your personal API key.

Please also see our step-by-step instructions on how to use the Postman Test Collection.

Use Cases

Use Case Overview

  • Pickup Order
  • Delete Order
  • Get order details and status
     

Example Requests

Note: These sample calls cover only the basic operations of the API. Detailed example calls for all products and services can be found in our Postman test suite, further explanation in chapter how to test the API.

PickupOrder

Places a parcel pick up order for a number of parcels.

POST /parcel/de/transportation/pickup/v1/orders?validate=true HTTP/1.1
Host: https:api-sandbox.dhl.com
dhl-api-key: <API Key>
Content-Length: 1380
Content-Type: application/json

{
  "customerDetails": {
    "billingNumber": "22222222220801"
  },
  "pickupLocation": {
    "pickupAddress": {
      "name1": "Deutsche Post DHL Group",
      "name2": "Lieferanteneingang",
      "addressStreet": "Charles-de-Gaulle-Straße",
      "addressHouse": "20",
      "postalCode": "53113",
      "city": "Bonn",
      "country": "DE"
    },
    "businessHours": [
      {
        "timeFrom": "09:00",
        "timeUntil": "12:00"
      },
      {
        "timeFrom": "13:30",
        "timeUntil": "17:30"
      }
    ]
  },
  "contactPerson": {
    "name": "Max Mustermann",
    "phone": "09999 100111820",
    "email": "max@post.de"
  },
  "pickupDetails": {
    "pickupDate": {
      "type": "Date",
      "value": "2099-04-21"
    },
    "emailNotification": "abholstelle@post.de"
  },
  "shipmentDetails": {
    "shipments": [
      {
        "transportationType": "PAKET",
        "size": "M",
        "pickupServices": {
          "printLabel": {
            "receiverAddress": {
              "name1": "Max Mustermann",
              "name2": "z. Hd. Frau Mustermann",
              "addressStreet": "Platz der Deutschen Post",
              "addressHouse": 1,
              "postalCode": "53113",
              "city": "Bonn",
              "country": "DE"
            }
          }
        },
        "customerReference": "987654321"
      }
    ]
  }
}

Delete Order

DELETE /parcel/de/transportation/pickup/v1/orders?orderID=<string> HTTP/1.1
Host: https://api-sandbox.dhl.com
dhl-api-key: <API Key>
Content-Type: application/json
{
  "confirmedCancellations": [
    {
      "orderID": "stringstringstringstringstringst",
      "orderState": "string",
      "message": "string"
    }
  ],
  "failedCancellations": [
    {
      "orderID": "stringstringstringstringstringst",
      "orderState": "string",
      "message": "string"
    }
  ]
}

Get order details and status

GET /parcel/de/transportation/pickup/v1/orders?orderID=<string>&pickupDate=<string>&pickupName1=<string>&pickupStreetName=<string>&pickupHouseNumber=<string>&pickupPostalCode=<string>&pickupCity=<string> HTTP/1.1
Host: https://api-sandbox.dhl.com
dhl-api-key: <API Key>
Content-Type: application/json

[
  {
    "orderDetails": {
      "orderID": "stringstringstringstringstringst",
      "orderState": "string"
    },
    "customerDetails": {
      "accountNumber": "1805893028",
      "billingNumber": "336576686072vv"
    },
    "pickupLocation": {
      "pickupAddress": {
        "name1": "string",
        "name2": "string",
        "addressStreet": "string",
        "addressHouse": "string",
        "postalCode": "string",
        "city": "string",
        "country": "st",
        "state": "string"
      },
      "businessHours": [
        {
          "timeFrom": "77:79",
          "timeUntil": "80:35"
        }
      ]
    },
    "contactPerson": {
      "name": "string",
      "phone": "string",
      "email": "string"
    },
    "pickupDetails": {
      "pickupDate": {
        "value": "8414-21-06",
        "type": "string"
      },
      "emailNotification": "string",
      "totalWeight": {"uom":"kg","value":50},
      "comment": "string"
    },
    "shipmentDetails": {
      "shipments": [
        {
          "shipment": {
            "transportationType": "PAKET",
            "replacement": true,
            "shipmentNumber": "string",
            "size": "S",
            "pickupServices": {
              "bulkyGood": {
                "comment": "string"
              },
              "printLabel": {
                "receiverAddress": {
                  "name1": "string",
                  "name2": "string",
                  "addressStreet": "string",
                  "addressHouse": "string",
                  "postalCode": "string",
                  "city": "string",
                  "country": "st",
                  "state": "string"
                }
              }
            },
            "customerReference": "string"
          },
          "shipmentState": {
            "state": "string",
            "responseTime": "2659-15-24T04:29:11",
            "actualPickupDate": "3175-22-19"
          },
          "orderDate": "6729-62-06T73:61:29"
        }
      ]
    },
    "feedback": "string",
    "pickupTimeFrame": {
      "timeFrom": "60:30",
      "timeUntil": "23:91"
    }
  }
]
FAQs
How many parcel collections on requests are permitted per pick-up location?

A maximum of 10 shipments per day can be ordered per pick-up location.

If more than 10 items are to be collected, you can use the "Singular collection" order type.

What do the sizes S, M, L mean?

The sizes refer to the longest side

  • Up to 30 cm:  S
  • Up to 60 cm:  M
  • Up to 120 cm L
When does a parcel count as bulky goods?

Bulky goods are defined as packages that

  • in cuboid form exceed the package dimensions of 120 x 60 x 60 cm,
  • in roll form weigh more than 5 kg or exceed 120 cm in length or 15 cm in diameter,
  • are neither rectangular nor roll-shaped,
  • have protruding parts or loose straps or
  • have no rigid outer packaging of corrugated board, solid board or paper

Maximum dimensions for bulky goods

  • cuboid shape: up to length 200 cm, up to belt dimension (= length + 2x width + 2x height)   360 cm
What do the codes for the execution status of individual collections mean?

Picked up
10: Collection successful
11: Collection successful (without consignment number)
12: Collection successful (at requested location)
13: Collection successful (at requested location without tracking number)

Not collected
30: Not met
31: No item available for collection
32: Unknown (address, customer)
33: Shipment does not comply with terms and conditions
34: Shipment not sufficiently franked
35: Shipment not ready for dispatch
36: Shipment already posted

Delay
37: Collection to be carried out on the next working day for operational reasons

Support

You can request support in our Help Center. You can raise a ticket that allows you to request direct support from DHL Support. Please describe your enquiry in as much detail as possible and also send us reproducible extracts from the web service communication. We will try to help you with your problem as soon as possible during following times:

IT Customer Support & Integration Parcel

Business Hours: Mo-Fr 8.00 am to 4.00 pm

Legal Terms
Specific Terms for the use of and/or access to the "DHL Parcel DE Pickup API"

To register for the use of DHL Parcel DE Pickup API You and/or the legal entity you are authorized to represent (hereinafter "You"/"Your") need to have an active customer account with Post & DHL Business Customer Portal (hereinafter referred to as "DHL"). An API Productive Key and access details will be provided to You subject to a successful validation of Your credentials by DHL. If You engage an external developer, or other IT services provider to develop Your Application or any other third party to access and/or use the DHL Parcel DE Pickup API on Your behalf, You remain fully liable for any acts or omissions of such Third Parties in connection with the access to and/or usage of the DHL Parcel DE Pickup API.

These Legal Terms do not replace and/or modify the applicable "General Terms and Conditions of DHL Parcel for business customers", available at https://www.dhl.de/en/geschaeftskunden/paket/rund-um-den-versand/agb.html or any other shipment services agreement, which govern Your parcel shipments.

In case You act as a third party software, vendor, marketplace or otherwise as commercial agent on DHL's and/or its affiliates' behalf, i.e. with DHL's and/or its affiliates' consent, You are obliged to refer the customer (i.e. the sender of the shipments) to the applicable terms and conditions for shipment.

You shall use the services and/or data that You receive via the DHL Parcel DE Pickup API only for the legitimate contractual purposes and only in connection with Your or the shipping customers DHL shipments.

The following prerequisites and/or restrictions apply for the usage of and/or access to the DHL Parcel DE Pickup API:

  • Variable billing number
  • User name of the Post & DHL Business Customer Portal (GKP) variable
  • Password variable

Please note the following additional guidance and recommendations:

Above conditions have to be configurable for each participating company (e.g. on a marketplace or within the framework of a shopsoftware) and an appropriate documentation has to be available for customers.

1.0.3
05.Jan.2023

Initial release of the redesigned DHL Parcel DE Pickup API including following changes in compare to the old API:

New Services and Functions:

  • Get available pickup locations for your account by using /locations

Major changes compared to the initial Pickup API on entwickler.dhl.de:

Due to an API modernization and harmonization programm, Post & Parcel APIs becoming more similar to each other.
If you implemented the previous parcel pickup API, please notice the following changes in the new version here:

  • Changes in Requests
    • Renaming of request business objects
      • postCode to postalCode
      • Name3 is cancelled 
      • additional signs in house numbers are cancelled
      • CustomerReference is shortened to 20 characters
      • streetName to addressStreet
      • houseumber to addressHouse
      • countryIso2Code to country
      • totalWeight refactored to Object, Example: {"uom": "kg", "value": 20}
      • receiverAddress to consignee
    • Renaiming of response business objects
      • shipmentNumber to shipmentNo
  • Consolidation of GET Methods