DHL Express Comprehensive Shipping XML for Magento® 2.x
DHL Express Comprehensive Shipping XML is a Magento 2 extension that allows you to manage the entire DHL Express shipping cycle using the DHL Express courier API.
The extension gives you a wide variety of settings. Get up-to-date shipping prices and create thermal (ZPL, EPL) and PDF DHL Express shipping labels. Create pickups and track your parcels.
Here are the main benefits of the DHL Express Comprehensive Shipping XML extension:
Thermal and PDF Shipping Labels
The creation of shipping labels is possible both manually and automatically, and even on a schedule. The DHL Express Comprehensive Shipping XML extension allows you to associate a shipping label with an order, shipment, or credit memo. All labels are stored on your server and you can access them at any time from the admin interface of your Magento site.
Before creating each shipping label manually, you have the opportunity to select the required shipping method from those provided by DHL Express and immediately see the shipping cost. In automatic mode, labels are created either according to the method chosen by the buyer when ordering or at the minimum / maximum price of all DHL Express methods.
Paperless Commercial Invoice
DHL Express Comprehensive Shipping XML supports worldwide shipping. Therefore, for delivery abroad, it is proposed to use the paperless (or paper) registration of the customs invoice (International Invoice). To do this, the DHL Express Comprehensive Shipping XML extension supports the following settings: Harmonized and ScheduleB codes, Dangerous Goods and Hazardous Materials, Terms of Shipment, Reason for Export, Sold To Address, and others.
Shipping Rates & Shipping Methods
Get shipping prices on checkout just like on dhl.com. Shipping prices usually depend on the insurance, the declared price of the parcel, weight, dimensions, etc. All of these items are taken into account by our DHL Express Comprehensive Shipping XML extension. The cost of the method can be both static and dynamic. Both prices and display method can be adjusted by setting limits. Optionally, you can display the method only in the admin panel You can create as many methods as you like. Read more here.
Payment, COD, Insured
Customize the payer considering your business processes. Shipping can be paid by the Shipper or Third Party, while Duty and Taxes can be paid by both the Recipient and the Shipper. You can also regulate insurance (Insured) and use Invoice Line Total. It is possible to indicate, if necessary, a tax number (Tins number (Taxpayer Identification)). If the buyer wants to pay for the goods upon receipt, you can use the COD (Cash on Delivery) option.
Return Shipping Labels and RMA
Creating return shipping labels is as easy as creating regular shipping labels. A big plus will be the option to create return labels at the same time as a regular label.
The administrator can give the buyer the ability to create and print return labels himself.
Pickup and Tracking
Order a parcel delivery service directly from the admin panel of your online store. Everything is done easily and simply. You choose for which created labels you want to order a pickup and the extension will send a request to the delivery service. You can always see what has been shipped in each pickup. You can see a sample Pickup Slips document for multiple shipments here.
Once your packages have been shipped, you can track them using our DHL Express Comprehensive Shipping XML extension. You can see all the points that the package has passed and where it is at the moment.
Printing
Printing is one of the most important steps when working with shipping labels. Use our app to print thermal and PDF labels on your local printers. You can get it here.
Configuration
The possibilities of our extension are truly unlimited thanks to flexible settings. At the same time, the settings are intuitive and many are set by default. You can configure the extension for a specific store or a specific country. You can apply some settings to domestic shipments, and apply other settings to foreign shipments. Completely separate settings are also possible for regular and return labels. Perhaps for each continent, you would like to have individual settings. And this is also possible with our extension.
Demo
You can try this extension for 30 days. Ask for the demo on this page with Request demo; how it works is explained on Try an extension for 30 days.
Hyva Theme and Hyva Checkout
Compatible with Hyva Theme and Hyva Checkout
| CMS | Magento 2 |
|---|---|
| Compatibility | 2.4, 2.3 |
| Features |
|
The extension is installed with Composer. Which repository you add depends on where you bought it — the install itself is the same either way.
1. Connect the repository
Bought on extmag.com. Your account page shows the repository address and your personal credentials, together with the two composer config commands to paste. Run them once per project; every extension you own is then available from the same repository.
Bought on the Adobe Commerce Marketplace. The package is served from repo.magento.com, which most stores already have configured. If not, add the access keys from your Adobe account under My Profile -> Access Keys.
2. Install the extension
Run in the project root:
composer require extmag/dhlshipping2 php bin/magento setup:upgrade php bin/magento cache:flush
Composer resolves the shared Extmag packages the extension depends on, so there is nothing else to require by hand.
Log out and log back into the admin, and the extension is ready.
Label printing
To print labels on a local or network printer, install our printing software from here, then follow Installing and configuring el-Print.
Hyva Theme and Hyva Checkout
Storefronts on Hyva need one more package:
composer require extmag/shiplab-hyva composer require magewirephp/magewire
The integration replaces one Hyva template, view/frontend/templates/checkout/shipping/method-list.phtml. If your theme already overrides that file, merge the changes rather than replacing it.
Trying it before you buy
You can ask for a 30-day demo of this extension and install it exactly as above — same package, same repository, same commands. How demos work.
Installing without Composer
The archive can be unpacked into app/code/Extmag/ instead, but that leaves the extension outside dependency management: its shared packages have to be installed by hand and updates never reach it. Use Composer for any store you run, demo included.
For any question about the installation, please contact our technical support.
-
User Guide User Guide.pdf · 824.2 KBDownload
-
Reference Manual Reference Manual.pdf · 396.8 KBDownload
-
Installation Guide Installation Guide.pdf · 242.5 KBDownload
DHL Express is set up from the Extmag menu in the Adobe Commerce (Magento) admin. Add the carrier account, the addresses you ship from, the boxes you pack into and the shipping methods customers see, then tune the carrier configuration.
DHL Express Account
- If you do not have DHL Express credentials yet, get them from DHL Express. You will need a Site ID, password and account number from DHL.
- Go to Admin Main Menu -> Extmag -> Settings -> Shipper Accounts.

