Shopify DHL Integration
In Turkey, saying DHL means one of two different things and the first setup decision is this: the domestic side is DHL eCommerce, which is the former MNG Kargo, and the brand changed in May 2025; a shipment leaving the country goes through DHL Express, and that means a separate company, a separate account and a separate panel. Every setup that skips this split starts with the wrong account. The two sides are set up separately. DHL eCommerce has a developer portal that Turkish shipping firms do not have, the requirement that actually blocks setup is getting your fixed exit address onto the whitelist, and customs paperwork on an international shipment is a job of its own.
growing on Shopify with Nodus Works
Shopify DHL integration what is it?
The Shopify DHL integration is the connection that declares store orders as shipments to the carrier, prints the label, writes the tracking number on the order and reads delivery status back. On the domestic side this is done by DHL eCommerce, the former MNG Kargo; because it does not publish its own Shopify app, an integration tool builds the bridge.
Setup starts with choosing the right side, not with writing code. For a domestic shipment you sign a corporate agreement with DHL eCommerce and take your customer number; you take the access key from the firm's developer portal. If you sell abroad you need a separate business account on the DHL Express side, and that application is fully online. When you need to manage domestic and international shipments at the same time from a single panel, Nodus Works' Shopify integration and custom app development service joins that setup.
Once the connection is live, daily work runs from one screen: the order is declared, the label is printed, the customer notification goes out from Shopify's own email when the tracking number is written on the order, and the order closes on its own when delivery status is read back. On an international shipment, customs documents and the terms-of-delivery decision are added to this flow.
What a DHL integration actually does
Once the connection is live, shipment declaration, label, tracking, delivery status, collection and returns become parts of the same flow. If you sell abroad, customs documents are added as well. The six headings below cover the questions asked most often.
Choosing the right DHL side
A domestic shipment leaves through DHL eCommerce, an international shipment leaves through DHL Express, and the two are separate accounts. If you sell to both, you need two separate agreements and two separate connections; running both sides on one account is not possible.
Creating and declaring a shipment
The order address is declared with the data on the order instead of being typed into the carrier by hand. On the DHL eCommerce side, district is expected as a coded value, so clean address data is the precondition for this step.
Printing the label and barcode
The label is printed from the order screen, so you do not need to open a second panel. Barcode production comes from the firm's own service; using a number the integration produced as a barcode produces a label that will not scan.
Writing the tracking number on the order
When the tracking number is written on the order, the customer notification goes out from Shopify's own email and the order closes on its own when delivery status is read back. If the number is not written, the customer sees nothing.
Cash-on-delivery shipments and returns
On a cash-on-delivery order the amount to collect is read from the order total and written on the shipment. On the return side DHL uses a fixed return code, so the code is the same on every return and is not produced per order.
Customs documents on an international shipment
For an international package the declaration is not the recipient address, it is commercial-invoice line data: goods description, tariff code, value and currency. If this data is not kept on your product cards, the shipment waits at customs.
Did MNG Kargo become DHL, which side will you use?
This is exactly where the person searching gets stuck. There are two separate DHLs in Turkey; which one you work with is decided by where the shipment is going.
DHL eCommerce is the former MNG Kargo
DHL Group bought MNG Kargo, the transfer completed in October 2023 and in May 2025 the brand stopped being MNG Kargo and became DHL eCommerce; branch, vehicle and digital-platform identity changed. The side that does domestic shipments is this one.
DHL Express is the international express side
A separate company, a separate account, a separate panel and a separate service structure. A shipment leaving Turkey for another country goes through this side; it does not carry domestic packages. The two sides' account credentials cannot be used in place of each other.
Shopify's help page does not cover Turkey
Shopify's DHL eCommerce page published in Turkish describes buying an international label from a shipping origin on the American continent. Same name, completely different work; that flow never appears in a store in Turkey.
The technical infrastructure name is still MNG
Even though the brand is DHL, the developer portal, service addresses and integration email sit on an MNG domain. A third-party Shopify app's address still contains MNG as well; when you search for sources you need to try both words.
Your old MNG agreement and customer number
Because the transfer was a corporate share purchase, contracts continue with the firm itself. On the integration side the service structure was renewed, so an old setup should not be assumed to keep working; it needs to be checked.
Domestic scale is different from international express
DHL eCommerce reports more than eight hundred branches, twenty-nine transfer hubs and more than four thousand vehicles on its own site; large marketplaces are listed among its corporate references. Domestic volume runs on this side.
The practical rule is this: for domestic orders you agree with DHL eCommerce and take access from the developer portal, for international orders you open a separate business account on the DHL Express side. If you sell to both sides, two connections run together and that is normal.
How do you set up Shopify DHL integration?
The six steps below cover the whole setup, from choosing the right side to printing the first label. The third step is specific to DHL: you take the access key from the firm's own developer portal.
Decide which DHL side you will use
A domestic shipment leaves through DHL eCommerce, an international shipment leaves through DHL Express. If you sell to both, two separate agreements are needed. On the DHL Express side the application is fully online: a business account can be opened on dhl.com, with no branch visit.
Sign your corporate agreement on the domestic side
There is no published page for becoming a DHL eCommerce ecommerce customer; the process runs through an account manager and the regional structure. After the agreement your customer number is defined and your panel password is given; these two are required fields of the integration.
Take your access key from the developer portal
DHL eCommerce has a public developer portal and the flow is three steps: an account is created, approval is waited for, the access key is taken. The portal lists tracking, shipment preparation and barcode-creation services separately; you need to subscribe to the services you will use.
Set up test and live environments separately
The test environment is on a separate portal and its subscription is approved on its own; a live subscription is approved by hand. For the live environment your application name, customer number and fixed exit address are reported to the integration email and put on a whitelist. If you have no fixed address on shared hosting, this step gets stuck.
Define the address, desi and payment setup
Make address line 2 required at checkout and rename it to district; this step is not optional because the DHL eCommerce side expects district as a coded value. Also set your label printer, declaration layout and, if you will use cash on delivery, the manual payment method on the Shopify side in this step.
Confirm the flow with a test shipment
Create a shipment from a single order, print the label, and check that the tracking number is written on the order and the customer notification goes out when the package is scanned at the branch. Then confirm that delivery status is read back. If you sell abroad, also run a customs-document trial.
The table below shows which Shopify data maps to which counterpart on the carrier side.
| What Shopify has | What the carrier uses |
|---|---|
| Order | Shipment declaration |
| Shipping address | Recipient address |
| City | City code, resolved from the service list |
| Address line 2 | District, expected as a coded value |
| Phone | The number the notification message goes to |
| Weight | One side of the chargeable weight |
| Package definition | Source of the desi calculation, on single-line orders |
| Tracking number | Assigned after the shipment enters the system |
| Payment status | Amount collected on a cash-on-delivery shipment |
| Extra on international | Goods description, tariff code, value and currency |
| No Shopify field | Length, width, height; return code; declaration type |
The last two rows of the table are where this work produces the most trouble. Length, width and height do not exist in Shopify at all; the customs data needed on an international shipment also comes from nowhere unless it is kept separately on the product cards.
Tell us about your catalog and current setup, and we will work out how the Shopify DHL integration should be built for your product structure. You do not need to fill in a form, reach us directly by phone, email or WhatsApp.
Where do you get DHL integration credentials?
On this question DHL eCommerce is a step ahead of most Turkish shipping firms: it has a public developer portal. The portal presents itself as the firm's service catalog and lists three services separately: tracking, shipment preparation and barcode creation. The flow is also written down: an account is created, approval is waited for, the access key is taken. Yurtiçi and Aras have no counterpart to this; there the data comes from a representative by email.
The portal does not solve everything, though. Your customer number and panel password come from the corporate agreement and are not produced by yourself in the portal. Opening an account in the portal does not replace the agreement; both are needed together.
Two blockers actually stop setup, and both need to be known from the start. The first is the environment split: the test environment is on a separate portal and its subscription is approved on its own, a live subscription is approved by hand. For the live environment your application name, customer number and fixed exit address are reported to the integration email and put on a whitelist. If you sit on shared hosting you have no fixed exit address, so you stay at this step; the fix is using an intermediate layer with a fixed address. The second is the service-structure renewal: old service endpoints are being retired and new integrations are written to the new structure. These two facts come from third-party sources, no official calendar has been published; if you inherited an old MNG setup, put this at the top of your checklist.
On the international side the panel runs under the name MyDHL and the admin settings are officially documented: company appearance, user groups, account numbers, address book, shipment references, courier booking and digital customs invoice are managed from here. The developer side also sits together in a global catalog. On who the agreement belongs to, DHL eCommerce looks flexible: shipping on an intermediary's bulk rate without your own contract is also shown as possible. The two models must not be mixed, because who the invoice comes from and who sets the rate both change.
How far does Shopify's own shipping go in Turkey?
The need for a shipping integration starts here. Shopify's shipping side was built for specific countries and Turkey is not on that list; DHL's official app does not change this limit either.
You cannot buy a label from the admin
Shopify's own shipping is tied to shipping origins in eight countries and Turkey is not on that list. The DHL eCommerce label flow in the help center is also for origins on the American continent; it does not appear in a store in Turkey.
Checkout cannot show a live carrier rate
Pulling a live rate from the carrier's own account is available only on higher plans, and the supported carrier list has no Turkish shipping firm. DHL Express's own app offers a live rate at checkout but that is for an international shipment and requires a DHL Express account.
A return label does not come out of Shopify
Creating a return label through Shopify requires both the shipping origin and the buyer address to be in the United States. In Turkey the return label is produced outside and uploaded to the order, or you choose no shipping needed on the approval screen.
The product card has no length, width or height
The Shopify product card has weight and no dimensions; dimensions live only on the package definition in shipping settings, and the package assigned to a product applies only on single-line orders. That is why the data needed to calculate desi is not on the order.
You cannot add a district field at checkout
On plans other than Plus you cannot add city and district pickers at checkout. The DHL eCommerce side expects city and district as coded values resolved from its own list, so a district buried in free text fails at the declaration step.
The product card has no ready field for customs data
The tariff code, goods description and origin data needed on an international shipment do not sit in Shopify's standard product fields. Keeping this data in extra fields and mapping it onto the shipment documents is part of setup.
The shared result of these six points is this: in Turkey a shipping integration does not add convenience on top of Shopify, it puts a missing piece in place. Label production, tracking number and delivery status do not enter Shopify any other way.
What you need to confirm before setup
DHL's documentation is good compared with Turkish shipping firms, but there are topics not published for the Turkey scope. The nine headings below are what you should ask your representative before setup.
Which documents are requested on a domestic application
No published page was found for becoming a DHL eCommerce ecommerce customer or for the document list. The process runs through an account manager and the regional structure; you need to set your calendar to that and take the document list in the meeting.
Does the fixed-exit-address requirement apply to you
Two independent sources write that a fixed exit address is put on a whitelist for the live environment, but there is no official confirmation. If you use shared hosting you need to ask this requirement before setup; solving it later means building an intermediate layer.
When does the old service structure close
Third-party sources write that old service endpoints are being retired; no official retirement calendar has been published. If you inherited an MNG setup you need to ask which structure it was written to and what the migration plan is.
How many days does money take on a cash-on-delivery shipment
Third-party apps support cash-on-delivery shipments, but no official DHL eCommerce Turkey page defining this service and no transfer time were found. If you will tie your cash flow to this, confirm the time in your contract.
What is the collection service fee
Cash on delivery brings an extra line on top of the shipment fee at most firms. Because the existence and amount of this line depend on the agreement, we do not give a rate here; you should set the cash-on-delivery fee at checkout to that.
Which format and size does the label come in
The barcode service producing output in a specific printer language is documented, but sources do not fully agree. If you will buy a thermal printer, ask the format and size question to the provider of the tool you will use.
Is shipping without an agreement suitable for you
Shipping on an intermediary's bulk rate is also shown as possible at DHL eCommerce. On that path the invoice comes from the intermediary and you do not set the rate; as your volume grows your own agreement may be more advantageous.
Which countries accept paperless customs on international shipments
Paperless customs sits as an admin setting on the international panel and is also listed in the official app's feature list. Which countries accept it changes by shipment, so you need to take the country list from your representative.
Does the Europe tax-registration side concern you
Tax registration and threshold topics for stores selling to Europe could not be confirmed in a DHL source in this research, so we do not give information here. If you will sell to Europe regularly, settle this with your tax advisor and your DHL representative together.
How are customs documents set up on an international shipment?
This section is a completely separate job from domestic shipping. For a domestic package the declaration is recipient address and desi; for an international package the declaration is commercial-invoice line data, and missing data ends in delay.
The center of the declaration is commercial-invoice line data
DHL's own guide writes that a missing or wrong goods description produces delay and sanction at customs. There are four critical fields: goods description, tariff code, value and currency. If these four are not correct, the package waits.
There is a free tool for finding the tariff code
DHL lets you look up tariff codes and country requirements with its own free global trade services tool. You can confirm the tariff code from here when you write codes onto your product cards.
Customs data must be kept on the product card
Tariff code, goods description and origin data do not sit in Shopify's standard fields. Keeping this data in extra fields and mapping it onto the shipment documents is part of setup; typing it by hand on every shipment is not sustainable.
Paperless customs is a setting on the panel
Digital customs invoice sits as an admin setting on the international panel and is also listed as electronic data submission in the official Shopify app's feature list. It reduces printed documents being added to the package.
The terms-of-delivery decision changes your checkout
If the seller takes on customs duty and import tax, they need to collect it at checkout; in the model collected from the customer at delivery, the charge appears at the door. The second model produces return requests because of an unexpected cost.
The two sides' accounts run separately
An international shipment leaves from a separate company, a separate account and a separate panel. Your domestic setup working does not mean the international side is ready; the two are set up separately and tried separately.
If you will sell abroad regularly, you need to plan this section as a separate heading of setup. Adding customs data to product cards, making the terms-of-delivery decision and setting checkout to that; when the three are not done together, international sales turn into customer complaints.
Why is the shipping invoice higher than you expected?
On the domestic side there are two reasons and both come from Shopify's data structure: district cannot be stored as a separate field, and the product card has no dimensions. If you use cash on delivery there is a third line as well.
District is expected as a coded value
On the DHL eCommerce side, city and district are values resolved from its own list. A district buried in free text, misspelled or left empty fails shipment creation; even if the declaration passes, the package goes to the wrong transfer hub and is delayed.
The fix is turning address line 2 into district
The path used in the field is one: address line 2 is made required in checkout settings and renamed to district by editing the checkout language. The second path is taking an address confirmation after the order.
Desi is volume turned into a charge
The invoice is issued on whichever is larger, weight or desi. Package volume is found in cubic decimeters, divided by three on a domestic shipment and by five on an international shipment; the result is compared with kilograms.
The data to calculate desi is not on the order
The Shopify product card has no length, width or height field; dimensions live only on the package definition, and a multi-line order uses the store default package. That is why some integrations declare the shipment with a fixed desi.
The branch measures the real desi, the difference hits the invoice
If the declared value and the value measured at the branch differ, the invoice is issued on the measured value. The shipping charge you took from the customer stays fixed while your invoice changes, so the difference comes straight out of margin.
Cash on delivery is a separate declaration type
A cash-on-delivery shipment is not the same declaration as a sender-paid shipment, and the Shopify counterpart is a manual payment method: payment opens as pending and is marked paid after collection. Reconciliation is set up by the integration; region and amount limits are not built into Shopify.
There is one detail to know on the return side: DHL uses a fixed return code, so the code is the same on every return and is not produced per order. This makes setting up the return flow easier, but matching which return belongs to which order is left to you. If you have marketplace channels, label and return flow also split in two: Trendyol and Hepsiburada packages leave with their own labels while store orders go on your agreement. To run the two flows in the same warehouse without mixing them, look at Station.
The most common mistakes in a Shopify DHL integration
The nine headings below are the mistakes met most often in setup. At DHL half of them come from mixing the two DHLs.
Opening an Express account for a domestic shipment
A domestic package leaves through DHL eCommerce, an international package leaves through DHL Express, and the two are separate accounts. A setup that starts with the wrong side is done from scratch after the account is opened.
Waiting for the flow on Shopify's help page
The DHL eCommerce label flow in the help center is for shipping origins on the American continent and does not appear in a store in Turkey. Same name, different work; that help center article is the source that most often sends a reader from Turkey down the wrong path.
Counting a portal account as the agreement
The developer portal gives the access key, but the customer number and panel password come from the corporate agreement. Opening an account in the portal is not enough on its own to create a shipment.
Not declaring a fixed address for the live environment
A live subscription is approved by hand and the fixed exit address needs to be put on a whitelist. Stores sitting on shared hosting stay exactly at this step; the fix is an intermediate layer with a fixed address.
Trusting live because it worked in test
A test subscription is approved on its own while a live subscription asks for a separate approval and a separate record. A setup that works in the test environment should not be assumed to work in live.
Not checking an inherited old MNG setup
Old service endpoints are being retired. If an inherited setup one day stops for no reason, this is the first place to look; you need to learn which service structure it was written to from the start.
Going live without fixing the district field
DHL eCommerce expects district as a coded value resolved from its own list. Orders with an empty district or a district buried in free text fail at the declaration step; turning address line 2 into district is part of setup.
Setting up an international shipment like a domestic one
The center of an international declaration is commercial-invoice line data: goods description, tariff code, value and currency. If this data is not kept on the product cards, it is typed by hand on every shipment and waiting at customs becomes inevitable.
Selling abroad without making the terms-of-delivery decision
If the seller takes on customs duty, they need to collect it at checkout. International sales opened without a decision end with an unexpected charge being asked from the customer at delivery and with return requests.
Three common problems and how we solve them
The three setup scenarios below show how we handle Shopify DHL integration problems we have solved in stores we connected.
A setup that started with the wrong DHL side
ProblemThe store wanted to send domestic orders with DHL. Following steps found on the internet it opened an online business account, took an account number and tried to set up the integration; it could not create any domestic shipment and lost two weeks.
CauseThe account that was opened belonged to the international express side. In Turkey the side that does domestic shipments is DHL eCommerce, the former MNG Kargo, and that means a separate company, a separate account and a separate service structure. The two sides' credentials cannot be used in place of each other.
SolutionA separate corporate agreement was signed for the domestic side, a customer number was taken and the access key was obtained from the firm's developer portal. The international account was not closed; when the store also started selling abroad, the two connections ran side by side.
A setup that worked in test stopped in live
ProblemDuring development everything was fine: shipments were created, barcodes were produced, tracking data arrived. On the day it went live no request was answered and the store had to send that day's orders from the panel by hand.
CauseThere are two separate environments and the two ask for separate records: a test subscription is approved on its own while a live subscription is approved by hand. For the live environment the application name, customer number and fixed exit address also needed to be reported and put on a whitelist. Because the store sat on shared hosting, there was no fixed exit address either.
SolutionAn intermediate layer with a fixed address was put in place and that address was put on the whitelist; live-subscription approval was also completed with these details. The setup worked in live the next day. The same work also confirmed that the new structure was used instead of the old service structure.
International shipments waiting at customs
ProblemA portion of shipments from a store that had started selling abroad were waiting at customs for days. Some customers were asked for an unexpected tax at delivery, and that turned into the package not being accepted and a return request.
CauseThere were two separate gaps. Because tariff code, goods description and origin data were not kept on the product cards, shipment documents were prepared incomplete. Second, the terms-of-delivery decision had not been made: because customs duty was not taken on by the seller, the charge was asked from the customer at the door.
SolutionCustoms data was added to the product cards and mapped so it would be written onto the documents from those fields; tariff codes were confirmed with the firm's free lookup tool. The terms-of-delivery decision was made and checkout was set to that, so the customer saw the cost at the moment of purchase. Waiting times shortened and the number of unaccepted packages dropped.
Station is the tool we built to run order, label, tracking and collection flow from one panel. If you also sell on marketplaces, their shipping flow stays separate, so seeing the two side by side makes the work easier.
Frequently Asked Questions
How do you set up Shopify DHL integration?
Did MNG Kargo become DHL?
When I ship domestically do I use DHL Express or DHL eCommerce?
Are my old MNG agreement and customer number still valid?
Why does the DHL eCommerce label flow on Shopify's help page not appear for me?
Where do I get my DHL integration credentials?
Does DHL have a public developer portal?
I have no static IP, can I still set up the DHL integration?
What is the difference between the test environment and the live environment?
I have an old MNG integration, do I need to renew it?
Does DHL have an official app in Shopify?
Which app should I use in Turkey?
Can I set up the integration without an agreement?
Does Shopify's own shipping label work in Turkey?
When is the tracking number added to the order?
What does the shipment has not been declared warning mean?
What happens if district is entered wrong?
How is a district field added at checkout?
How is desi calculated, do I enter it?
Why did my invoice come in higher than I expected?
Does DHL do cash-on-delivery shipments?
When does the money reach my account on a cash-on-delivery shipment?
How is cash on delivery set up on the Shopify side?
Is the DHL return code one-time?
Can I create a return label in Shopify?
When I sell abroad, who prepares the proforma invoice?
Where do I find the customs tariff code?
What is paperless customs, how is it turned on?
Should I take customs duty at checkout or at delivery?
How do marketplace shipping and my own agreement split?
Does the app set the shipping price?
BİZİ TERCİH
EDENLERİN ARASINDA
YER ALIN...
Herkes için Shopify çözümleri üretiyoruz.
Yeni bir Shopify mağazası kurmak, mevcut mağazanızı geliştirmek, özel entegrasyonlar yapmak veya hız problemlerini çözmek mi istiyorsunuz? Biz, teknik işleri sizin yerinize çözen uzman bir Shopify partneriyiz.

Dossha
#shopify

Les Benjamins
#shopify

Nocturne
#shopify

Fellas
#shopify

Mai
#shopify

Karaca
#shopify

Milagron
#shopify

Kiğılı
#shopifySeo

Şölen
#shopify

Adell
#shopifyB2B

Ohora
#shopify

Rendrea
#shopifyBooking

Babeskin
#shopify

The New Lab
#shopify

DTF Town
#shopify

Eczaclick
#shopifySeo

Termos Dünyası
#shopify

Halı.net
#shopify

Blend-r
#shopify

Oioi
#shopifySeo

Nowshopfun
#shopify

Marie Claire
#shopify

Gaziburma
#shopify

Dünyada Kitap
#shopify
NEDEN BİZİMLE
ÇALIŞMANIZ GEREKTİĞİNİ
SİZE ANLATMAK İSTERİZ
Shopify'ı çok iyi anlıyoruz; Türkiye'de her segmentin karşısına biz olarak çıkıyoruz :)







Sadece Shopify konuşanlardan oluşan bir takım

Hey!
Bannerlarım kesik gözüküyor :(
Yardım eder misiniz, kampanya dönemindeyim.
Selam Elif!
2 dakikaya çözüyoruz.





.webp)
.webp)


