Site Logo

🎉 ShipEngine is becoming ShipStation API 🎉

Over the next few months you'll notice the ShipEngine website, documentation portal, and dashboard being rebranded as ShipStation API. For our ShipEngine customers, you don't need to take any action or change any of your integrations in any way. All endpoints will remain the same and continue to function as they always have.

To learn more about what's coming, review our New ShipStation API page.

DHL Express MyDHL API

DHL Express MyDHL API offers both domestic and international services for shipping to and from destinations worldwide.

This guide provides developers with the details needed to build DHL Express MyDHL API shipping capabilities into your ShipStation API workflows.

IMPORTANT: New DHL Express MyDHL Connections are On Hold

New connections to DHL Express MyDHL are currently On Hold and unavailable for setup. Please watch this space for updates about this carrier's availability.

Requirements

PropertyTypeRequired?Description
dhl_shipper_numberstringrequiredYour DHL Shipper Account Number
api_keystringrequiredYour DHL account API key
api_secretstringrequiredYour DHL account API secret
dhl_duties_taxes_numberstringOptionalYour DHL Duties Taxes Account Number
dhl_location_finder_api_keystringOptionalYour DHL Location Finder API Key
go_green_plusbooleanOptionalSelect this option to default GoGreen Plus on all orders. Applies to International deliveries only.
use_my_own_commercial_invoicebooleanOptionalPrint my own commercial invoice rather than the DHL invoice (not eligible for paperless trade).
provide_commercial_invoice_outside_of_auctanebooleanOptional* Provide my own commercial invoice electronically to DHL outside of Auctane.
shipper_business_party_role_typestringOptional* * Business party type of the shipper.
return_label_validity_periodstringOptionalReturn Label/QR Code Validity Period

PROPERTY DESCRIPTIONS​

    • use_my_own_commercial_invoice. Using this property, you agree, "I will ensure my commercial invoice is provided electronically to DHL to support paperless trade shipping. I understand that shipments cannot be transported without the commercial invoice being provided to DHL electronically, and where necessary, printed and affixed to the package for non-paperless trade shipments."
  • ** shipper_business_party_role_type. This information is used for international shipping and placed on the commercial invoice for compliant customs clearance. Allowed values are: business, direct_consumer, government, other, private, reseller.
  • *** return_label_validity_period. Defines the duration that return shipment data information is stored in the carrier’s systems and the return label or/and QR Code remains active and can be used. Allowed values are: 3 months, 6 months, 12 months, 24 months, PT, PU, PV, PW.

Shipping Requirements

  • All shipments require both weight and dimensions.

Connect Account

You can connect a DHL Express MyDHL API account using the POST method to the /v1/connections/carriers/ endpoint, or via the ShipStation API Dashboard.

Connect via Endpoint

carrier_name: dhl_express_mydhl

POST /v1/connections/carriers/:carrier_name

Sample request:

1
2
3
4
5
6
7
8
9
10
POST /v1/connections/carriers/dhl_express_mydhl HTTP/1.1
Host: api.shipengine.com
API-Key: __YOUR_API_KEY_HERE__
Content-Type: application/json
{
"dhl_shipper_number": "123456789",
"api_key`": "1234-abcd-5678-efgh-0129",
"api_secret": "my-api-secret"
}

Once connected, use the carrier_id returned in the response for all future account requests.

Connect via Dashboard

Find steps to connect via the ShipStation API dashboard in the DHL Express MyDHL API help center page.

Rates

DHL Express MyDHL API supports rate shopping with ShipStation API.

Rates Received: Prices are always returned in the currencies based on the contract signed between the carrier and the merchant.

  • Order Rate Calculator: Supported
  • Toolbar Rate Calculator: Not Supported

Service Details

Available DHL Express MyDHL API services are provided below. Please note that carriers may update their available services at any time. To ensure you are always using valid services, you can use the list carrier services endpoint at any time.

Domestic Services

