DHL eCommerce EU (eConnect)
v 1.1.81
Division: DHL eCommerce Solutions

Best for:

  • Shipping, tracking & returning of DHL Parcel Connect
  • Implementing modularized customer solutions within Europe & into Europe
  • Sending cross-border shipments within Europe with DHL Parcel Connect
  • Sending cross-border returns within Europe with DHL Parcel Return Connect
  • Sending cross-border shipments into rest of world from Europe (excl. DE) with DHL Parcel International
Region: Europe
Used for: Shipping, Tracking
Overview

The eConnect API Gateway is issued by DHL eCommerce. It is the one stop solution for large customers of DHL eCommerce to send outbound shipments, retrieve labels, access track and trace data and create return shipments. It covers the DHL products Parcel Connect, Parcel Return Connect and Parcel International.

Users of the eConnect API can:

Send shipment data

Generate label

Track & Trace

Create Returns

 

Icon 1

 

 

Icon 2

 

 

Icon 4

 

Icon 3

Create shipments incl all product features

e.g. integration into online shops, logistics software etc.

Receive ready-to-print labels

i.e. the API provides compliant labels in different sizes/ formats

Retrieve track & trace information

Access track and trace information on account or piece level

Generate return shipments incl. labels

returns can be dropped-off by recipients in 27 European countries

Next to the API, the eConnect shipping tools offer other options for customer integration. The different options can be chosen or combined depending on the customer's preferences. The available channels are:

  1. eConnect API
  2. eConnect Partner
  3. eConnect Portal
  4. eConnect Client
  5. eConnect Plugins

Contact your DHL representative for your tailored shipping solution.

Scope

