All Collections
Connect MyDHL to ShippyPro
Connect MyDHL to ShippyPro
Updated yesterday

MyDHL is a web service from DHL, one of the major logistics providers globally.

In this article, you will learn how to connect MyDHL to ShippyPro and add additional options such as a return label in the box or paperless trade to your existing connection. ✨


1. Before you start

Register on the DHL Developer Portal

To proceed with the connection, you need to have an API Key, an API Secret and an Account Number that you can retrieve by registering to the DHL Developer Portal if you don't have one yet.

Fill out the DHL onboarding form

  • Go to APIs > Browse all services

  • Click on DHL Express - MyDHL API

  • Then on Get Access

  • Fill in your company data.

  • At "How would you like to use the API?" inside the DHL registration page, you should select the option "I require credentials to DHL Express – MyDHL API for an existing plugin/ecommerce platform/third-party solution" and simply add ShippyPro.

  • Concerning the section called "Requested Services", please tick over all the services available. The field named "Transaction volume per month" is only useful to DHL for statistics purposes, therefore it won't influence you on the use of the API.

  • After some hours you can check your DHL Developer profile where you should be able to see your App Status as approved.

  • Then, click on DHL EXPRESS – MYDHL API under App Name where you will Request Production Access on a red button. Once you click it, you will receive confirmation that the request has been sent within minutes and the local DHL team will need to approve it according to their timeline.

    In case the request remains pending please contact DHL directly in order to speed it up.

Please also refer to DHL guide step-by-step guide here in case of questions or doubts.

2. Connect MyDHL to ShippyPro

Now that everything is correctly set up in MyDHL portal, you're ready to connect it to ShippyPro.

  • Navigate to Carriers > Connection and click on MyDHL Logo (simply type "MyDHL" on the search bar to spot it in a sec).

  • If you do Cash on Delivery shipments, remember to flag the checkbox "I confirm that I am aware of the below message":

  • Enter your API key, API Secret and Account Number

    ❗❗ Be sure that you avoid inserting spaces when you copy and paste, otherwise you will see the error "Invalid Credentials"

  • Pick your label type and your product code. Remember to ask your DHL Account Manager which are your active product codes. If you'd like to add multiple services, you'll need to create a new connection for each one.

Label Format




Product Code























  • Please note that the service EXPRESS WORLDWIDE NONDOC is for merchandise only and EXPRESS WORLDWIDE DOC service is meant for documents, not other kinds of physical goods.

📌If you'd like to include multiple services in the same carrier connection you'll need to select Product Code: ALL SERVICES.

📌If after adding the credentials from Carriers > Edit, or after making the first shipment, we return an Invalid Credentials error, make sure that the credentials request was made correctly and that there are no empty spaces before or after all the credentials details.

3. Additional Options

🔁 Enable Return Label in the box

If you’d like to print shipping and return labels together while you ship your orders (return label in the box), add your DHL Return Account Number inside the DHL Account Number field and your Account Number in the DHL Return Account Number field. Then tick Enable Return Label in the box option at the bottom and confirm. Please note that the label format will be the one you chose for outbound shipments since it cannot be changed for return labels.

📌 If you’d like to make Returns separately from the main shipment, you need to create a new MyDHL connection. This time, insert your Return Account Number in the Account Number field and your Account Number in the DHL Return Account Number field. So basically, the exact opposite of the first set-up. Do NOT tick the Enable Return Label in the box option. Finally you can create your manual shipment for the Return: click here to learn how.

By selecting Fixed Return Receiver Address (Only for 'Enable Return Label in the box'), if Enable Return Label in the box option is checked and an address is selected from the dropdown menu, the labels in the box are redirected not to the sender address, but to the address set in the dropdown.

You can add and edit the available address at any moment from Admin > My Addresses and parcels > My addresses.

🧾 Generate invoice with DHL format

This option will allow you to automatically generate your invoices for international shipments. You can choose among proforma and commercial invoice.

By selecting this option the invoice will be generated together with the shipping label!

🌱 Paperless Trade