ServiceAPI Code
DHL Domestic Express 09:00 - Service Pointdhl_express_mydhl_domestic_express_09_service_point
DHL Domestic Express 09:00dhl_express_mydhl_domestic_express_09
DHL Domestic Express 12:00 - Service Pointdhl_express_mydhl_domestic_express_12_service_point
DHL Domestic Express 12:00dhl_express_mydhl_domestic_express_12
DHL Domestic Express - Service Pointdhl_express_mydhl_domestic_express_service_point
DHL Domestic Expressdhl_express_mydhl_domestic_express

International Services

ServiceAPI Code
DHL Economy Select (nondoc) - Service Pointdhl_express_mydhl_economy_select_nondoc_service_point
DHL Economy Select (nondoc)dhl_express_mydhl_economy_select_nondoc
DHL Express 09:00 (doc) - Service Pointdhl_express_mydhl_express_09_doc_service_point
DHL Express 09:00 (doc)dhl_express_mydhl_express_09_doc
DHL Express 09:00 (nondoc) - Service Pointdhl_express_mydhl_express_09_nondoc_service_point
DHL Express 09:00 (nondoc)dhl_express_mydhl_express_09_nondoc
DHL Express 10:30 (doc) - Service Pointdhl_express_mydhl_express_1030_doc_service_point
DHL Express 10:30 (doc)dhl_express_mydhl_express_1030_doc
DHL Express 10:30 (nondoc) - Service Pointdhl_express_mydhl_express_1030_nondoc_service_point
DHL Express 10:30 (nondoc)dhl_express_mydhl_express_1030_nondoc
DHL Express 12:00 (doc) - Service Pointdhl_express_mydhl_express_12_doc_service_point
DHL Express 12:00 (doc)dhl_express_mydhl_express_12_doc
DHL Express 12:00 (nondoc) - Service Pointdhl_express_mydhl_express_12_nondoc_service_point
DHL Express 12:00 (nondoc)dhl_express_mydhl_express_12_nondoc
DHL Express Worldwide (doc) - Service Pointdhl_express_mydhl_express_worldwide_doc_service_point
DHL Express Worldwide (doc)dhl_express_mydhl_express_worldwide_doc
DHL Express Worldwide (nondoc) - Service Pointdhl_express_mydhl_express_worldwide_nondoc_service_point
DHL Express Worldwide (nondoc)dhl_express_mydhl_express_worldwide_nondoc
Economy Select EU - Service Pointdhl_express_mydhl_economy_select_eu_service_point
Economy Select EUdhl_express_mydhl_economy_select_eu
Express Worldwide EU - Service Pointdhl_express_mydhl_express_worldwide_eu_service_point
Express Worldwide EUdhl_express_mydhl_express_worldwide_eu

Shipping from Great Britain to Northern Ireland

DHL Express MyDHL API will support the B2B movement types for shipping from Great Britain to Northern Ireland, in accordance with the Windsor Framework.

To comply with the Windsor Framework, the following changes are required for the Non-Document shipment creation process.

  • Change the DHL product code in the request from N to 3.
  • Flag the shipment as being dutiable in the request.
  • Provide Invoice Line-Item data.
  • For B2B shipments sent on the Green lane, a UKIMS number with registration type code IMS is required in the registrationNumbers section of the API request.
  • For B2B shipments sent on the Red lane (and preferred for the Green lane), you are required to use paperless trade (PLT) to provide a copy of the invoice.
  • No changes are required for Document shipments.

For more information, see Implementing a DHL Integrated Solution: Windsor Framework Requirements with My DHL API.

Return Services

DHL Express MyDHL API supports creating return labels.

During carrier account setup, merchants can select the Return Label/QR Code Validity Period. This setting determines how long return shipment data is stored and how long labels or QR codes remain active for use.

The allowed validity periods are:

  • 3 months
  • 6 months
  • 12 months
  • 24 months

The carrier offers a Label-free shipping feature where the driver prints the label upon pickup via a QR code. However, the carrier advises against this for high-volume shipments, as they will not print labels for large quantities.

Returns are only available with the following services:

  • DHL Express Domestic - N
  • DHL Economy Select (nondoc) - H
  • DHL Express Worldwide (nondoc) - P
  • DHL Economy Select EU - W
  • DHL Express Worldwide EU - U

Packages

The following carrier package types are available for DHL Express MyDHL API services:

NameAbbreviationAPI CodePackage Attributes
Box 33BXdhl_express_mydhl_3bxInternational, Domestic
Box 2 (Cube)2BCdhl_express_mydhl_2bcInternational, Domestic
Box 2 (Flat)2BPdhl_express_mydhl_2bpInternational, Domestic
CE1CE1dhl_express_mydhl_ce1International, Domestic
Box 77BXdhl_express_mydhl_7bxInternational, Domestic
Box 66BXdhl_express_mydhl_6bxInternational, Domestic
Box 44BXdhl_express_mydhl_4bxInternational, Domestic
Box 2-A2BXdhl_express_mydhl_2bxInternational, Domestic
Card Envelope1CEdhl_express_mydhl_1ceInternational, Domestic
WB1WB1dhl_express_mydhl_wb1International, Domestic
WB3WB3dhl_express_mydhl_wb3International, Domestic
Express EnvelopeXPDdhl_express_mydhl_xpdInternational, Domestic
Box 8 (Jumbo Large)8BXdhl_express_mydhl_8bxInternational, Domestic
Box 5 (Jumbo Small)5BXdhl_express_mydhl_5bxInternational, Domestic
WB6WB6dhl_express_mydhl_wb6International, Domestic
Tube LargeTBLdhl_express_mydhl_tblInternational, Domestic
Tube SmallTBSdhl_express_mydhl_tbsInternational, Domestic
WB2WB2dhl_express_mydhl_wb2International, Domestic
Your Own PackageYOPdhl_express_mydhl_yopInternational, Domestic

Adding Shipment Insurance

DHL Express MyDHL API supports adding carrier insurance to shipments created with ShipStation API.

Review our insurance page for details on adding insurance to your shipments.

Label Support

  • Label sizes: 4" x 6", 4" x 8". ShipStation API requires you to select the "label_layout": "letter" setting for 4" x 8" labels.
  • Label formats: PDF, PNG, ZPL
  • Supports Unicode characters: YES

Label Reference Fields

DHL Express MyDHL API supports adding custom label messages.

Label messages map in the following way:

  • shipment.packages.label_messages.reference1 displays as a free, text label message
  • shipment.shipment_number or if not filled in, then shipment.external_shipment_id displays as Ref No
  • packages[].content_description displays as Content
  • shipment.packages.label_messages.reference2 displays as Ref Code (customer reference), but only when the 4x8 size is selected.

Sample Label shows Reference Fields

Multi-Package Labels

DHL Express MyDHL API supports creating multi-package shipments for all available services, except for the label-free shipping feature.

See our Multi-Package Shipping page for details about creating multi-package labels.

Label Branding

The ShipStation API integration with DHL Express MyDHL API does not support label branding. This feature is only available in the ShipStation UI.

Voiding Labels

DHL Express MyDHL API does not support voiding labels with ShipStation API.

There is no method to void a label on the carrier side. The internal voiding method is implemented. As per the carrier, the merchant can void the label at any time if it is not used.

DHL Express bills a merchant for the label at the completion check-point (not at the 1st scan, not at label generation). There should be no consequences from the carrier for not using the label generated by their system.

Paperless Labels

DHL Express MyDHL API supports paperless labels. Please see the Return Services section above.

Customs Declarations

DHL commercial invoices are available to download from the forms_download object in the label response.

  • Shipments to the UK need to have Freight Costs on the Commercial Invoice

When you connect the carrier account to ShipStation API, you can select the option ‘Use my own commercial invoice’. The default integration behaviour is to apply Paperless Trade/Automated Digital Imaging (PLT/ADI) on all orders. By selecting this option, you can turn it off and use your own commercial invoice or a fully non-PLT flow.

Paperless Trade (PLT)

Paperless Trade (PLT) is the regulatory term used when a customs regime will accept either data or electronic images to perform the customs clearance. For PLT shipments, the shipper only needs to print the transport label. No customs paperwork needs to be printed and handed over to DHL.

Non-PLT countries require a physical hardcopy of the paperwork to be provided by the shipper and affixed to the package to ensure it was not altered or > manipulated during transit. Wherever accepted, usage of the Paperless trade service is mandatory. There are a few scenarios where the shipment won’t be eligible for PLT, typically one of the following:

  • a) one of the countries in the origin/destination pair doesn’t support PLT, or
  • b) the declared value exceeds the maximum value allowed for one of the countries.