- Click the “Add New Shipper Account” button.
- Enter your credentials and click “Save”. Leave Live Account set to No while you test against the carrier sandbox.
Addresses
- Go to Admin Main Menu -> Extmag -> Settings -> Addresses.

- Click the “Add New Address” button.
- Fill in the company name, contact, phone and full address, then click “Save”. Add one address per location you ship from — they are selected separately as the billing address and the ship-from address.
Package Boxes
- Go to Admin Main Menu -> Extmag -> Settings -> Package Boxes.
- Click the “Add New Box” button.
- Enter the inner and outer dimensions, the empty weight and the maximum load, then click “Save”. The packer uses these boxes to work out how an order is split across packages, so the more of your real boxes are listed the closer the quoted rate is to what you are charged.
Shipping Methods
- Go to Admin Main Menu -> Extmag -> Shipping Methods.
- Click the “Add New Shipping Method” button.
- Choose DHL Express as the carrier, decide which of its services to show — all of them, a specific list, or only the cheapest or the most expensive — and restrict the method by website and customer group if you need to. Click “Save”.
Configuration
- Go to Admin Main Menu -> Extmag -> Settings -> DHL Express Configuration.

- Open the General tab first and select the shipper account, the billing address and the ship-from address you created above.
- Work through the remaining tabs, filling in what applies to your account.
The tabs cover:
- General — account, addresses, destination type, the default shipping method and shipping instructions.
- Packaging — packaging type, dimensions and how an order is split across packages.
- Returns — return labels and RMA handling.
- References — the reference numbers printed on the label and their bar codes.
- Payments — who is billed for the shipment and duties, and the payer account details.
- Notification — the events the carrier notifies about and the recipients.
- Printing — document formats and the printer used for each document type.
- Pickups — whether pickups are booked automatically after a label is created or scheduled manually.
- Tracking — how often parcels are polled and how statuses are written back to the order.
- International Invoice — the paperless commercial invoice, its signature image and customs content.
- Automatic — when labels are created without an operator.
- Mass Actions — creating labels in bulk from the order grid.
- Manual Actions — creating a single label from an order.
- Other Options — logging and the remaining carrier-level switches.
Every setting can be applied per website and per destination country, so a rule that only makes sense for one market does not have to affect the rest.
The full field-by-field reference, including the exact configuration paths, is in the Reference Manual supplied with the extension.
3.4.6
Shiplab: Made log retention configurable and sped up the cleanup cron.
3.4.5
Shiplab: Replace raw filesystem calls in settings import with Magento file driver.
3.4.4
Shiplab: Replace raw filesystem calls in settings import with Magento file driver.
3.4.3
Shiplab: Added support for multiple label files per tracking number with -N suffix.
3.4.2
Shiplab: Added zero-weight guard and weight diagnostics for shipping rate calculation. Shiplab: Removed legacy Additional Price fields and migrated data to price rules.
3.4.1
Replaced multiselect product categories field with category chooser frontend model. Shiplab: Replaced multiselect categories with AJAX tree chooser in dimension config. Added support Magento 2.4.9 and Adobe Commerce 2.4.9
3.4.0
Shiplab: Fixed attribute ID retrieval order in category EAV setup patch.
3.3.10
Shiplab: Added response post-processing hook and fixed logo data handling.
3.3.9
Shiplab: Added BlackoutRules feature with full CRUD, date picker mixin, and schedule migration.
3.3.8
Initialized service array at each loop iteration in rate response parser. Shiplab: Fixed null safety issues and added numeric attribute validation. Added support Magento 2.4.8-p4 and Adobe Commerce 2.4.8-p4
3.3.7
Fixed service code resolution to preserve value set during step three.
3.3.6
Optimized the algorithms for packing items into boxes to ensure better efficiency.
3.3.5
Fixed bundle product handling for Ship Separately/Together and price/weight types.
Added config option to include zero-price bundle children in international invoices.
Fixed property type declarations for PHP 8.x compatibility.
3.3.4
Fixed undefined array key warnings and minimum weight validation
Added proper null coalescing for street address lines to prevent undefined array key warnings
Added minimum weight validation (0.1) in Rate and Ship requests to avoid API errors with zero weight
3.3.3
Fixed loadedData check in DataProvider classes for PHP 8.x compatibility.
Fixed place order callback to pass data for proper Braintree payment handling.
3.3.2
Fixed reference_id empty check and test rate URL
3.3.1
Refactored code.
3.3.0
Added support for PHP 8.4
3.2.9
Added support Magento 2.4.8-p3 and Adobe Commerce 2.4.8-p3
3.2.8
Added support Magento 2.4.8-p2 and Adobe Commerce 2.4.8-p2
3.2.7
Fixed a bug with the Schedule New Update form on the category page
3.2.6
Added support Magento 2.4.8-p1 and Adobe Commerce 2.4.8-p1
3.2.5
Added support Magento 2.4.8 and Adobe Commerce 2.4.8
3.2.4
Fixed a bug when the order has only virtual products
3.2.3
Added support Magento 2.4.7-p5 and Adobe Commerce 2.4.7-p5
3.2.2
Added support Magento 2.4.7-p4 and Adobe Commerce 2.4.7-p4
3.2.1
Fixed a bug with SplitButton for the order view page in the admin panel
3.2.0
Fixed logs for shipping rates
Added support Magento 2.4.7-p3 and Adobe Commerce 2.4.7-p3
3.1.9
Fixed the price format on the label creation page in the admin panel.
Improved the integration with the Hyva Theme.
3.1.8
Fixed a bug with division by zero
3.1.7
Fixed a bug with a recursive function for shipping rates
3.1.6
Fixed a bug with shipping rates debugging.
Fixed CSP for printing by websocket.
3.1.5
Fixed a bug with the deactivating module
3.1.4
Fixed the z-index issue on the label details page.
Added support Magento 2.4.7-p2 and Adobe Commerce 2.4.7-p2
3.1.3
Fixed Dutiable option for International Invoice
3.1.2
Fixed a bug with printing_template
3.1.1
Fixed error with archive_doc
3.1.0
Added support Magento 2.4.7-p1 and Adobe Commerce 2.4.7-p1
3.0.9
Fixed cache for shipping rates
3.0.8
The issue with printing return labels on the customer side has been fixed.
3.0.7
Fixed the packaging box selector
3.0.6
Fixed calculation of the estimated value of a parcel including a discount, which caused the error "Missing or Invalid Monetary Value of Commodity 1's Commodity Value"
3.0.5
The issue related to the customer group and guest order creation in the admin panel has been fixed
3.0.4
Added support Magento 2.4.7 and Adobe Commerce 2.4.7
3.0.3
Integration with Hyva Theme and Hyva Checkout has been added
3.0.2
Added support Magento 2.4.6-p4 and Adobe Commerce 2.4.6-p4
3.0.1
Improve cache for the shipping rate request
3.0.0
Improve the speed of calculating rules
2.9.9
Fixed the JS bug with placing the order
2.9.8
Updated linked modules
2.9.7
Added the ability to rename original courier shipping methods
2.9.6
Added support Magento 2.4.6-p3 and Adobe Commerce 2.4.6-p3
2.9.5
Fixed the packer for packages of the shipment
2.9.4
Fixed a bug with downloading shipping logs
2.9.3
Added two options "Show Method if Not Applicable" and "Displayed Error Message" in the Extmag Shipping method configuration
2.9.2
Fixed a bug when it was impossible to save the Shiplab configuration in Magento 2.4.6-p1
2.9.1
Fixed PDP printing with the QZ Tray program
2.9.0
Support the QZ Tray program for printing labels.
2.8.9
Fixed a bug with Sales Rules.
Removed deprecated code.
2.8.8
Fixed sources for orders after saving the tracking number
Added support Magento 2.4.6-p2 and Adobe Commerce 2.4.6-p2
2.8.7
Fixed calculating prices for shipping methods.
Fixed shipping price rules.
2.8.6
Fixed bug with shipping price rules
2.8.5
Fixed bug with session and manual label creation
2.8.4
Improved selection of Websites and Customer Groups for Shipping Methods
2.8.3
Fixed bugs on the checkout page of the admin panel
2.8.2
Added support Adobe Commerce 2.4.6-p1
2.8.1
Fix bug with musltiselect fields and values as type integer
2.8.0
Fixed ACL resources
2.7.9
Fixed a bug with the time of the Pickup
2.7.8
Fixed bug with the Volume Weight switcher
2.7.7
Support Adobe Commerce (Magento) 2.4.6
Fixed some minor bugs
2.7.6
Fixed some bugs for PHP 8.1 support
2.7.5
Added max volumetric weight for a package.
Added type of volumetric weight value.
Fixed some bugs with volumetric weight.
2.7.4
Fixed bugs in dependencies libs.
2.7.3
Fixed a bug with volumetric weight
2.7.2
Updated dependencies.
Fixed some minor bugs.
2.7.1
Fixed bug with deprecated functionality in the dependent extension
2.7.0
Added support for Product Volumetric Weight
2.6.3
Fixed PHP warnings
2.6.2
Support Adobe Commerce (Magento) 2.4.5-p1
2.6.1
Fixed the country_id condition type for the shipping method rules
2.6.0
Fixed a few bugs linked with PHP 8.1
Added "Additional Price Actions" for applying multiple rules for the shipping method.
2.5.5
2.5.4
Added "Direct Signature" option for Delivery confirmation
2.5.3
Added support for PHP 8.1 and Magento 2.4.4
2.5.2
Improve PHP code.
Removed the json_request_data field from the form of creating labels.
2.5.1
Fixed js for form step two
2.5.0
Go to subscription
2.4.2
Fix showing error with converting pdf to image
Fix folders creation for media data
2.4.1
Cut product name to 75 symbols for International Invoice
2.4.0
Added the ability to display shipping costs both with tax and without tax
2.3.5
Fix bug with scheduleb_code
2.3.2
Sending email with creating return labels and added a new email template
Optimizing code
Refactoring code
2.3.0
DHL API version updated from v6.2 to v10
2.2.0
By default, the address specified in the store settings is used, if the address is not created and selected in the extension settings.
When deleting a label, its tracking number is also removed from the order and shipping.
If the product is configurable, then the name of its child is used for the international invoice.
Added the ability to enable the use of a direct link to the carrier's website to receive tracking information in the admin panel and in letters sent to customers.
2.1.0
Added the ability to control the display of shipping methods by date, time of day, and days of the week.
Added the ability to download log files from the log list page.
Refactoring PHP code
2.0.0
Added EORI Number
Fixed some bugs
Refactoring PHP code
1.9.0
A new parameter Allowed areas have been added that allows you to show the delivery method only in the admin panel
"Country from" and "country to" was added in the Directions column on the labels grid page
1.8.0
Added Consignee VAT/Tax/EORI ID
Support UK Brexit
1.7.0
Added links to order, shipment, creditmemo, and user account in the grid of shipping labels
Added the Create a new label item in the Action column to the grid of shipping labels, which allows you to create another shipping label for the same order and shipment
1.6.0
Added dependency from Core module
Fixed bug with system configuration
Fixed bug with access control list
1.5.1
Fixed access control list and admin menu
1.5.0
Added additional print button on order and shipment page in admin
1.4.1
Added PHP library textalk/websocket.
1.4.0
Added print by the network.
Added auto print.