You can decide to enable the Paperless documentation option by ticking "Paperless Trade" in Carriers > MyDHL > Edit. In this case, you will need to digitally transmit to the carrier an invoice by uploading your ETD invoice from Label Creator > Invoice Manager page, via UploadPaperlessDocumentation API call or requesting to DHL the generation of an invoice with their format (in this case, please read the next points).

It is also possible to upload the Customs declaration type from Label Creator > Invoice Manager, and decide to enable the option Generate Invoice with DHL format from Carriers > MyDHL > Edit.

It is important to that to note that you'll need to select the correct typology when uploading your documentation, for example, "Customs Declaration".

If you select both Generate Invoice with DHL format and Paperless options from Carriers > MyDHL > Edit, as well as upload the Customs Declaration from Label Creator > Invoice Manager, both the commercial invoice and customs declaration will be electronically transmitted to the carrier.

Some practical examples:

  • the option "Paperless Trade" is enabled, but neither the ETD is uploaded for a specific order, nor the option "Generate Invoice with DHL format" is enabled: we will return an error because you're requesting to send a paperless invoice, but no invoices are associated with that order

  • both "Generate Invoice with DHL format" and Paperless options are enabled: in this way, you are requesting DHL to generate an invoice and to send it digitally without having to physically attach the invoice to the package (Paperless Trade)

  • both ETD document is uploaded, and the option "Generate Invoice with DHL format" is enabled: we will return an error because you are asking to transmit 2 different invoices for a single order

  • You didn't flag the "Paperless Trade" option, but still proceeded with uploading the document via the "UploadPaperlessDocumentation" call or via Invoice Manager - the documentation will still be transmitted to the carrier in Paperless mode.

📌 Important note for NI > UK shipments: please note that despite Northern Ireland having UK formatted postal codes, the only difference from mainland UK is that it is deemed part of the EU, so sending from Northern Ireland into Europe does not require export documents - it travels as Free Circulation material.
Whereas shipping from the UK to Europe will require export documents for the goods to enter the destination.

🗓 Extend label validity

This service is usually used for return labels, and it will add the extension RET on the label created by MyDHL.

By selecting the Extend label validity option, you can extend the duration of a label without knowing the actual date of handling to the Carrier

🚚 Add freight charges to commercial invoice

If you select this option, the shipment costs will be added to the commercial invoice.

🧪 Test Mode

Enable the Test Mode if you'd like to make some test shipments. Please keep in mind that this option should be flagged only if you have test credentials, not production credentials!

⚠️ Dangerous Goods

For each shipment containing Dangerous Goods you must insert the contentId of the shipped dangerous goods.

If the shipment contains Dry Ice UN1845 you must insert the weight of the transported dry ice.

If the goods are in Excepted quantities in accordance with IATA, you must insert also the UNCode of the dangerous goods, available here.

✍🏻 Custom Label

If you want, you can also enter a Custom Label to recognize the connection among all the others.

📆 Default amount of additional weekdays required to prepare the shipments

This information is used by DHL to find out the planned date of shipment, but it is not equivalent to a pickup request (here how to do). The default amount of days required is 1 day, you can change it as you please by selecting the number of required days. The system will automatically skip bank holidays and weekends in the required days count.

📌 Make sure to do this on all your MyDHL connections, even though you might use only one service.

📌 If you choose "same day" ask DHL until what time you can create shipments, otherwise you may get an error.

4. Service Point Activation

If you wish to use myDHL's Service Point, you will need to contact your contact person to verify ODD service enablement (required to use this feature).

Once ODD service is enabled, you will need to send the courier's technical department a screenshot of the Carrier Option where the Service Point is chosen, and request service enablement on the desired username.

5. Errors & troubleshooting

While trying to connect MyDHL or while using it to ship your orders, you might experience some errors. No panic: keep reading to discover how to fix them! 🧑‍🔧

For more info and tips on errors on MyDHL connection please consult our step-by-step guide here.

  • Requested product not available for pickup date

In case the next day is a Bank Holiday, you might receive this error, as the system picks up the next day for pick-up by default. Make sure to change the value "Select the default amount of additional weekdays required to prepare the shipments" to 2 or more days from Carriers > Connection > myDHL > Edit for all your myDHL connections (not only the one you are using for the specific shipment)

  • 7008: The requested Special Service Code: #/valueAddedServices/0/serviceCode ‘WY’ is not available between this origin and destination. Please validate the products and services combination (via the /rates or /products service) or contact our customer service.