Automated Digital Imaging (ADI)

Automated Digital Imaging (ADI) is a benefit for Non-PLT shipments to reduce physical paperwork printing. DHL automatically stores the commercial invoice and waybill doc images and makes them available to authorized DHL staff globally. Therefore, to be compliant for non-PLT shipments, the shipper simply needs to print a copy of the commercial invoice and affix it to the sleeve on the package.

Use my own commercial invoice is not selected (OFF)

When Use my own commercial invoice is not selected (off), ShipStation API sends to the myDHL API a special service code WY** with bypassPLTError** feature on. It works for the following services only:

DHL Express Worldwide (nondoc) - P, DHL Express 09:00 (nondoc) - E, DHL Express 12:00 (nondoc) - Y, DHL Economy Select (nondoc) - H, DHL Express 10:30 (nondoc) - M, DHL Medical Express (nondoc) - Q

The WY special service code denotes the shipment as PLT, and the availability of the invoice data and DHL-generated invoice meets the data and image validation criteria for PLT. No need to print anything other than the transport label for the package.

**bypassPLTError - The default behavior of the DHL API is to return an error if PLT is requested but not available. The bypassPLTError feature will process the shipment successfully, convert the shipment from PLT to ADI, and return a warning message to print the customs paperwork as opposed to returning an error.

Use my own commercial invoice is selected (ON)

When Use my own commercial invoice is selected (ON), then neither the WY special service code nor the bypassPLTError feature is used. The shipper will be on fully manual/non-PLT, and will need to physically print the commercial invoice and give the paperwork to the carrier. For this scenario, ShipEngine will request the waybill document on all shipments from myDHL API as well as the commercial invoice doc. Waybill Docs are required to print and give to the carrier, along with a hard copy of the commercial invoice for shipments that aren’t processed as PLT or ADI.

For merchants who want to control which particular international shipments they apply a PLT solution to, use another configuration. Select the Use my own commercial invoice option and set the shipment parameter advanced_options.paperless_invoice to true. With this setup, only the shipment with this advanced option selected will be sent with the WY special service code. The bypassPLTError feature would not be applied. If the PLT is not available for a particular shipment, then the customer will receive an error from the carrier's API.

To avoid violating the arrangements with the carrier, it is important to remember that the configuration of the ShipEngine/ShipStation/DM/MPM or any other internal generic commercial invoice document is not allowed for this integration.

Find more information on pages 20-24 of the carrier’s Solution Provider Companion Guide.

Delivery Confirmation

Confirmation TypeAPI CodeCarrier CodeDescription
No Signature Requiredrequest.confirmation=NoneN/ANo mapping to the carrier API. Signature is included in the services
Signature Requiredrequest.confirmation=SignatureSXSignature is required for the shipment to be delivered. This signature may be a neighbor, building manager, or the recipient can authorize the release of the package (without being present).
Adult Signaturerequest.confirmation=AdultSignatureSDRequires a signature from someone 21+ with government-issued photo ID upon delivery. It is commonly used for alcohol, tobacco, firearms, or high-value items.
Direct Signaturerequest.confirmation=DirectSignatureSFCommonly used for valuable or sensitive items that require guaranteed delivery to the specified, authorized recipient.

See our Delivery Confirmation page for more details about using the confirmation property.

Advanced Options

DHL Express MyDHL API supports certain advanced options, which you can add to the shipment object when creating a shipment or label.

OptionCode
Dry Iceadvanced_options.DryIce
Saturday Deliveryadvanced_options.saturday_delivery
Duties Taxes Paidadvanced_options.duties_taxes_paid
Bill Duties to Senderadvanced_options.bill_duties_to_sender
Paperless Invoiceadvanced_options.paperless_invoice
Direct Signatureadvanced_options.DirectSignature
Delivery to Neighbouradvanced_options.delivery_to_neighbour
Windsor Framework Detailsadvanced_options.windsor_framework_details.movement_indicator
300 DPI labeladvanced_options.label_300dpi

