DHL Paket shipping plugin
This plugin connects your shop to DHL Paket, Germany's parcel service, through your DHL business customer contract. You print the DHL labels of your orders from HikaShop, your customers can have their parcel delivered to a Packstation or a Postfiliale, and you hand them return labels and tracking links, without typing an address into DHL's portal.
Features- One shipping method per DHL product you offer: DHL Paket, DHL Kleinpaket, DHL Paket International, DHL Europaket and Warenpost International, each with its own price from HikaShop's usual shipping prices (fixed, by weight, by zone...).
- Shows each method only where its product goes: the national products in Germany, Europaket in the EU, the international ones abroad.
- Prints the label of an order from its page in the backend, in A4 or on your label printer's format, after checking the address with DHL if you wish, and keeps the PDF on the order.
- Creates the labels of many orders at once from the order listing, or by itself when an order reaches the status you choose.
- Cancels a label, and adds another parcel with its own weight for an order too big for one.
- Lets your customers choose a Packstation or a Postfiliale at checkout, on a list and a map of the nearest ones, with their DHL PostNumber.
- DHL's services: cash on delivery for the payment methods you choose, Ident-Check, visual age check (16 or 18), delivery to the named person only, signature, no delivery to neighbours, GoGreen Plus, Premium abroad.
- Fills the customs declaration (CN23) of parcels leaving the EU from your products: their HS code and country of origin.
- Creates return labels, as a PDF or a QR code to show at a Postfiliale, and sends them to your customer by email; your customers can also get theirs from their order page. A DHL Retoure label can come with each national label.
- Puts the tracking link of the parcel on the order, the customer's order page and the order emails, and shows DHL's latest status of a parcel on request.
- Closes the day's shipments (end of day manifest) from the method's settings.
- Shows in the method's settings whether DHL answers and accepts your credentials, and explains DHL's refusals in DHL's own words (the field and the reason).
How it works
- 1. Your customer chooses a DHL Paket method at checkout, and a Packstation or Postfiliale if it is one.
- 2. You open the order in the backend and press "Create the label", or the label is made when the order reaches your status.
- 3. DHL answers with the shipment number and the label, kept on the order; you print it and stick it on the parcel.
- 4. Your customer gets the tracking link in their order page and emails, and a return label when needed.
- 5. At the end of the day you close the day's shipments, if your contract asks for it.
- 1) You need a DHL business customer contract (Geschäftskundenvertrag) with DHL Paket, and its customer number (EKP) and billing numbers, one per product.
- 2) In DHL's business customer portal (Geschäftskundenportal), create a system user for the shop and note its user name and password.
- 3) On developer.dhl.com, create a free account and an app with the APIs Parcel DE Shipping, Parcel DE Returns, Location Finder - Unified and Shipment Tracking - Unified; note its API key and secret. Ask DHL for its production access from the app's page.
- 4) Install the plugin with Extensions > Install on Joomla, or with HikaShop > Plugins > Install Plugin on WordPress.
- 5) In HikaShop, go to System > Shipping methods, press New and choose DHL Paket. Make one method per product you offer (and one more in Packstation / Postfiliale mode if you want it), with its price and its zone.
- 6) Fill in the credentials, the billing number of the method's product and your shipper's address, save, and check that the Connection line says DHL accepts the credentials. Start with the Sandbox environment if you want to try first: it needs no contract.
Configuration
- DHL product: the DHL product of this method. Paket and Kleinpaket go within Germany, Europaket to business customers in the EU, Paket International and Warenpost International abroad.
- Billing number: the 14 digit billing number of this product in your contract. Empty in sandbox, DHL's test number is used.
- Environment: Sandbox to try, Production for real labels. Custom addresses is for a proxy between the shop and DHL, with the addresses below.
- API key and API secret: those of your app on developer.dhl.com.
- Business customer portal user and password: the system user of step 2. Empty in sandbox, DHL's published test user is used.
- Authentication, Token address, Shipping API address, Returns API address, Location Finder address, Tracking address: shown and used only with the environment Custom addresses.
- Shipper reference: a shipper address saved in DHL's portal. When it is set, the address fields below are not used.
- Name, Name 2, Street, House number, Postcode, City, Country, Email, Phone: the shipper's address printed on the labels.
- Print format: A4 for an office printer, or your label printer's format (910-300-700 for 103 x 199 mm labels...).
- Refuse addresses DHL cannot route: when on, DHL refuses a label whose address it cannot check; when off, it accepts it with a warning.
- Packaging weight (kg): added to the weight of the order's products.
- Premium: faster transport abroad, for Paket International and Warenpost International.
- When the parcel cannot be delivered: returned to you, or abandoned, for Paket International.
- Customs: type of export: what the parcels leaving the EU contain (commercial goods, present...).
- Customs: HS code product field and Customs: default HS code: the column name of a product custom field holding each product's HS code (6, 8 or 10 digits, the tariff number of the receiving country), and the code of the products whose field is empty.
- Customs: country of origin product field and Customs: default country of origin: the same for the country of origin.
- Delivery to: the customer's address, or a Packstation and/or Postfiliale chosen at checkout (in Germany).
- Number of locations shown: how many Packstations and Postfilialen the checkout lists.
- Cash on delivery payment methods and Cash on delivery bank reference: the orders paid with these methods are sent cash on delivery for their total, paid to the bank details of that reference in DHL's portal.
- Ident-Check, Visual age check, Named person only, Signed for by recipient, No delivery to neighbours, GoGreen Plus: DHL's services added to every label of the method, as your contract allows them.
- Return receiver: the receiver id of your returns in DHL's portal (deu by default); the ones DHL knows for your account are listed under the field.
- Return label: PDF to print, QR code to show at a Postfiliale, or both.
- Send the return label to the customer: emails the return label to the customer when it is created.
- Customers get their return label: a button on the customer's order page creates their return label and sends it to them.
- Return label with each national label and Return billing number: prints a DHL Retoure label with every label in Germany, on the billing number of DHL Retoure in your contract.
- End of day: the button that closes the day's shipments of the billing number.
- Create the label at the status: the order status that creates the label by itself; Never to create them by hand only.
- Debug: writes every call to DHL to the HikaShop log file, passwords and secrets masked.
- Connection: whether DHL answers and accepts the credentials, once the method is saved.
- When DHL refuses a label, its message is shown with the field it is about, for instance "consignee.postalCode: The postcode is invalid". Correct the order's address or the setting, and press "Check with DHL" before creating the label again.
- "DHL refuses the credentials": check the API key and secret of your app, and the portal user and password; in production your app needs DHL's approval.
- "User rights to set this attribute are not sufficient": your contract does not include that service (cash on delivery, for instance); ask DHL to add it, or turn it off in the method.
- "The selected billing number is invalid": the billing number does not match the product, or your contract does not allow the services you turned on with it.
- "The tariff number must be numeric and 6, 8 or 10 digits long": fill the HS code of the products leaving the EU.
- The Packstation list is empty or "The DHL locations cannot be loaded right now": Location Finder allows a number of calls a day per app; the answers are kept a day per postcode, and DHL raises the limit on request from your app's page.
- A label can be cancelled until the day's shipments are closed.
Use
- Compatible with all the editions of HikaShop
- Compatible with Joomla and WordPress
- Requires a DHL Paket business customer contract in Germany and an app on developer.dhl.com
- Requires the PHP cURL extension
- Available in English, German and French
- No limit of time
- No limit of use
Changelog
1.0.0 on the 28th of October 2026
- First version.
€ 40,00
The add to cart button will appear once you select the values above
- Type
- Shipping
Access to updates included for 4 years
A tax rate (between 17% and 27% based on your country) will be added if your address is in the European Union and that you don't provide a valid VAT number or if your address is in France as per the European Union law.