This error appears when:

  1. You activate the Paperless option for a non-taxable shipment (such as a domestic or intra-EU shipment).

  2. The Paperless option is not available for that extra EU destination. In this case, try to flag the Generate Invoice with DHL format in the connection modal of the carrier and reprocess the shipment.

  • 7120: Required either #/outputImageProperties/imageOptions where typeCode=invoice or provide #/documentImages
    The error message indicates that you need to activate the flag "Print Commercial Invoice" in the carrier modal (from Carriers > Connections > Edit) OR to upload the ETD file.

  • ''100002: Null Validator: SHIPMENT_ID not found in request map., 100002: Null Validator: SHIPMENT_ID_CHECK_DIGIT not found in request map.''
    This error message refers to an internal DHL problem that does not allow AWB and JJD number assignment. Usually this is a temporary failure.

    If the malfunction persists, please contact your DHL representative.

  • Error Da rielaborare: #/customerReferences/0: required key [value] not found, #/outputImageProperties/customerBarcodes/0: required key [content] not found

    • In this case, please make sure to have correctly added the order ID as it's considered as mandatory info for the Carrier.

  • Da rielaborare: 1001: The requested product(s) (P) not available based on your search criteria.(409224511)

    • The indicated destination city is invalid: eg. "cityName": "NA". You can check the postcodes and locations accepted by myDHL system at this link:

  • Da rielaborare: 1001: The requested product(s) (W) not available based on your search criteria

    • The indicated service is not eligible to be used for the shipment in question. Please choose another service and try again to ship the order.

  • 410138: Requested product(s) not available at payer, H/-

    • The Product Code (meaning the DHL service) is wrong. Please check it with your DHL representative and select the correct one.

  • Invalid Credentials

    • In this case, always check if you input the correct credentials, and pay extra attention if you added an extra space in the API Key or API Secret. You can check the settings from Carriers > Connection and, once the Carrier is selected, click on Edit.

  • Value is shorter than minimum length

    Either sender's VAT number or recipient's IOSS number is missing from your profile

  • MyDHL - error 8009: Shipper Billing Country must either be same as Billing Country of Shipment Origin or the Shipper Account must be an Impex Account

    In case you’re making return shipments with MyDHL, the problem could be related to the fact that you haven’t set a return acount number from your MyDHL connection modal.

    For more info on how to correctly configure your account for the return shipments, please check out the section 🔁 Enable Return Label in the box in this guide.

  • MyDHL - Unedfined Error. Status code: 400

    This happens mostly when your API credentials have not been activated on DHL's side: if you encounter this error, please double check in your account on DHL's developer portal if your API credentials have been activated for production, or request assistance to your DHL representative.

  • #/content: required key [description] not found.

    Select in the profile preferences as the reference number our Shippypro number.

    Also, check if there are no gaps in the call made (whether you ship through the platform or via API).

  • Unable to send this shipment with the selected rate. Please try again or use a different rate.

    It is not possible to Fix the order. You should either push the order back on To Ship, create a manual shipment, or repeat the Ship call.

    In case you're shipping via API and you selected ALL SERVICES in the connection module, it's necessary to obtain both the CarrierService and RateID via GetRates call, and then include those two fields in your Ship API request.

    In case you selected a specific service in the connection module, you don't need to include RateID in the Ship request.

  • 7121: #/content/exportDeclaration is mandatory when provided product is dutiable, please update and try again.

    Select Paperless Trade in the carrier configuration under Carriers > Connection. Also remember to include all the information relating to the CN22 so that the parcel is processed correctly at customs controls.

  • My live rates for DHL are not displayed at the checkout screen in Shopify! Why?
    Don’t worry, the solution to this might be very easy! Please make sure that your return address is not longer than 45 characters, if necessary you can split it between the two dedicated address fields. If the issue persists you can contact our Support Team for further assistance.

📌 Make sure to use only Latin characters when creating your shipments (for example, avoid Cyrillic, Japanese, or Chinese characters).

🔍 What's Next?

Did this answer your question?