To ensure you always have the most up-to-date information about a carrier's advanced options, use the list carrier options call.

Manifests

DHL Express MyDHL API does not require manifesting your shipments.

Scheduling Pickups

DHL Express MyDHL API supports scheduling pickups using ShipStation API.

Pickup scheduling is available as well as Pickup cancelling, and there are no cancellation fees.

When scheduling pickups:

  • The date should not be a past date or a date more than 10 days in the future.
  • The time is the local time of the shipment based on the shipper's time zone.

Delivery to a Service Point (PUDO)

DHL Express MyDHL API supports delivery to a service point (PUDO) for all DHL Express services.

Service point information is retrieved from the DHL Location Finder API and contains the data required for sending and receiving parcels. The integration can retrieve service points within a specified radius. The DHL Location Finder API limits results to a maximum of 50 locations per request and supports a maximum radius of 1,000,000 meters.

The integration includes a GetServicePoint() method that returns full details for a selected service point by its DHL Service Point ID.

When shipping to service points:

  • The date should not be a past date or a date more than 10 days in the future.
  • The time is the local time of the shipment based on the shipper's time zone.

See our Intro to Service Points for more details about how to use service points with ShipStation API.

Tracking

ShipStation API's integration with DHL Express MyDHL API supports receiving tracking updates via API (Single-Item). Review our ​Track a Package guides​​ for details on tracking with the ShipStation API.

Dangerous Goods

To send Dangerous Goods (DG) shipments with DHL Express MyDHL API, customers must have approval on their DHL Account Numbers. Approval is given for specific ServiceCodes/ContentIds (Contract sign off).

If customers send DG shipments and they do not have approval/contract, then those shipments will be stopped in the DHL facility.

See the ShipStation API Dangerous Goods page to learn which dangerous goods objects and properties you should use, about properties required by various carriers to indicate you are shipping dangerous goods (DG), and how to remain in compliance with the carrier's dangerous goods shipping requirements.

Create a Dangerous Goods Shipment

To create a DG shipment, the following DHL-specific values are required in the request: [DangerousGoods.ServiceCode] and [DangerousGoods.ContentId].

  • DHL customers will likely need to have logic to 'calculate' ContentId/ServiceCode - similar to the one available in ShipStation API.

  • Some specific use cases will also require a UN Number, Special Provision (CustomDescription), or DryIceNetWeight (DryIce).

For specific Request elements, see the DHL Express Dangerous Goods.pdf.

Notes about Dangerous Goods Shipments

The customer is responsible for the correct packaging of the shipment, including additional labels, stickers, and documents (as required by the Dangerous Goods regulations).

ShipStation API-implemented logic to calculate ContentID/ServiceCode is based on the DangerousGoods data provided in the request. Logic covers the vast majority of potential use cases. However, we are not able to calculate some ContentIds.

Any regulation changes (ADR/IATA) might trigger changes on the DHL side and consequently. ShipStation API logic to find/calculate ContentId/ServiceCode. In that case, additional Analyst/DEV work might be required to accommodate the new regulations.

Notes and Limitations about DHL Express MyDHL API

DescriptionAdditional Notes
Warning message at label creation to print the customs paperworkbypassPLTError - The default behavior of DHL’s API is to return an error if PLT is requested but not available. The bypassPLTError feature will process the shipment successfully, convert the shipment from PLT to ADI, and return a warning message to print the customs paperwork instead of returning an error. bypassPLTError=true is used as a default setup in the integration.
"warnings": "7988: Please note on printing the hardcopy of all the shipment paperwork and affix it to the package."Automated Digital Imaging, or ADI, is a benefit for Non-PLT shipments to reduce physical paperwork printing. DHL automatically stores the commercial invoice and waybill doc images and makes them available to authorized DHL staff globally. Therefore, to be compliant for non-PLT shipments, the shipper simply needs to print a copy of the commercial invoice and affix it to the package sleeve.

Disconnecting Your DHL Express MyDHL API Account

See the Disconnect section in our Delete a Carrier page for the process of deleting or disconnecting a carrier from ShipStation API.

NOTE:

If you disconnect a carrier account and reconnect it, the account will have a new carrier_id in ShipStation API.