The eConnect API covers the essential DHL cross-border parcel products for shipments within Europe and beyond:Parcel Connect Coverage

  • DHL Parcel Connect: the best choice for cross-border eCommerce senders focusing on B2C. DHL Parcel Connect ships via the Connect network into 28 parcel destinations in Europe using a network-wide parcel product standard with harmonized features (e. g. label, dimensions, weights, etc.).
    • Weight: Up to 31.5kg
    • Dimension: Maximum 120 x 60 x 60cm
    • Fast transit times: typically ranging between 1-3 days(depending on origin/destination country)
    • For customers in all DHL Parcel Europe countries
    • Delivery in all DHL Parcel Europe and partner countries
    • End-to-End transparency through track & trace including pre-delivery notification
    • Saturday and delivery on preferred day possible
    • Direct delivery to Service Points
    • Additional services available (e.g. cash on delivery, bulky goods)
  • DHL Parcel Return Connect: the product offers a comprehensive return solution from 27 DHL Parcel Connect destinations. Return senders can access approx. 70 thousand ServicePoints across Europe for return drop-off. (see http://psf.dhl.com)
  • DHL Parcel International: Complementary offering to cover worldwide destinations outside the DHL Parcel Connect network via postal standard (incl. customs destinations).

Please see below an overview of our recommended products per country:

Country

Outbound Product

Return Product

Austria

Parcel Connect

Return Connect

Belgium

Parcel Connect

Return Connect

Bulgaria

Parcel Connect

Return Connect

Croatia

Parcel Connect

Return Connect

Cyprus

Parcel Connect

Return Connect

Czech Republic

Parcel Connect

Return Connect

Denmark

Parcel Connect

Return Connect

Estonia

Parcel Connect

Return Connect

Finland

Parcel Connect

Return Connect

France

Parcel Connect

Return Connect

Germany

Parcel Connect

Return Connect

Greece

Parcel Connect

Return Connect

Hungary

Parcel Connect

Return Connect

Ireland

Parcel Connect

Return Connect

Italy

Parcel Connect

Return Connect

Latvia

Parcel Connect

Return Connect

Lithuania

Parcel Connect

Return Connect

Luxembourg

Parcel Connect

Return Connect

Netherlands

Parcel Connect

Return Connect

Norway

Parcel International

Not available

Poland

Parcel Connect

Return Connect

Portugal

Parcel Connect

Return Connect

Romania

Parcel Connect

Return Connect

Slovakia

Parcel Connect

Return Connect

Slovenia

Parcel Connect

Return Connect

Spain

Parcel Connect

Return Connect

Sweden

Parcel Connect

Return Connect

United Kingdom

Parcel International

Not available

Rest of World

Parcel International

Not available

Feel free to check out our website for more detailed product information.  For further information on the functionalities, please visit Use Cases.

In case you are a customer based in Germany, please check out our German portfolio at the DHL Entwicklerportal.

Example Use Cases

Example 1: user sends shipment data to DHL and receives a label in return

The eConnect API allows the user to send shipment data for Parcel Connect, Parcel Connect Return and Parcel International shipments to DHL. The data needs to be send in JSON format, following the request specification according to this API portal documentation. If requested the API will return the respective label in the desired format (see label section).

Example 2: user searches for shipment status via track & trace

The eConnect API offers a full track and trace functionality for the shipments send by each integrated customer or partner. It is possible to request the status information on singular shipment or on account level.

Please visit our Use Case section for a full list of possible use cases.

User Guide

Get Access

For onboarding, you need to follow this process guided by the DHL API team:

  1. Contact DHL to align use case and requirements
  2. Apply for access to sand box environment
  3. Implement your API solution (see use cases)
  4. Seek approval from DHL (for data and label)
  5. Retrieve access to production environment

To contact the DHL API team, please use this contact form.

 

    Using the API

    To get access to the API, you will receive a Client ID and a password; please use the contact form to apply for these (including your company name, industry and contact details (incl. phone number and email address)).            

    The API provides OAuth 2.0 Access Token with various authorization scopes.

    The “Get Access Token” API call provides an OAuth 2.0 Bearer token with authorization scope, assigned to your client id. It grants you an access to the CCC APIs.

    The API operation is secured by HTTP Basic authentication, therefore you have to provide 'client_id' and 'client_secret' as an username and password, when calling the API. Credentials will be provided to you via secured channel.

     

    Environments

    The addressable API base URL/URI environments are:  

    Environment Description
    https://api.sandbox.dhl.com Sandbox environment
    https://api.dhl.com Production environment

    The Sandbox environment can be used for testing freely. Only the production environment will trigger underlying processes, e.g. billing, operational procedures.

     

    Information for integrators

    The DHL Europe eCS API differentiates between customers and integrators. If you are an integrator, you may retrieve permission to operate the API on behalf of an assigned customer. For administrative reasons, shipments are always assigned to a dedicated customer. API users with status “integrator” cannot generate shipments themselves, unless they additionally have a customer account.

    The customer/integrator configuration is performed by DHL, please contact via the contact form

     

    Rate Limits

    Rate limits protect the DHL infrastructure from suspicious requests that exceed defined thresholds.

    Should you exceed your rate limit you will receive a HTTP status code within the API response that will indicate this.

    In addition to the rate limit a so called “spike arrest” protects our API Platform from potential outages caused by a very large volume of requests sent in a short time span (minutes or seconds). This will be indicated by a different HTTP status code.

    Functionalities

    This API offers various functionalities that all support you in managing your DHL eCommerce Solutions cross-border parcel shipments. This page gives an overview and introduction to the available functionalitites. A detailed developer's documentation is available in the "Reference Docs" section (see here).

    Shipment Data

    • It is mandatory for the sender to send shipment data for each individual piece/parcel. Please see below explanations for details on the requested shipment parameter, in addition please check our "request specification", "use cases" and the "refernce docs" section on this website.
    • Along with the recipient and sender address data, several additional shipment details  need to be defined for each shipment:
      • Product type: DHL Parcel Connect, DHL Parcel Return Connect or DHL Parcel International
      • Sender address data: Use these fields to define the shipper address on the label. The field “customerIdentfication” must contain the senders DHL customer account number. Please note: For Connect return shipments the “customerIdentification” needs to be included as an attribute for the sender as well, not for the receiver.
      • Recipient address data: Use these fields to insert the consignee address
      • Product features: Depending on the selected product type, various product features are to be selected in the shipment data:
        • Mandatory features
          • Delivery type: The delivery type needs to be chosen i.e. default for doorstep, parcelshop, parcelstation or postOffice.
          • Gross weight: It is mandatory to provide the gross weight in kg.
          • Direct Injection (DI): DI allows the customer to inject high parcel volumes directly into a defined DHL gateway. For technical reasons, the DI info needs to be handed over by the user for every shipment. DHL will provide the required details for each customer-case (please contact via our contact form).
        • Optional features
          • Size: It is optional, but recommended, to delivery size information for shipments in cm.
          • Cash on delivery (COD): When choosing “Cash-on-delivery”, a shipment is handed over to the recipient against payment. Financial details are required in this case.
          • Bulky: Shipments outside the standard dimensions or with any property that prevents automated sorting need to be marked as bulky by the customer. For details see product information (above).
          • Additional insurance: Depending on your contract with DHL, the customer can order additional insurances
          • Go Green: Depending on your agreement with DHL, the customer may ship Go Green shipments

     

    Label

    • The API can generate high-resolution labels based each individual shipment data and provide the label files within the API response.
    • Labels are available for all covered products, i.e. DHL Parcel Connect, DHL Parcel Return Connect and DHL Parcel International.
    • Currently the following formats and resolutions are available:

     

    PDF

    ZPL 200dpi

    ZPL 300dpi

    Long Label (10 cm x 21 cm)

    Short Label (10 cm x 15 cm)

    Long Label (10 cm x 21 cm)

    Short Label (10 cm x 15 cm)

    Long Label (10 cm x 21 cm)

    Short Label (10 cm x 15 cm)

    DHL Parcel Connect

    yes

    yes

    yes

    yes

    no

    no

    DHL Parcel Return Connect

    yes

    yes

    yes

    yes

    no

    no

    DHL Parcel International

    yes

    yes

    yes

    no

    no

    no

    • In case of generating DHL Parcel Return labels, it is recommended to additionally generate return instructions. Return instructions contain information in all local languages and shall help return senders (i.e. consumer) to correctly handle the return shipment. To receive our return instructions, please request them via our contact form.
    • When creating shipments into customs areas please refer to below chapter "Customs Data".
    • Please see below an example DHL Parcel Connect label for shipment delivered to a door-step address as well as the respective return label. Examples for further use cases can be found here.

     

    Label

     

    Label 2

    • Please note: below illustration contains max field lenghts for the addressing fields on the label. Additionally single fields might be changed for layout reasons due to character span/size during PDF creation.
      label incl field length

    Addressing to ServicePoints

    • With DHL Parcel Connect it is possible, to directly address shipments to ServicePoints or Lockers in the destination country, instead of a doorstep address.
      • The service is available for destinations: AT, BE, BG,CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, HR, HU, LT, LV, NL, PL, PT, RO, SE, SI, SK
      • The service is not available for destinations: IE, IT, LU, NO
    • The DHL Location Finder provides up-to-date address data of all available DHL and Partner locations, which can be used for direct addressing of shipments.
    • It contains location information of ServicePoints, Postoffices and Lockers, including additional information such as opening hours, holiday closing times and services offered.
    • The DHL Location Finder API offers to retrieve locations in an area near a specific address (within a radius of 25km).
    • Please find more information on how to access and integrate the DHL Location Finder API here.
    • After retrieving location address data via the DHL Location Finder API, the address data needs to be entered into the shipment data for the particular shipment.
    • Apply the below mapping table to correctly map the location data fields from the DHL Location Finder API to the shipment data fields of the DHL eCommerce Solutions API - needed for DHL Parcel Connect shipments directly addressed to a ServicePoint, PostOffice or Locker.
    Mapping

    Overview of field mappings

    Content

    DHL Location Finder API

    DHL eCommerce Solutions API

    Example / Comment

    Name of Recipient

    n.a.

    CPAN/ addresses/ recipient/ name

    e.g. Hans Schmitz

    Type of Location

    locations/ location/

     type

    CPAN/ addresses/ recipient/ type

    e.g. Servicepoint

    Postnummer
    (only for DE Packstation)

    n.a.

    CPAN/ addresses/ recipient/ customerIdentification

    e.g. 1234567
    (only needed for DE Packstation)

    Name of ServicePoint
    (not needed for Lockers)

    locations/ name

    CPAN/ addresses/ recipient/ additional name

    e.g. B+B Tabakwaren

    Keyword of ServicePoint/ Locker

    locations/ location/

    keyword

    CPAN/ addresses/ recipient/ street1

    e.g. Postfiliale

    ID of ServicePoint/ Locker

    locations/ location/

    keywordId

    CPAN/ addresses/ recipient/ street1Nr

    e.g. 443

    Street name of the Servicepoint

    locations/ place/ address/ streetAddress

    CPAN/ addresses/ recipient/ street2

    e.g. Monckebergstr. 7

    ZIP Code of the Servicepoint

    locations/ place/ address/ postalCode

    CPAN/ addresses/  recipient/ postcode

    e.g. 20095

    City of the ServicePoint

    locations/ place/ address/ addressLocality

    CPAN/ addresses/ recipient/ city

    e.g. Hamburg

    Country of the ServicePoint

    locations/ place/ address/ countryCode

    CPAN/ addresses/ recipient/ country

    e.g. DE

    Additional information & tipps for using both API's

    • When requesting locations from the DHL Location Finder API, please make sure to only select locations offering the following "service types" in the Location Finder API:
      • "parcel:pick-up" - these locations are available for any direct addressing of parcels
      • "parcel: pick-up-unregistered" - these locations are available for any direct addressing of parcels
      • "parcel: pick-up-registered" - these locations are available for direct addressing of parcels only, if a destination specific recipient-registration number is transmitted in the shipment data (e.g. for German Parcelstations a "Postnumber" is mandatory)
    • When requesting locations from the DHL Location Finder API, please make sure to map the "type" of the selected location from the Location Finder API correctly to the DHL eCommerce Solutions API:

     

    DHL Location Finder API

    <type>

    DHL eCommerce Solutions API  <type>

    servicepoint

    parcelshop

    locker

    parcelstation

    postoffice

    postOffice

     

    Track & Trace

    • The API offers calls to request track & trace information for individual customers’ shipments. Integrators can access information on their assigned customers’ shipments as well.
    • Available options via API:
      • Track & trace shipment details of a specific shipment ID
      • Track & trace all shipments of a given customer ID and injection date(s)
    • Next to the API channel, customers shipments can be monitored as well via public websites, e.g.: logistics.dhl
    • Senders may distribute a standardized link to their recipients, to be personalized with an individual shipping ID. The link gives direct access to tracking information: https://www.dhl.com/de-en/home/tracking/tracking-parcel.html?submit=1&tracking-id=[your-shipment-ID]
    • The following Track & Trace statuses are available via the Track & Trace API-service:
    Segment Status Detailed Status
    Data DATA_RECEIVED PRENOTIFICATION_RECEIVED
    Origin UNDERWAY ARRIVED_FACILITY
    CLEARANCE_RELEASE
    DEPART_FACILITY
    GATEWAY_ARRIVED
    GATEWAY_DEPARTED
    PARCEL_COLLECTED_AT_PARCELSHOP_BY_COURIER
    PARCEL_PICKED_UP_AT_ACCESSPOINT
    PARCEL_PICKED_UP_AT_PARCELSHOP
    PARCEL_PICKED_UP_AT_PARCELSTATION
    PARCEL_SCANNED_FOR_COLLECTION_AT_ACCESSPOINT_BY_COURIER
    PARCEL_SCANNED_FOR_COLLECTION_AT_PARCELSHOP_BY_COURIER
    PARCEL_SCANNED_FOR_COLLECTION_AT_PARCELSTATION_BY_COURIER
    PARCEL_SORTED_AT_GATEWAY
    PARCEL_SORTED_AT_HUB
    PICKED_UP
    SHIPMENT_ACCEPTANCE
    SHIPMENT_ACCEPTANCE_DEPOT
    SHIPMENT_ACCEPTANCE_PARCELSHOP
    SHIPMENT_ACCEPTANCE_PARCELSTATION
    CUSTOMS ENTRY_SUBMITTED
    PROBLEM FORCE_MAJEURE
    SHIPMENT_STOPPED
    Transit UNDERWAY GATEWAY_ARRIVED
    GATEWAY_DEPARTED
    Destination CUSTOMS SHIPMENT_INSPECTION
    UNDERWAY ARRIVED_AT_DELIVERY_FACILITY
    ARRIVED_AT_INBOUND_GATEWAY
    ARRIVED_AT_TERMINAL
    CLEARANCE_RELEASE
    DEPART_FACILITY
    DEPOT_SCAN
    PARCEL_ARRIVED_AT_LOCAL_DEPOT
    PARCEL_NO_DATA
    PARCEL_SORTED_AT_HUB
    SCAN_OK_GATEWAY
    IN_DELIVERY DELIVERED_AT_ACCESSPOINT
    DELIVERED_AT_DEPOT
    DELIVERED_AT_PARCELSHOP
    DELIVERED_AT_PARCELSTATION
    DELIVERED_AT_PREFERED_NEIGHBOURS
    DELIVERED_AT_SAFEPLACE
    LOAD_VEHICLE
    NOTIFICATION_OF_TIME_FRAME_HAS_BEEN_SENT
    INTERVENTION INTERVENTION
    INTERVENTION_DELIVERY_ADDRESS_CHANGED_INTO_PARCELSHOP
    INTERVENTION_DELIVERY_ADDRESS_CHANGED_INTO_PARCELSTATION
    INTERVENTION_RECEIVER_REQUESTS_DELIVERY_AT_ACCESSPOINT
    INTERVENTION_RECEIVER_REQUESTS_DELIVERY_AT_NEIGHBOURS
    INTERVENTION_RECEIVER_REQUESTS_DELIVERY_AT_PARCELSHOP
    INTERVENTION_RECEIVER_REQUESTS_DELIVERY_AT_PARCELSTATION
    INTERVENTION_RECEIVER_REQUESTS_DELIVERY_AT_PREFERRED_NEIGHBOURS
    INTERVENTION_RECEIVER_REQUESTS_DELIVERY_AT_SAFE_PLACE
    EXCEPTION PARCEL_RELABELED_FOR_RETURN_TO_SHIPPER
    RELABELED
    DELIVERED COLLECTED_AT_ACCESSPOINT
    COLLECTED_AT_PARCELSHOP
    COLLECTED_AT_PARCELSTATION
    DELIVERED
    DELIVERED_AT_NEIGHBOURS
    MONEY_TRANFERED_TO_SENDER
    PROBLEM ACCESSPOINT_FULL_REDELIVER
    ADDRESS_UNKNOWN
    BAD_ADDRESS
    CLOSED_ON_ARRIVAL
    DAMAGE_RETURN
    DELIVERY_DATA_INCORRECT
    PARCELSTATION_DELIVERY_UNSUCCESFULL_RETURN
    FORCE_MAJEURE
    HELD_IN_STORAGE_CLOSED
    HELD_IN_STORAGE_DAMAGED
    INVALID_SHIPMENT_SPECIFICATION_RETURN
    MISCODE
    MISROUTED_RETURN_TO_SHIPPER
    MISSORT
    NO_MONEY_REDELIVER
    NO_MONEY_RETURN
    NOT_HOME
    SHIPMENT_TOO_LARGE_FOR_ACCESSPOINT
    SHIPMENT_TOO_LARGE_FOR_PARCELSHOP
    SHIPMENT_TOO_LARGE_FOR_PARCELSTATION
    PARCELSHOP_FULL_REDELIVER
    PARCELSTATION_NOT_AVAILABLE_REDELIVER_TO_PARCELSHOP
    RECEIVER_MOVED_OR_UNKNOWN
    REDELIVER_SAME_ADDRESS
    REFUSED_BY_RECEIVER
    RELABELED
    REPACKED_DELIVERY_DAMAGED
    RETURNED_NOT_COLLECTED
    RETURNED_TO_SHIPPER
    STORAGE_PERIOD_ENDED_AT_ACCESSPOINT
    STORAGE_PERIOD_ENDED_AT_PARCELSHOP
    STORAGE_PERIOD_ENDED_AT_PARCELSTATION
    UNCONTROLLABLE_CLEARANCE_DELAY

     

    Customs data

    • The product DHL Parcel International also supports shipment to countries liable to customs. In this case, it is mandatory send a “cCustoms” request in addition to the cPAN. The cCustoms call requires information about the content of the parcel (including its value and purpose). It will forward the electronic information to the customs entities and return a CN23 document.
    • The CN23 document will be returned together with the shipment label (see explanations on "Label" above). It is issed in PDF format for printout and attachment to the parcel.
    • Overview of use cases:
      • If you send to a non-customs destination, you don’t need to send cCustoms. If you do anyways, it will be ignored.
      • If you send to a customs destination or region, cCustoms is mandatory. If you don’t send it, your shipments will be rejected.
      • If either one of CPAN and/or cCustoms is incorrect, your shipments will be rejected.
    Use Cases

    Use Case Overview

    Below you can find an overview of the different use cases for which you need to request different functionalities of the API. In the next section you can find a short description as well as an example request and an example response for each use case.

    No.

    Use Case

    Access

    Shipment data
    (cPAN)

    Location finder

    T&T

    Customs data
    (cCustoms)

    1

    DHL Parcel Connect shipment delivered to door

    yes

    yes

     

    optional

     

    2

    DHL Parcel Connect shipment delivered to Service Point (Option to include location finder)

    yes

    yes

    optional

    optional

     

    3

    DHL Parcel Connect shipment delivered to locker in Germany

    yes

    yes

    optional

    optional

     

    4

    DHL Parcel Return Connect shipment

    yes

    yes

     

    optional

     

    5

    DHL Parcel International shipment

    yes

    yes

     

    optional

     

    6

    Parcel International shipment including customs

    yes

    yes

     

    optional

    yes

    7

    Track and trace your shipments

    yes

     

     

    yes

     

    8

    Brexit Parcel Connect to UK

    yes

     

     

    yes

     

    9

    Customer events

    yes

    yes

     

     

     

    10 Parcel Return International yes yes      

    Example Requests & Responses

     

    Use Case 1: DHL Parcel Connect shipment delivered to door

    This request enables users to inject their shipment data for door-step deliveries for DHL Parcel Connect shipments. If requested, the API will return the respective label in the desired format (PDF or ZPL).

    Key success factors:

    • The recipient address must be the door address of the recipient
    • It is recommended to include e-mail and/or phone number to enable recipient service (e.g. re-routing)

     

    Request

    POST /ccc/send-cpan?generateLabel=true&labelFormat=pdf HTTP/1.1
    Host: api-sandbox.dhl.com
    Content-Type: application/json
    Authorization: Bearer AJx0yDAMVnBlcBsSeTwuPpkytYz78fzgUG20aBrTyMBPeP347pVDrz
    
    {
        "dataElement": {
            "parcelOriginOrganization": "AT",
            "parcelDestinationOrganization": "GB",
            "general": {
                "product": "ParcelEurope.parcelconnect",
                "routingCode": ""
            },
            "cPAN": {
                "addresses": {
                    "sender": {
                        "type": "default",
                        "firstName": "Good Weather GmbH",
                        "name": "c/o DHL Parcel Europe",
                        "street1": "Robert-Bosch-Str.",
                        "street1Nr": "750", 
                        "postcode": "93055", 
                        "city": "Regensburg",
                        "country": "DE", 
                        "referenceNr": "REF45678901234567890123456789012345", 
                        "customerIdentification": "YOUR_ID_HERE" 
                        "customerAccountNr1": "YOUR_ID_HERE" 
                    },
                    "recipient": {
                        "type": "doorstep",
                        "firstName": "John",
                        "name": "Doe",
                        "additionalName": "Rain Inc.",
                        "mobileNr": "+441234567890",
                        "email": "john.doe@example.com",
                        "street1": "Ossulston St.",
                        "street1Nr": "174", 
                        "postcode": "NW1 1DN",
                        "city": "London",
                        "country": "GB"
                    }
                },
                "features": {
                    "physical": {
                        "grossWeight": "1.0"
                    }
                },
                "directInjection": true, 
                "directInjectionDetails": {  
                    "directInjectionCountry": "DE", 
                    "directInjectionGatewayCity": "Regensburg",
                    "directInjectionGatewayPostcode": "93055" 
                }
            }
        }
    }
    

     

    Response

    Depending on how the request was specified, the response may contain label in the specified format (e.g. pdf) or not (see example below). The response will also contain a status code as well as a status message both indicating whether the request could be processed successfully or not (see examples below).

     

    Use Case 1

     

    Success Response

    HTTP/1.1 200
    Content-Type: application/json;charset=UTF-8
    shipmentId: JVGL003101234567801234
    
    
    {
       "response":{
    	"status":"200",
    	"timestamp":"2017-03-21T06:29:55",
    	"customerId":"AAAA",
    	"sessionId":"f10953e8-2e73-41f4-ab4e-818ea4ac76ad",
    	"statusCode":"OK",
    	"statusMessage":"cPAN has been processed successfully"
    	}
    }

     

    Error Response

    HTTP/1.1 400
    Content-Type: application/json;charset=UTF-8
    shipmentId: JVGL003101234567801234
    
    
    {
       "error":{
    	"status":"400",
    	"timestamp":"2017-03-21T06:29:55",
    	"sessionId":"f10953e8-2e73-41f4-ab4e-818ea4ac76ad",
    	"statusCode":"ERROR",
    	"statusMessage":"Unexpected input provided"
    	}
    }

     

    Use Case 2: DHL Parcel Connect shipment delivered to Service Point (Option to include location finder - see below)

    This request enables users to inject their shipment data for ServicePoint deliveries for DHL Parcel Connect shipments. The sender needs to know the desired ServicePoint address. If requested, the API will return the respective label in the desired format (PDF or ZPL).

    Key success factors:

    • It is mandatory for ServicePoint shipments to include the following parameters in the address: name of recipient, name of service point, keyword, servicepointID, street, housenumber, ZIP code, city, country
    • Only for directly addressed shipments to German ServicePoints (aka „Postfiliale“ – See Use Case 4) the attributes which contain the street and house number of the shops are optional.
    • It is recommended to include phone numbers for SMS notification to create higher pick up rates

    In addition you have the option to use a location address instead of a doorstep address, by accessing our DHL ServicePoint database (i.e. DHL Location Finder API). If the location data of the ServicePoint is not known by the recipient already, the recipient can request this data using the API. When sending the shipment data to DHL, the retrieved location information needs to  be integrated into the respective shipment data (cPAN), by using the mapping table shown below:

    Key success factors:

    • Webshop layout with integrated DHL Location Finder lets the recipient choose the preferred ServicePoint
    • Shipments to LU: Please not that there is an exception for shipments to LU as address data needs to be entered differently. In case you want to send shipments to lockers in LU, please reach out to us for further instructions

    Request

    POST /ccc/send-cpan?generateLabel=true&labelFormat=pdf HTTP/1.1
    
    {
        "dataElement": {
            "parcelOriginOrganization": "AT",
            "parcelDestinationOrganization": "DE",
            "general": {
                "product": "ParcelEurope.parcelconnect",
                "routingCode": ""
            },
            "cPAN": {
                "addresses": {
                    "sender": {
                        "type": "default",
                        "firstName": "Good Weather GmbH",
                        "name": "c/o DHL Parcel Europe",
                        "street1": "Robert-Bosch-Str.",
                        "street1Nr": "750", 
                        "postcode": "93055", 
                        "city": "Regensburg",
                        "country": "DE", 
                        "referenceNr": "REF45678901234567890123456789012345", 
                        "customerIdentification": "YOUR_ID_HERE" 
                        "customerAccountNr1": "YOUR_ID_HERE" 
                    },
                    "recipient": {
                        "type": "parcelshop",
                        "firstName": "John",
                        "name": "Doe",
                        "additionalName": "Rain Inc.",
                        "mobileNr": "+491234567890",
                        "email": "john.doe@example.com",
                        "street1": "DHL Paketshop",
                        "street1Nr": "414", 
                        "postcode": "53111",
                        "city": "Bonn",
                        "country": "DE",
                        "customerIdentification": ""
                    }
                },
                "features": {
                    "physical": {
                        "grossWeight": "1.0"
                    }
                },
                "directInjection": true, 
                "directInjectionDetails": {  
                    "directInjectionCountry": "DE", 
                    "directInjectionGatewayCity": "Regensburg",
                    "directInjectionGatewayPostcode": "93055" 
                }
            }
        }
    }
    

     

    Response

    Depending on how the request was specified, the response may contain label in the specified format (e.g. pdf) or not (see example below). The response will also contain a status code as well as a status message both indicating whether the request could be processed successfully or not (see examples below).

    Use Case 2

     

    Success Response

    HTTP/1.1 200
    Content-Type: application/json;charset=UTF-8
    shipmentId: JVGL003101234567801234
    
    
    {
       "response":{
    	"status":"200",
    	"timestamp":"2017-03-21T06:29:55",
    	"customerId":"AAAA",
    	"sessionId":"f10953e8-2e73-41f4-ab4e-818ea4ac76ad",
    	"statusCode":"OK",
    	"statusMessage":"cPAN has been processed successfully"
    	}
    }

     

    Error Response

    HTTP/1.1 400
    Content-Type: application/json;charset=UTF-8
    shipmentId: JVGL003101234567801234
    
    
    {
       "error":{
    	"status":"400",
    	"timestamp":"2017-03-21T06:29:55",
    	"sessionId":"f10953e8-2e73-41f4-ab4e-818ea4ac76ad",
    	"statusCode":"ERROR",
    	"statusMessage":"Unexpected input provided"
    	}
    }

     

    Use Case 3: DHL Parcel Connect shipment delivered to locker in Germany

    This request enables the user to inject their shipment data for shipments delivered to lockers in Germany.  To make use of DHL lockers in Germany, customers need to provide an identification number for each recipient (“PostNummer”), as German recipients need to be registered to receive locker shipments. The PostNummer needs to be inserted into the “customerIdentification” field of the recipient. If requested, the API will return the respective label in the desired format (PDF or ZPL).

    Key success factors:

    • The attributes which contain the street and house number of the shops are optional.
    • It is recommended to include phone numbers for SMS notification to create higher pick up rates
    • Shipments to LU: Please note that there is an exception for shipments going to LU as address data needs to be entered differently. In case you want to send shipments to lockers in LU, please reach out to us for further instructions.

     

    Request

    POST /ccc/send-cpan?generateLabel=true&labelFormat=pdf HTTP/1.1
    
    {
        "dataElement": {
            "parcelOriginOrganization": "AT",
            "parcelDestinationOrganization": "DE",
            "general": {
                "product": "ParcelEurope.parcelconnect",
                "routingCode": ""
            },
            "cPAN": {
                "addresses": {
                    "sender": {
                        "type": "default",
                        "firstName": "Good Weather GmbH",
                        "name": "c/o DHL Parcel Europe",
                        "street1": "Robert-Bosch-Str.",
                        "street1Nr": "750", 
                        "postcode": "93055", 
                        "city": "Regensburg",
                        "country": "DE", 
                        "referenceNr": "REF45678901234567890123456789012345", 
                        "customerIdentification": "YOUR_ID_HERE" 
                        "customerAccountNr1": "YOUR_ID_HERE" 
                    },
                    "recipient": {
                        "type": "parcelstation",
                        "firstName": "John",
                        "name": "Doe",
                        "additionalName": "Rain Inc.",
                        "mobileNr": "+491234567890",
                        "email": "john.doe@example.com",
                        "street1": "DHL Packstation",
                        "street1Nr": "144", 
                        "postcode": "53175",
                        "city": "Bonn",
                        "country": "DE",
                        "customerIdentification": "1234567890"
                    }
                },
                "features": {
                    "physical": {
                        "grossWeight": "1.0"
                    }
                },
                "directInjection": true, 
                "directInjectionDetails": {  
                    "directInjectionCountry": "DE", 
                    "directInjectionGatewayCity": "Regensburg",
                    "directInjectionGatewayPostcode": "93055" 
                }
            }
        }
    }
    

     

    Response

    Depending on how the request was specified, the response may contain label in the specified format (e.g. pdf) or not (see example below). The response will also contain a status code as well as a status message both indicating whether the request could be processed successfully or not (see examples below).

    Use Case 3

     

    Success Response

    HTTP/1.1 200
    Content-Type: application/json;charset=UTF-8
    shipmentId: JVGL003101234567801234
    
    
    {
       "response":{
    	"status":"200",
    	"timestamp":"2017-03-21T06:29:55",
    	"customerId":"AAAA",
    	"sessionId":"f10953e8-2e73-41f4-ab4e-818ea4ac76ad",
    	"statusCode":"OK",
    	"statusMessage":"cPAN has been processed successfully"
    	}
    }

     

    Error Response

    HTTP/1.1 400
    Content-Type: application/json;charset=UTF-8
    shipmentId: JVGL003101234567801234
    
    
    {
       "error":{
    	"status":"400",
    	"timestamp":"2017-03-21T06:29:55",
    	"sessionId":"f10953e8-2e73-41f4-ab4e-818ea4ac76ad",
    	"statusCode":"ERROR",
    	"statusMessage":"Unexpected input provided"
    	}
    }

     

    Use Case 4: DHL Parcel Return Connect shipment

    The following request enables the user to send shipment data for a DHL Parcel Return Connect Shipment. If requested, the API will return the respective label in the desired format (PDF or ZPL).

    Key success factors:

    • The Return product needs to be dropped-off by the customer in a local ServicePoint or PostOffice in the country of residency.
    • DHL Return Connect offers a public website to search for drop-off locations all accross Europe: https://finder.dhlparcel.com/
    • Make sure to inform your recipients (i.e. consumers) about where they can search for possible drop off points for returns in their region, e.g. by distributing this link (https://finder.dhlparcel.com/)
    • It is recommended to additionally generate return instructions. Return instructions contain handling information to help return senders (i.e. consumers) to correctly handle the return shipment. The instructions are issued by DHL in all local European languages and can be requested  via our contact form (add link).
    Request
    POST /ccc/send-cpan?generateLabel=true&labelFormat=pdf HTTP/1.1
    Host: api-sandbox.dhl.com
    Content-Type: application/json
    Authorization: Bearer AJx0yDAMVnBlcBsSeTwuPpkytYz78fzgUG20aBrTyMBPeP347pVDrz
    
    {
        "dataElement": {
            "parcelOriginOrganization": "GB",
            "parcelDestinationOrganization": "DE",
            "general": {
                "product": "ParcelEurope.return.network"
            },
            "cPAN": {
                "addresses": {
                    "sender": {
                        "type": "default",
                        "firstName": "John",
                        "name": "Doe",
                        "additionalName": "Rain Inc.",
                        "mobileNr": "+441234567890",
                        "email": "john.doe@example.com",
                        "street1": "Ossulston St.",
                        "street1Nr": "174", 
                        "postcode": "NW1 1DN",
                        "city": "London",
                        "country": "GB",
                        "referenceNr": "REF45678901234567890123456789012345", 
                        "customerIdentification": "YOUR_ID_HERE" 
                        "customerAccountNr1": "YOUR_ID_HERE" 
                    },
                    "recipient": {
                        "type": "doorstep",
                        "firstName": "",
                        "name": "c/o DHL Parcel Europe",
                        "additionalName": "Good Weather GmbH",
                        "street1": "Robert-Bosch-Str.",
                        "street1Nr": "750", 
                        "postcode": "93055", 
                        "city": "Regensburg",
                        "country": "DE" 
                    }
                },
                "features": {
                    "physical": {
                        "grossWeight": "1.0"
                    }
                }
            }
        }
    }
    

     

    Response

    Depending on how the request was specified, the response may contain label in the specified format (e.g. pdf) or not (see example below). The response will also contain a status code as well as a status message both indicating whether the request could be processed successfully or not (see examples below).

    Use Case 4

     

    Success Response

    HTTP/1.1 200
    Content-Type: application/json;charset=UTF-8
    shipmentId: JVGL003101234567801234
    
    
    {
       "response":{
    	"status":"200",
    	"timestamp":"2017-03-21T06:29:55",
    	"customerId":"AAAA",
    	"sessionId":"f10953e8-2e73-41f4-ab4e-818ea4ac76ad",
    	"statusCode":"OK",
    	"statusMessage":"cPAN has been processed successfully"
    	}
    }

     

    Error Response

    HTTP/1.1 400
    Content-Type: application/json;charset=UTF-8
    shipmentId: JVGL003101234567801234
    
    
    {
       "error":{
    	"status":"400",
    	"timestamp":"2017-03-21T06:29:55",
    	"sessionId":"f10953e8-2e73-41f4-ab4e-818ea4ac76ad",
    	"statusCode":"ERROR",
    	"statusMessage":"Unexpected input provided"
    	}
    }

     

    Use Case 5: DHL Parcel International shipment

    This request enables the user to inject their shipment data for DHL Parcel International shipments. If requested, the API will return the respective label in the desired format (PDF or ZPL).

    Key success factors:

    • Please note: If “customsDocCount” in your response is 1 or more, you need to additionally send a “cCustoms” request as this lane requires custom clearance (Please see Use Case 6).

     

    Request

    POST /ccc/send-cpan?generateLabel=true&labelFormat=pdf HTTP/1.1
    Host: api-sandbox.dhl.com
    Content-Type: application/json
    Authorization: Bearer 47gbtqPg5cEOfmv2FXGWNe4lFyHrwM3jZfurBGGCCdex7SRXXbAYrV
    
    {
        "dataElement": {
            "parcelOriginOrganization": "NL",
            "parcelDestinationOrganization": "US",
            "general": {
                "product": "ParcelEurope.parcelinternational"
            },
            "cPAN": {
                "addresses": {
                    "sender": {
                        "type": "default",
                        "firstName": "",
                        "name": "Good Weather GmbH",
                        "street1": "Beulingstraat",
                        "street1Nr": "17a", 
                        "postcode": "1017 BA", 
                        "city": "Amsterdam",
                        "country": "NL", 
                        "referenceNr": "REF45678901234567890123456789012345", 
                        "customerIdentification": "6266404794", 
                        "customerAccountNr1": "YOUR_ID_HERE" 
                    },
                    "recipient": {
                        "type": "doorstep",
                        "firstName": "John",
                        "name": "Doe",
                        "additionalName": "Rain Inc.",
                        "mobileNr": "+1234567890",
                        "email": "john.doe@example.com",
                        "street1": "Long Street",
                        "street1Nr": "16", 
                        "postcode": "NJ 07305",
                        "city": "New York City",
                        "country": "US"
                    }
                },
                "features": {
                    "physical": {
                        "grossWeight": "1.0"
                    },
                    "undeliverableInstruction": "Return"
                }
            }
        }
    }

     

    Response

    Depending on how the request was specified, the response may contain label in the specified format (e.g. pdf) or not (see example below). The response will also contain a status code as well as a status message both indicating whether the request could be processed successfully or not (see examples below).

    Label 6

     

    Success Response

    HTTP/1.1 200
    Content-Type: application/json;charset=UTF-8
    shipmentId: JVGL003101234567801234
    
    
    {
       "response":{
    	"status":"200",
    	"timestamp":"2017-03-21T06:29:55",
    	"customerId":"AAAA",
    	"sessionId":"f10953e8-2e73-41f4-ab4e-818ea4ac76ad",
    	"statusCode":"OK",
    	"statusMessage":"cPAN has been processed successfully"
    	}
    }

     

    Error Response

    HTTP/1.1 400
    Content-Type: application/json;charset=UTF-8
    shipmentId: JVGL003101234567801234
    
    
    {
       "error":{
    	"status":"400",
    	"timestamp":"2017-03-21T06:29:55",
    	"sessionId":"f10953e8-2e73-41f4-ab4e-818ea4ac76ad",
    	"statusCode":"ERROR",
    	"statusMessage":"Unexpected input provided"
    	}
    }

     

    Use Case 6: DHL Parcel International shipment including customs

    This request enables the user to inject their shipment data for DHL Parcel International shipments, if custom clearance is required. In this case, it is mandatory send a “cCustoms” request after sending the cPAN (See Use Case 6 for a cPAN example). The cCustoms call requires information about the content of the parcel (including its value and purpose). It will forward the electronic information to the customs entities and on demand return a CN23 document as PDF for printout and attachment to the parcel.

    Key success factors:

    • Always send cCustoms if you send to a customs destination or region as it is mandatory. If not provided, the shipment will be rejected.
    • Make sure that both cPAN and cCustoms are correct; otherwise the system will reject the shipment.
    • CPAN request needs to be send before cCustoms and the parcelIdentifier is mandatory here
    • When sending in your cPAN, “customsDocCount” in the response informs you about the amount of CN23 printouts required for that specific shipment.
    Request
    POST ccc/send-cCustoms?generateCustomsDocument=true HTTP/1.1
    Host: api-sandbox.dhl.com
    Content-Type: application/json
    Authorization: Bearer AJx0yDAMVnBlcBsSeTwuPpkytYz78fzgUG20aBrTyMBPeP347pVDrz
    
    {
        "dataElement": {
            "version": "0200",
            "parcelOriginOrganization": "NL",
            "parcelDestinationOrganization": "US",
            "general": {
                "parcelIdentifier": "CY657904000DE",
                "timestamp": "2020-12-04T14:13:58.798000",
                "product": "ParcelEurope.parcelinternational",
                "routingCode": "2LJP5300002+71000000",
                "customerIdentification": "5012345678"
            },
            "cCustoms": {
                "CustomsIDs": {
                    "sender": [{
                        "idType": "VAT",
                        "identifier": "789012"
                    }]
                },
                "shippingFee": {
                    "currency": "EUR",
                    "value": "5.50"
                },
                "goodsDescription": {
                    "general": {
                        "goodsClassification": "ProductSample",
                        "currency": "EUR"
                    },
                    "item": [{
                            "description": "Tea, green",
                            "customsTariffNumber": "902100",
                            "originCountry": "NL",
                            "quantity": "2",
                            "netWeight": "0.100",
                            "value": "8.00"
                        },
                        {
                            "description": "Sneakers",
                            "customsTariffNumber": "640411",
                            "originCountry": "NL",
                            "quantity": "1",
                            "netWeight": "0.400",
                            "value": "49.99"
                        }
                    ]
                },
                "customsDocuments": {
                    "document": [{
                        "docType": "Invoice",
                        "identifier": "Inv-2020-12345"
                    }]
                },
                "comment": "Some additional information for customs authorities"
            }
        }
    }
    

     

    Response

    Depending on how the request was specified, the response may contain a CN23 document in the specified format (e.g. pdf) or not . The response will also contain a status code as well as a status message both indicating whether the request could be processed successfully or not (see examples below).

     

    Success Responses

    Scenario 1: without CN23

    HTTP/1.1 200
    Content-Type: application/json;charset=UTF-8
    
    {
       "response":{
    	"status":"200",
    	"timestamp":"2020-08-06T10:31:55",
    	"customerId":"EKPTest001",
    	"sessionId":"f10953e8-2e73-41f4-ab4e-818ea4ac76ad",
    	"statusCode":"OK",
    	"statusMessage":"cCustoms has been processed successfully"
    	}
    }
    

    Scenario 2: with CN23

    HTTP/1.1 200
    Content-Type: application/pdf;charset=UTF-8
    
    CN23 document as PDF.
    

     

    Error Responses

    HTTP/1.1 200
    Content-Type: application/json;charset=UTF-8
    
    {
       "error":{
    	"status":"400",
    	"timestamp":"2020-08-06T10:32:55",
    	"sessionId":"a10953e8-2e73-41f4-ab4e-818ea4ac76ad",
    	"statusCode":"ERROR",
    	"statusMessage":"Unexpected input provided"
    	}
    }

     

    Use Case 7: Track and trace your shipment

    The API offers a full track and trace functionality for the shipments of each user. It is possible to request the status information on singular shipment or account level.

    GET /ccc/track-trace?shipmentId=JVGL00000000600337158749  HTTP/1.1
    Host: api-sandbox.dhl.com
    Content-Type: application/json
    Authorization: Bearer AJx0yDAMVnBlcBsSeTwuPpkytYz78fzgUG20aBrTyMBPeP347pVDrz
    
    {
       "barcode": "JVGL00000000600337158749",
       "barcodes": ["JVGL00000000600337158749"],
       "date": "2018-09-21T08:07:02.000Z",
       "events":    [
            {
             "parcelId": "2644d961-2a6e-45a7-86ba-1dc808841bc6",
             "category": "DATA_RECEIVED",
             "leg": {
                "accountId": "00000000",
                "network": "MDP"
             },
             "localTimestamp": "2018-09-21T09:52:45.018+02:00",
             "status": "PRENOTIFICATION_RECEIVED",
             "timestamp": "2018-09-21T07:52:45.018Z",
             "type": "LEG_EVENT"
              },
            {
             "category": "UNDERWAY",
             "facility": "Ottendorf-Okrilla-01458",
             "localTimestamp": "2018-09-21T09:54:59.000+02:00",
             "leg": {"network": "CDEx"},
             "status": "PICKED_UP",
             "timestamp": "2018-09-21T07:54:59.000Z",
             "type": "PIECE_EVENT"
              },
            {
             "category": "UNDERWAY",
             "facility": "Frankfurt-60327",
             "localTimestamp": "2018-09-21T09:56:02.000+02:00",
             "leg": {"network": "CDEx"},
             "status": "GATEWAY_DEPARTED",
             "timestamp": "2018-09-21T07:56:02.000Z",
             "type": "PIECE_EVENT"
              },
            {
             "category": "UNDERWAY",
             "facility": "Liége-4000",
             "localTimestamp": "2018-09-21T09:56:51.000+02:00",
             "leg": {"network": "CDEx"},
             "status": "GATEWAY_ARRIVED",
             "timestamp": "2018-09-21T07:56:51.000Z",
             "type": "PIECE_EVENT"
              },
            {
             "category": "UNDERWAY",
             "facility": "Turnhout-2300",
             "localTimestamp": "2018-09-21T09:58:07.000+02:00",
             "leg": {"network": "CDEx"},
             "status": "GATEWAY_DEPARTED",
             "timestamp": "2018-09-21T07:58:07.000Z",
             "type": "PIECE_EVENT"
              },
            {
             "category": "UNDERWAY",
             "facility": "Roermond-6043JR",
             "localTimestamp": "2018-09-21T10:02:16.000+02:00",
             "leg": {"network": "CDEx"},
             "status": "ARRIVED_AT_INBOUND_GATEWAY",
             "timestamp": "2018-09-21T08:02:16.000Z",
             "type": "PIECE_EVENT"
              },
            {
             "category": "DATA_RECEIVED",
             "localTimestamp": "2018-09-21T10:03:04.000+02:00",
             "leg": {"network": "ECOMMERCE"},
             "status": "PRENOTIFICATION_RECEIVED",
             "timestamp": "2018-09-21T08:03:04.000Z",
             "type": "PIECE_EVENT"
              },
            {
             "category": "LEG",
             "leg":          {
                "accountId": "49538108",
                "network": "ECOMMERCE"
             },
             "localTimestamp": "2018-09-21T10:04:03.000+02:00",
             "status": "LEG_CREATED",
             "timestamp": "2018-09-21T08:04:03.000Z",
             "type": "LEG_EVENT"
              },
            {
             "category": "DELIVERED",
             "facility": "Luyksgestel-5575AE",
             "localTimestamp": "2018-09-21T10:07:02.000+02:00",
             "leg": {"network": "CDEx"},
             "status": "DELIVERED",
             "timestamp": "2018-09-21T08:07:02.000Z",
             "type": "PIECE_EVENT"
              }
       ],
       "type": "SHIPMENT",
       "deliveredAt": "2018-09-21T10:07:02.000+02:00"
    }

     

    Use Case 8: DHL Brexit - Parcel Connect shipments to UK

    The request enables the user to load list of all shipments for DHL Parcel Connect to UK which refers to a truck and specifies all shipments that have been loaded onto the truck.

    Key success factors:

    • Always transport destination should be GB
    • For all shipment identifiers given in the load list a corresponding cPAN and cCustoms are sent and processed successfully
    • Make sure that referenced shipment has product ParcelConnect and destination as GB
    • If one or more of these requirements are not satisfied, CCC rejects the message
    • If the cloadlist is rejected because of missing cPAN/cCustoms messages, the response includes the corresponding parcel identifiers for the shipments and the information whether cPAN and/or cCustoms is missing
    
    Request
    POST ccc/send-cloadlist HTTP/1.1
    Host: api-sandbox.dhl.com
    Content-Type: application/json
    Authorization: Bearer AJx0yDAMVnBlcBsSeTwuPpkytYz78fzgUG20aBrTyMBPeP347pVDrz
    
    {
    	"dataElement": {
    		"version":"0200",			  
    		"transportOrigin": "CZ",
    		"transportDestination": "GB",
    		"general": {
    			"MRN": "16DE485100011122M7",  
    			"timestamp": "2020-12-04T10:30:28Z",
    			"customerIdentification": "7000100904"
    		},
    		"cLoadlist": {
    			"transportDetails":{
    				"truckNumber": "LX - ZO 999",
    				"trailerNumber": "12345ZQW",
    				"sealNumber": "12345"
    			},
    			"shipmentIdentifiers":[
    						"JVGL00000000529695831071",
    						"JVGLCH0373883135", 
    						"JVGL00000000186904774161",
    						"JVGL00000000012266956717",
    						"9872354547"
    				]
    			}
    		}
    }
    
    

     

    Response

    Depending on how the request was specified, If the cloadlist is rejected because of missing cPANs / cCustoms messages, the response includes the corresponding parcel identfiers for the shipments, and the information whether cPAN and/or cCustoms is missing. The response will also contain a status code as well as a status message both indicating whether the request could be processed successfully or not (see examples below).

     

    Success Responses

    Scenario 1: without rejected shipment details

    HTTP/1.1 200
    Content-Type: application/json;charset=UTF-8
    
    {
        "response": {
            "status": "200",
            "statusCode": "OK",
            "statusMessage": "cLoadList is successfully processed",
            "timestamp": "2021-01-20T04:32:49",
            "sessionId": "fd075dac-5214-41ad-89ad-e47f614bf237"
        }
    }
    
    

    Scenario 2: with rejected shipment details

    HTTP/1.1 200
    Content-Type: application/pdf;charset=UTF-8
    
    {
        "response": {
            "status": "200",
            "statusCode": "ERROR",
            "statusMessage": "cLoadList is rejected due to validation error. Please refer shipment details for error details.",
            "timestamp": "2021-01-20T08:46:04",
            "sessionId": "8d8ea0ed-4840-4d2c-a44e-43be212d49b9",
            "shipmentIDetails": [
                {
                    "shipmentIdentifier": "JVGL00000000529695831071",
                    "errorCode": "CL0001",
                    "errorMessage": "Both cPAN and cCustom is missing in CCC."
                },
                {
                    "shipmentIdentifier": "JVGL00000000012266956717",
                    "errorCode": "CL0002",
                    "errorMessage": "Both cPAN and cCustoms exists in CCC with different destination country."
                },
                {
                    "shipmentIdentifier": "9872354547",
                    "errorCode": "CL0003",
                    "errorMessage": "cPAN exists with different product and cCustoms exists with different destination country in CCC."
                },
                {
                    "shipmentIdentifier": "JVGL00000000186904774161",
                    "errorCode": "CL0005",
                    "errorMessage": "Both cPAN and cCustoms exists in CCC with different product."
                },
                {
                    "shipmentIdentifier": "JVGLCH0373883135",
                    "errorCode": "CL0007",
                    "errorMessage": "cCustoms is missing in CCC."
                }
            ]
        }
    }
    
    

     

    Error Responses

    HTTP/1.1 200
    Content-Type: application/json;charset=UTF-8
    
    {
       "error":{
    	"status":"400",
    	"timestamp":"2020-08-06T10:32:55",
    	"sessionId":"a10953e8-2e73-41f4-ab4e-818ea4ac76ad",
    	"statusCode":"ERROR",
    	"statusMessage":"Unexpected input provided"
    	}
    }

     

    Use Case 9: DHL Process customer events

    The request enables the user to accept and forward events from external parties in order to support e.g. billing or customer services processes

    Key success factors:

    • eConnectprovides a service that enables external parties to send in events with dedicated event types for pre-advised parcels
    • eConnect ensures that only events by authorized users are accepted
    • A user is authorized if he is known to eConnect, is authorized to send in events on behalf of the sender of the parcel
    • If one or more of these requirements are not satisfied, eConnect rejects the message
    
    Request
    POST ccc/send-cevent HTTP/1.1
    Host: api-sandbox.dhl.com
    Content-Type: application/json
    Authorization: Bearer AJx0yDAMVnBlcBsSeTwuPpkytYz78fzgUG20aBrTyMBPeP347pVDrz
    
    {
    	"dataElement": {
    	"version":"0200",			  
        	"parcelOriginOrganization": "AT",
        	"parcelDestinationOrganization": "FR",    
    		"general": {
                "parcelIdentifier": "CS657901017DE",
                "timestamp": "2021-02-25T12:17:00Z",
                "product": "ParcelConnect",
    			"customerIdentification": "5068100904"
                  },
        	"cEvent": {
    			"eventType": " HandoverFromCustomer ",
    			"eventTime": 2021-02-25T10:30:28Z",
    			"eventLocation": "Salzburg",
    			"eventCountry": "AT",
    			"eventCapturedBy": "SomeCarrier",
    			"comment": " optional comment on event; will be stored but not evaluated "
    		}
    		
    	}
    }
    
    

     

    Response

    Depending on how the request was specified, If the cEvent is rejected because of validating event types or user is not authorized for sending specific events, the response includes the reason with detailed error message. The response will also contain a status code as well as a status message both indicating whether the request could be processed successfully or not (see examples below).

     

    Success Responses

    HTTP/1.1 200
    Content-Type: application/pdf;charset=UTF-8
    
    {
        "response": {
            "status": "200",
            "statusCode": "OK",
    	"customerId": "5011122122",
            "statusMessage": "cEvent has been processed successfully",
            "timestamp": "2021-05-26T04:32:49",
            "sessionId": " b32e57d0-40d7-4849-baef-5e02abd5b932"
        }
    }
    
    

     

    Error Responses

    HTTP/1.1 200
    Content-Type: application/json;charset=UTF-8
    
    {
       "error":{
    	"status":"400",
    	"timestamp":"2020-08-06T10:32:55",
    	"sessionId":"a10953e8-2e73-41f4-ab4e-818ea4ac76ad",
    	"statusCode":"ERROR",
    	"statusMessage":"Unexpected input provided"
    	}
    }

     

    Use Case 10: DHL Parcel Return International shipment

    The following request enables the user to send shipment data for a DHL Parcel Return International Shipment to handle the parcels returned by the customers from outside Europe to Europe. If requested, the API will return the respective Rosy label in the desired format (PDF or ZPL).

    Key success factors:

    In order to use the feature of Return International/Return Consolidation, the customer must be authorized to use the consolidation feature i.e., the Consolidation_Flag must be set to "true" in customer configuration. Please contact your DHL representative 
    The consolidation attribute in CPAN and generateLabel parameter must be set to "true".
    Configure the return address; the values for locationId, type, name, phoneNr, email, street, postcode, city and country must be supplied when requesting for configuration. Please contact your DHL representative.
    Configure the hub address; the values for locationId, customerId, hubId must be supplied when requesting for configuration. Please contact your DHL representative.
    The OrganizationId must be enabled for Rosy API call using basic authentication.

     

    Request

    POST /ccc/send-cpan?generateLabel=true HTTP/1.1
    Content-Type: application/json
    
    {
        "dataElement": {
            "parcelOriginOrganization": "AT",
            "parcelDestinationOrganization": "FR",
            "general": {
          "parcelIdentifier":"CPAN202206151450",                    
                "timestamp":"2022-06-15T14:50:15",            
                "product": "ParcelEurope.return.international",
                "routingCode": "2LFR00017+70000002"
            },
            "cPAN": {
                "addresses": {
                    "sender": {
                        "type": "default",
                        "firstName": "DHL Parcel AT",
                        "name": "Alkema",
                        "additionalName": "Sender Additional",
                        "mobileNr": "+49 234343",
                        "phoneNr": "+49 565656",
                        "email": "sender@email.com",
                        "street1": "Poststraße",
                        "street1Nr": "30",
                        "postcode": "1000",
                        "city": "Wien",
                        "country": "AT",
                        "referenceNr": "Reference Number",
                        "customerIdentification": "5012345678",
                        "customerAccountNr1":""
                    },
                    "recipient": {
                        "type": "default",
                        "name": " ",
                        "street1": " ",
                        "postcode": " ",
                        "city": " ",
                        "country": " ",
                        "locationId" : "warehouse_5"
                    }
                },
                "features": {
                    "physical": {
                        "grossWeight": "1.800",
                        "volume": "0.5",
                        "length": "0.2",
                        "height": "0.2",
                        "width": "0.3"
                    },
                    "bulky": true,
                    "consolidation":true
                }
            }
        }
    }

     

    Response

    Depending on how the request was specified, the response may contain label in the specified format (e.g. pdf) or not (see example below).


    Success Response

    HTTP/1.1 200
    Content-Type: application/pdf
    shipmentId: 999990255221

    Use Case 10

    Error Response

    HTTP/1.1 603
    Content-Type: application/json
    {
        "error": {
            "status": "603",
            "timestamp": "2022-06-17T13:31:09",
            "customerId": "5012345678",
            "sessionId": "39c981fd-42fa-42b9-83d2-9919f159a8c3",
            "statusCode": "ERROR",
            "statusMessage": "Criteria is not fullfilled, consolidation flag should be always [true] for product [ParcelEurope.return.international]."
        }
    }
    Request Specs

    Request Specification

    Structure of cPAN data elements (shipping data)

    Input Elements (Y=Yes, N=No, C=Conditional, N/A=Not Applicable)

    Node

    Required

    Description

    Data Type

    MaxLength

    dataElement-

    Y

    Container for the request data.

       

    parcelOriginOrganization

    Y

    This field indicates the origin country of the parcel. The value is a ISO-3166 two-letter country code. It is mandatory to use capital letters (e.g. FR)

    String

    2

    parcelDestinationOrganization

    Y

    This indicates which country is the recipient of the parcel. The value is a ISO-3166 two-letter country code. It is mandatory to use capital letters (e.g. FR)

    String

    2

    general-

    Y

    Container for the general data of request.

       

    parcelIdentifier

    C

    This describes the identifier that is used for parcel tracking.

    Product DHL Parcel Connect/Return Connect:
    - This is always a License-Plate identifier.
    - If the label is generated via this API then this value is left empty.

    Product DHL Parcel International:
    - This is always a UPU S10 identifier.
    - If the label is generated via this API then this value is left empty.

    String

    50

    timestamp

    Y

    Timestamp at which the request data is passed to DHL eCS Europe API.

    This must be stated in the structure: YYYY-MM-DDThh:mm:ssZ (or) YYYY-MM-DDThh:mm:ss+hh:mm (or) YYYY-MM-DDThh:mm:ss-hh:mm

    dateTime

     

    product

    Y

    This is the product of the parcel.

    Please use:
    - ParcelEurope.parcelconnect for product "DHL Parcel Connect",
    - ParcelEurope.return.network for product "DHL Parcel Return Connect",
    - ParcelEurope.parcelinternational for product “DHL Parcel International”

    String

    50

    routingCode

    C

    Routing code -
    This describes the identifier used for routing the parcel.

    Product DHL Parcel Connect/Return Connect:
    - If the label is generated via this API then this value can be left empty.

    Product DHL Parcel International:
    - If the label is generated via this API then this value can be left empty.

    String

    50

    cPAN-

    Y

    Container for the parcel sender, receiver and parcel feature details.

       

    addresses-

    Y

    Container for the parcel sender and receiver details.
    Addresses where the parcel is coming from and destined to.

       

    sender-

    Y

    Container for the parcel sender details.
    In case parcels are undeliverable, they will be send back to this address.

       

    type

    Y

    Type of the sender address.

    Type "default" is mandatory for DHL eCS Europe API.

    String

    35

    firstName

    N

    If first name is available, fill in this field. Content can also be put into “name” field.

    String

    35

    name

    Y

    This is the main field for describing the name. It must contain the surname, optionally also the first name.

    String

    35

    additionalName

    N

    If further name field is required, use this field.

    String

    35

    mobileNr

    N

    Sender's phone number, used for SMS notification.

    String

    35

    phoneNr

    N

    Sender's phone number (optional)

    String

    35

    email

    N

    Sender's email address, used for mail notification

    Must contain the "@" character

    String

    70

    street1

    Y

    This field must contain the street name of the sender address. Optionally also the housenumber.

    String

    35

    street1Nr

    C

    If the house number is not part of “Street1”, this field can be used.

    String

    10

    street2

    N

    Alternative street name of the sender address. Optionally also the house number.

    String

    35

    street2Nr

    N

    If the house number is not part of “Street2”, this field can be used.

    String

    10

    postcode

    Y

    The postcode/zipcode of the sender of the parcel.

    String

    17

    city

    Y

    City name of the sender's address

    String

    35

    country

    Y

    Country of sender. The value is a ISO-3166 two-letter country code. It is recommended to use capital letters (e.g. FR), small letters will also be accepted.

    String

    2

    referenceNr

    N

    Customer-specific reference number, which will also appear on the label.

    String

    35

    customerIdentification

    Y

    Individual customer ID of sender. Content needs to be aligned with DHL (e.g. EKP).

    String

    35

    customerAccountNr1

    C

    Additional account information. Needs to be aligned with DHL (e.g. AccNo).

    String

    35

    recipient-

    Y

    Container for the parcel recipient details.
    The parcel will be shipped to this address.

       

    type

    Y

    Type of the recipient address.

    Product DHL Parcel Connect/Return Connect:
    - Type of address can be: doorstep, parcelshop, parcelstation, postOffice,
    Product DHL Parcel International:
    - Type of address can be: doorstep

    String

    35

    firstName

    N

    If first name is available, fill in this field. Content can also be put into “name” field.

    String

    35

    name

    Y

    This is the main field for describing the name. It must contain the surname, optionally also the first name.

    String

    35

    additionalName

    N

    If a further name field is required, use this field.

    String

    35

    mobileNr

    C

    Recipient mobile number, used for SMS notification in some scenarios (e.g. service point delivery).

    String

    35

    phoneNr

    N

    Recipient fixed line phone number.

    String

    35

    email

    C

    Recipient email address, used for email notification. Must contain the "@" character.

    Mandatory, if addressed to an access point.

    String

    70

    street1

    Y

    This field must contain the street name of the recipient’s address. Optionally also the house number.

    Note: in case of direct addressing to service points the “keyword” has to be included here. (Source: LocationFinder)

    String

    35

    street1Nr

    C

    If the housenumber is not part of “Street1”, this field can be used.

    Note: in case of direct addressing to service points the “keywordId” has to be included here. (Source: LocationFinder)

    String

    10

    street2

    N

    Additional street name of the recipient address. Optionally also the housenumber.

    Note: in case of direct addressing to service points the “streetAddress” has to be included here. It contains street name and optionally also street number (Source: LocationFinder)

    String

    35

    street2Nr

    N

    If the housenumber is not part of “Street2”, this field can be used. Note: in case of direct addressing to service points this field can needs to be left empty or populated with housenumber if not included in “Street2”.

    String

    10

    postcode

    Y

    The postcode/zipcode of the recipient of the item.

    String

    17

    city

    Y

    The name of the city of the recipient address for delivery.

    String

    35

    country

    Y

    Country of recipient as ISO 3166-1 alpha two letter country code. It is recommended to use capital letters (e.g. FR), small letters will also be accepted.

    String

    2

    customerIdentification

    N

    Optional field for individual customer ID of recipient, e.g. EKP

    Note: in case of direct addressing to German parcel stations this field must contain the “Postnumber” (see Use Case)

    String

    35

    keywordId

    C

    Represents the “****”

    String

     

    locationId

    N

    For ParcelEurope.return.international product, this field is used to retrieve the RosyReceiverId.

    In case if this field is missing in the cPAN then customerIdentification parameter value is used to retrieve the RosyReceiverId.

    String

     

    features-

    Y

    Container for features of the product

       

    physical-

    Y

    Container for the physical attributes of a parcel

       

    grossWeight

    Y

    Gross weight of the parcel in kilogram (kg).

    This must be stated in the structure: nn.nnn

    Decimal

    6

    volume

    N

    Volume of the parcel in cubic meter (m^3).

    This must be stated in the structure: nn.nn

    Decimal

    5

    length

    N

    Length of the parcel in meter (m).

    This must be stated in the structure: nn.nn

    Decimal

    5

    height

    N

    Height of the parcel in meter (m).

    This must be stated in the structure: nn.nn

    Decimal

    5

    width

    N

    Width of the parcel in meter (m).

    This must be stated in the structure: nn.nn

    Decimal

    5

    bulky

    N

    Any parcel with irregular shape or any kind of packaging that prevents automated sorting are selectable as “bulky” (True/false). For details please contact DHL representative.

    Boolean

     

    extraInsurance

    N

    Insert only, if extra insurance is required and aligned with your DHL representative. The possible values of "A" or "B" represent clauses from the customer contract.

    String

     

    cod-

    C

    Optional container for the Cash-On-Delivery (COD) details. The feature is only available for specific lanes please contact your DHL representative.

       

    sepa-

    C

    Container for COD in case of Sepa banking transfers.

       

    amount

    C

    The amount to be charged.

    Mandatory incase  This must be stated in the structure: nnnnnnnnn.nnn

    Decimal

    13

    currency

    C

    Currency abbreviation according to ISO 4217 alpha-3 currency codes.

    Mandatory if, cod sepa is true.

    String

    3

    bankAccountHolder

    C

    Name of the party on behalf of which the beneficiary receives the payment.

    Mandatory if, cod sepa is true.

    String

    70

    IBAN

    C

    IBAN of bank account for SEPA-countries only.

    Mandatory if, cod sepa is true.

    String

    34

    BIC

    C

    BIC of bank account for SEPA-countries only.

    Mandatory if, cod sepa is true.

    String

    11

    bankName

    C

    The name of bank

    Mandatory if, cod sepa is true.

    String

    35

    bankLocation

    N

    The location of bank.

    String

    35

    intendedPurpose

    C

    Underlying reason for the payment transaction.

    Mandatory if, cod sepa is true.

    String

    70

    consolidation

    N

    This field is available for use only for ParcelEurope.return.network or ParcelEurope.return.international product's.

    For product ParcelEurope.return.international the field is mandatory

    The valid values are either "true" or "false".

    generateLabel parameter must be set to "true" when consolidation flag is used for return.international product

    String

     

    directInjection-

    C

    It is mandatory to set this parameter to “true” in case shipments will be injected directly by the customer into the DHL network (no pickup by courier).

    Boolean

     

    directInjectionDetails-

    C

    Group for details on directly injected parcels.

    Mandatory if directInjection is true

       

    directInjectionCountry

    Y

    Country where injection takes place.

    The value is a ISO-3166 two-letter country code.

    String

    2

    directInjectionGatewayCity

    Y

    Location of gateway where injection takes place.

    String

    35

    directInjectionGatewayPostcode

    Y

    Postcode of gateway where injection takes place.

    String

    10

     

    Structure of cCustoms data elements

    Node

    Required

    Description

    Data Type

    MaxLength

    dataElement-

    Y

    Container for the request data.

       

    parcelOriginOrganization

    Y

    This field indicates the origin country of the parcel. The value is a ISO-3166 two-letter country code.

    String

    2

    parcelDestinationOrganization

    Y

    This indicates which country is the recipient of the parcel. The value is a ISO-3166 two-letter country code.

    String

    2

    general-

    Y

    Container for the general data of request.

       

    parcelIdentifier

    Y

    This is the identifier of the parcel. It needs to match with the identifier of the cPAN.

    String

    50

    timestamp

    Y

    Timestamp at which the request data transferred to CCC system.

    This must be stated in the structure: YYYY-MM-DDThh:mm:ssZ (or) YYYY-MM-DDThh:mm:ss+hh:mm (or) YYYY-MM-DDThh:mm:ss-hh:mm

    dateTime

     

    product

    Y

    Parcel product used.

    Please use:
    - ParcelEurope.parcelinternational for product “DHL Parcel International

    String

    50

    routingCode

    C

    This is the routing code of the parcel. It needs to match with the routing code of the cPAN (as specified in the label specification).

    String

    50

    customerIdentification

    Y

    Individual customer ID, e.g. EKP.

    String

    50

    cCustoms-

    Y

    Container for the cCustoms details of request.

       

    CustomsIDs-

    C

    Container for the customsIDs for sender and recipient

    Needs to be included only if customsID information for the sender and/or recipient shall be specified

       

    sender-

    C

    Container for the sender customsIDs.

    Needs to be included if customsID information for the recipient shall be specified

       

    idType

    Y

    Type of identification number

    Possible values: EORI or VAT

    String

    35

    identifier

    Y

    Sender identification number will be used by customs authorities to uniquely identify the sender

    The concrete EORI or VAT number

    String

    35

    recipient-

    C

    Container for the recipient customsIDs

    Needs to be included if customsID information for the recipient shall be specified

       

    idType

    Y

    Type of identification number

    Possible values: EORI or VAT

    String

    35

    identifier

    Y

    Recipient identification number will be used by customs authorities to uniquely identify the sender

    The concrete EORI or VAT number

    String

    35

    shippingFee-

    C

    Transport fees that sender charges to recipient

    Mandatory for Parcel International shipments

       

    currency

    Y

    Currency of shipping fee.

    ISO 4217: For example "EUR”

    String

    3

    value

    Y

    Shipping fee to be paid by the recipient.

    Format: xx.xx ("." as separator, 2 decimals) Can be “0,00” if shipping is free.

    Decimal

     

    goodsDescription-

    Y

    Container for the description of all the items in the shipment

       

    general-

    Y

    General information that refers to all items in the shipment

       

    goodsClassification

    Y

    Classification of the items in the shipment, from a customs perspective (e.g. Sale of goods)

    Possible values: Other, CommercialGoods, ReturnedItem, Gift, ProductSample, Documents

    String

    35

    currency

    Y

    Currency in which item values of the items are given

    ISO 4217: For example "EUR”

    String

    3

    item-

    Y

    Container for the item details.

       

    description

    Y

    Precise, textual description of the item type.

    For example “T-Shirts with short sleeve”

    String

    35

    customsTariffNumber

    O

    International "product number" of the item type

    Optional, but recommended for Parcel International shipments Possible values: 6, 8 or 10 digits

    String

    10

    originCountry

    C

    Country in which the item was manufactured.

    ISO-3166 two-letter country code.

    String

    2

    quantity

    Y

    Total number of items of a the described type that are contained in the parcel

    Integer

     

    netWeight

    Y

    Net weight of all Items of the described type (= weight of an individual item of the described type * quantity)

    Kg, format: xx.xxx ("." as separator, 3 decimals)

    Decimal

     

    value

    Y

    Gross value (incl. VAT) of all Items of the described type (= value of an indivudal item of the described tpye * quantity).
     

    Format: xx.xx ("." as separator, 2 decimals)

    Decimal

     

    customsDocuments-

    Y

    Container for the customsDocuments details.

    Gives information on (printed) customs-relevant documents that are attached to shipments, e.g. commercial invoice

       

    document-

    Y

    Container for information on an individual document.

       

    docType

    Y

    Classification of the document
     

    Possible values:
    "INV" (for invoice),
    "LCS" (for license),
    "CRT" (for certificate)

    String

     

    identifier

    Y

    Identifier of the document.


    e.g. commercial invoice number

    String

    40

    comment

    C

    Additional information for customs authorities.

    String

    80

     

    Structure of connectPlus data elements

    Node

    Required

    Description

    Data Type

    MaxLength

    dataElement-

    Y

    Container for the request data.

       

    label-

    Y

    Container for the label request

     

     

    format

    Y

    Mime type of the label. Example: pdf, png or zpl

    String

     

    labelSize

    Y

    Size of the label. Example: 10X15 (default),10x20

    String

     

    parcelOriginOrganization

    Y

    This field indicates the origin country of the parcel. The value is a ISO-3166 two-letter country code. It is mandatory to use capital letters (e.g. FR)

    String

    10

    parcelDestinationOrganization

    Y

    This indicates which country is the recipient of the parcel. The value is a ISO-3166 two-letter country code. It is mandatory to use capital letters (e.g. FR)

    String

    10

    general-

    Y

    Container for the general data of request.

       

    shipmentID

    C

    This describes the identifier that is used for parcel tracking.

    String

    50

    timestamp

    Y

    Timestamp at which the request data is passed to DHL eCS Europe API.

    This must be stated in the structure: YYYY-MM-DDThh:mm:ssZ (or) YYYY-MM-DDThh:mm:ss+hh:mm (or) YYYY-MM-DDThh:mm:ss-hh:mm

    dateTimeStamp

     

    product

    Y

    This is the product of the parcel. (E.g: ParcelEurope.connectPlus)

    String

    50

    pallet

    C

    Pallet as specified for ConnectPlus product.

    Boolean

    True/False

    routingCode

    C

    Routing code -
    This describes the identifier used for routing the parcel.

    String

    50

    shipment-

    Y

    Container for the parcel sender, receiver and parcel feature details.

       

    addresses-

    Y

    Container for the parcel sender and receiver details.
    Addresses where the parcel is coming from and destined to.

       

    sender-

    Y

    Container for the parcel sender details.
    In case parcels are undeliverable, they will be send back to this address.

       

    firstName

    N

    If first name is available, fill in this field. Content can also be put into “name” field.

    String

    35

    name

    Y

    This is the main field for describing the name. It must contain the surname, optionally also the first name.

    String

    35

    additionalName

    N

    If further name field is required, use this field.

    String

    35

    mobileNr

    N

    Sender's phone number, used for SMS notification.

    String

    35

    phoneNr

    N

    Sender's phone number (optional)

    String

    35

    email

    N

    Sender's email address, used for mail notification

    Must contain the "@" character

    String

    70

    street1

    Y

    This field must contain the street name of the sender address. Optionally also the housenumber.

    String

    35

    street1Nr

    C

    If the house number is not part of “Street1”, this field can be used.

    String

    10

    street2

    N

    Alternative street name of the sender address. Optionally also the house number.

    String

    35

    street2Nr

    N

    If the house number is not part of “Street2”, this field can be used.

    String

    10

    Street3

    N

    Alternative street name of the sender address.

    String

    35

    Street3Nr

    N

    If the house number is not part of “Street3”, this field can be used.

    String

    10

    postcode

    Y

    The postcode/zipcode of the sender of the parcel.

    String

    17

    city

    Y

    City name of the sender's address

    String

    35

    country

    Y

    Country of sender. The value is a ISO-3166 two-letter country code. It is recommended to use capital letters (e.g. FR), small letters will also be accepted.

    String

    2

    referenceNr

    N

    Customer-specific reference number, which will also appear on the label.

    String

    35

    customerIdentification

    Y

    Individual customer ID of sender. Content needs to be aligned with DHL (e.g. EKP).

    String

    35

    customerAccountNr1

    C

    Additional account information. Needs to be aligned with DHL (e.g. AccNo).

    String

    35

    recipient-

    Y

    Container for the parcel recipient details.
    The parcel will be shipped to this address.

       

    firstName

    N

    If first name is available, fill in this field. Content can also be put into “name” field.

    String

    35

    name

    Y

    This is the main field for describing the name. It must contain the surname, optionally also the first name.

    String

    35

    additionalName

    N

    If a further name field is required, use this field.

    String

    35

    mobileNr

    C

    Recipient mobile number, used for SMS notification in some scenarios (e.g. service point delivery).

    String

    35

    phoneNr

    N

    Recipient fixed line phone number.

    String

    35

    email

    C

    Recipient email address, used for email notification. Must contain the "@" character.

    Mandatory, if addressed to an access point.

    String

    70

    street1

    Y

    This field must contain the street name of the recipient’s address. Optionally also the house number.

    String

    35

    street1Nr

    C

    If the housenumber is not part of “Street1”, this field can be used.

    String

    10

    street2

    N

    Additional street name of the recipient address. Optionally also the housenumber.

    String

    35

    street2Nr

    N

    If the housenumber is not part of “Street2”, this field can be used.

    String

    10

    postcode

    Y

    The postcode/zipcode of the recipient of the item.

    String

    17

    city

    Y

    The name of the city of the recipient address for delivery.

    String

    35

    country

    Y

    Country of recipient as ISO 3166-1 alpha two letter country code. It is recommended to use capital letters (e.g. FR), small letters will also be accepted.

    String

    2

    features-

    Y

    Container for features of the product

       

    gogreen

    N

    Set to true in order deliver the parcel with CO2 offset.

    Boolean

     

    extraInsurance

    N

    Insert only if extra insurance is required and aligned with your DHL representative. The possible values of "A" or "B" represent clauses from the customer contract.

    String

     

    Pieces-

    Y

    This indicates number of pieces per shipment.

     

     

    parcelidentifier

    C

    Shipment Identifier used for tracking of the parcel.

    String

    50

    pieceNr

    C

    PieceNr as specified for ConnectPlus product

    String

    50

    referenceNr2

    N

    referenceNr as specified for ConnectPlus product

    String

    35

    features-

    Y

    Container for features of the product

     

     

    physical-

    Y

    Container for the physical attributes of a parcel

       

    grossWeight

    Y

    Gross weight of the parcel in kilogram (kg).

    This must be stated in the structure: nn.nnn

    Decimal

    6

    volume

    N

    Volume of the parcel in cubic meter (m^3).

    This must be stated in the structure: nn.nn

    Decimal

    5

    length

    N

    Length of the parcel in meter (m).

    This must be stated in the structure: nn.nn

    Decimal

    5

    height

    N

    Height of the parcel in meter (m).

    This must be stated in the structure: nn.nn

    Decimal

    5

    width

    N

    Width of the parcel in meter (m).

    This must be stated in the structure: nn.nn

    Decimal

    5

    Non-conveyable

    C

    Any parcel with irregular shape or any kind of packaging that prevents automated sorting are selectable as “bulky” (True/false). For details please contact DHL representative.

    Boolean

    True/False

    DGLQ

    C

    Dangerous goods in limited quantity. If material in the piece is DGLQ, this must be provided = True.

    Boolean

    True/False

    DGLQweight

    C

    DGLQweight of the piece in kilogram (kg).

    This must be stated in the structure: n in kg.          (Example: rounded up 2.3 à 3 kg)

    String

     

    Structure of cEvent data elements

    Node

    Required

    Description

    Data Type

    MaxLength

    dataElement-

    Y

    Container for the request data.

     

     

    parcelOriginOrganization

    Y

    2-digit country code of the country of origin of the parcel the event refers to

    String

    2

    parcelDestinationOrganization

    Y

    2-digit country code of the country of destination of the parcel the event refers to

    String

    2

    general-

    Y

    Container for the general data of request.

     

     

    parcelIdentifier

    Y

    identifier of the parcel the event refers to

    String

    50

    timestamp

    Y

    Timestamp at which the request data transferred to eConnect system.

    This must be stated in the structure: YYYY-MM-DDThh:mm:ssZ (or) YYYY-MM-DDThh:mm:ss+hh:mm (or) YYYY-MM-DDThh:mm:ss-hh:mm

    dateTime

     

    customerIdentification

    Y

    customer number of the sender for the shipment

    Note: It will be checked whether the sender of the event message is authorized to send in event message on behalf of the sender of the shipment

    String

    50

    cEvent-

    Y

    Container for the cEvent details of request.

     

     

    eventType

    Y

    type of the event; possible values: currently only "handoverFromCustomer"

    Note: - It will checked whether the sender of the event message is authorized to send in event of the type specified here

    - Internally, in CDEx, this event will be mapped to "E0G" which is a completely new event type

    String

     

    eventTime

    Y

    date & time at which the event was captured

    String

     

    eventLocation

    Y

    Name of the city where the event was captured

    String

     

    eventCountry

    Y

    2-digit country code of the country in which the event was captured

    String

    2

    eventCapturedBy

    O

    Name of the person / company that captured the event

    String

    50

    comment

    O

    Free text that gives additional information on the event

    String

    50

    Support & FAQ
    DHL eCommerce Solutions Europe is always here to help you out.

    Please use the contact forms according to your need:

     

    Testing / Getting started

    Should we conduct all testing against the sandbox API or are we also able to test towards the production API?

    First we kindly ask you to do all testing against the Sandbox, until you have finalized your flow with working requests/replies. Then we will do an approval of label & request data. After that you will receive PROD credentials for real-life shipment tests (e.g. with a couple of customer shipments).

    Note: usually a limited amount of test shipments against the production environment remain without consequence, if there are no scan events performed by DHL and no additional services are requested (e.g. pickup-requests).

     

    Do you have any Postman collections of the different requests that you could share with us?

    Unfortunately we do not share those at the moment, they are only used internally by our developer team.

     

    Sending shipments

    Which information is mandatory to enter to be able to book a shipment?

    Please see our request spec for details on each field.

     

    Do you have package volume and weight validations on your side through the API, or do we need to have all the validations on our side?

    We have a validation service for several aspects of the shipment, but that is currently inactive for self-labeling customers. Only active for API-label customers.

     

    Which package types should be available?

    The allowed packaging types per product and shipment can be obtained from the product information (see overview section) and need to be obeyed. On the API-call there is no package-type field, so from IT-integration perspective the type of packaging does not have relevance.

     

    Is it possible to ask for status files through customer ID or shipment ID?

    This is unfortunately not possible as we do not offer FTP transmission and the API does not push statuses. Track and trace is currently offered via API calls on shipment or customer level only, no status files are provided.

     

    Label

    How do we request the label through the API, do you have any examples?

    This is part of the GET request, it is defined here.

     

    Is it possible to send in a parcel ID/parcelIdentifier while also requesting a label, so that the label would contain the customers own parcel ID?

    This is not supported at the moment. Either you use our API-generated label, which will come with a dedicated number range starting with “JVGL…” or you create the label yourself, applying a different number range.

     

    Do you have any restrictions on which kinds of parcel ID’s you are accepting?

    The following options exist for identifiers:

    • ASC MH10 in symbology Code 128 barcode, max. 35digits (alphanumeric characters)
    • GS1 (former EAN), starting with an FNC1 character in symbology Code GS1 128, 20digits (numerical)   

    It is permitted that the routing barcode is shown in one license plate barcode format (i.e. ASC MH10) while the identifier is shown in another license plate barcode format (i.e. GS1)

     

    Service Points

    When we request available service points from the API, does the receiving address need to look exactly like in your specification?

    The minimum requirement is to provide a correct zip code and city.

     

    How should the service point be sent in the EDI to you?

    It is essential to map the retrieved service point addressing information to the correct API fields. Please see our example CPAN for this use case here.

     

    Is it possible to search by ServicepointID via the API?

    This search option is not available at the moment.

     

    Integrators

    Are the EDI credentials unique to the integrator or to the customer?

    Generally the credentials are customer-unique. Only in case the service is cloud-based (and not installed on customers premises), we can issue a central pair of credentials to you, so that it is integrator-unique.

    Legal Terms

    Specifics for the use of DHL eCommerce Solutions Europe API

    To register for the use of and/or access to DHL eCommerce Solutions' Europe API and the underlying API Services (create shipment, generate label, track & trace, parcel shop finder) – hereinafter referred to as DHL eCommerce Solutions Europe API – you and/or the entity you are authorized to represent (hereinafter "You"/"Your") need to have an account with and/or have entered into a Customer Services Agreement with one of DHL eCommerce Solutions’ legal entities. If You engage an external developer or other IT services provider to represent You and to develop Your Application according to the General Developer Portal Terms of Use and these special API terms & conditions (also referred to as "Legal Terms"), You are liable for the acts or omissions of such third party in connection with the access to and/or usage of the DHL eCommerce Solutions Europe API.

    These Legal Terms and the General Developer Portal Terms of Use govern your usage of and/or access to the DHL eCommerce Solutions Europe API including the API Services and, unless otherwise stated herein, do not replace and/or modify any other DHL eCommerce Solutions terms and conditions of Carriage, Customer Services Agreements and/or any other agreements, contracts or SOWs with DHL eCommerce Solutions or any of its affiliates, which govern services or products provided to you (separately, each an "Agreement"). Notwithstanding the foregoing, you expressly acknowledge and agree that solely with respect to your use of and access to the DHL eCommerce Solutions Europe API these Legal Terms and the General Developer Portal Terms of Use shall have preference over the terms and conditions in an Agreement, unless any terms and conditions in an Agreement specifically address the use of/access to the DHL eCommerce Solutions Europe API by You, in which case the specific terms and conditions of the Agreement shall prevail with respect to Your use of/access to the DHL eCommerce Solutions Europe API.

    You shall use the services and/or data that You receive via the DHL eCommerce Solutions Europe API only for the legitimate contractual purposes and only in connection with DHL eCommerce Solutions' carriage services.

    The following prerequisites and/or restrictions apply for the usage of data or information received via the DHL eCommerce Solutions Europe API: 

     

    Parcel shop finder

    Data requested and received via this API, such as addresses of DHL Service Point locations, location types, services at location, is hereinafter referred to as “Location Data”.

    Such Location Data is provided to You and/or the entity you are authorized to represent (hereinafter “You”/”Your”) via the DHL eCommerce Solutions Europe API under the following prerequisites and/or restrictions:

    • You shall only publish, display and/or otherwise use the Location Data in connection with location data of other logistics/transportation services providers (e.g. show DPDHL´s locations together with locations of other transportation and/or logistics services providers on a website – a comparison portal for example – or any other (electronic) channel and/or medium), provided that You
      • always show and/or display all DPDHL locations, that are available at the according address and that have been provided to You via the DHL eCommerce Solutions Europe (i.e. without dismissing single locations), and
      • do not specifically select and/or recommend single locations  thus contradicting DPDHL´s business interests.
    • You shall not store and/or modify Location Data in any form; it is especially prohibited to analyze and/or derive data/information for competitive purposes from the Location Data without our prior written consent.

     

    Label

    The API Service "label" provides You with the possibility to create and download labels for singular shipments. Please note that the creating and/or downloading of a label does not constitute the contract of carriage. Such contract will be concluded once the labeled package is handed over or picked up and accordingly accepted by DHL eCommerce Solutions

     

    Track & Trace

    Data requested and received via this API, such as transport status, estimated delivery date, is hereinafter referred to as "Tracking Data".

    Tracking Data is Confidential Information in the meaning of section "Communication" of the General Developer Portal Terms of Use. Other than set forth below You must not reveal and/or provide third parties with the Tracking Data and/or analyze, modify such data in any form and/or derive data/information especially for competitive purposes from it without DHL eCommerce Solutions' prior written consent.

    Tracking Data is provided to You and/or the entity you are authorized to represent (hereinafter “You”/”Your”) under the prerequisite, that You retrieved the according tracking number in compliance with the applicable law, especially in the field of data protection and competition law and that You use the Tracking Data solely for Your own or Your customers’ legitimate tracking purposes.

    You shall not combine Tracking Data with advertisement or present it in a way that it could be regarded as advertisement.

    Unless otherwise agreed, You shall delete the Tracking Data 90 days after the delivery (of the shipment) to the recipient is completed. DHL eCommerce Solutions shall not be required to provide Tracking Data to You that is older than 90 days from the delivery date.

    The use and submission of Tracking Data – including submission to any of Your subcontractors – shall always be in compliance with applicable laws and regulations, including – without limitation – data protection laws and competition/antitrust law.

    If You are neither the shipper/sender nor the recipient of packages the Tracking Data refers to,

    • You shall ensure, that you are duly authorized to act on behalf of the sender and/or the recipient;
    • You shall make the sender and/or the recipient aware of the restrictions set out in this User Guide just as the General Developer Portal Terms of Use;
    • You shall make the sender aware of the necessity to inform the recipient transparently about the processing of his/her personal data according to applicable data protection laws;
    • You shall inform the sender and/or recipient transparently that the use of Your Application may result in the disclosure of data being subject to postal secrecy and data protection laws to third parties (including You).
    1.0.5
    14.Jul.2020
    • Initial release
    ConnectPlus Swagger update
    11.Feb.2022
    cCustoms Schema update
    28.Dec.2022

    cCustoms schema update with examples for GB scenario