> ## Documentation Index
> Fetch the complete documentation index at: https://www.zippendo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect DHL Express

> Connect DHL Express from Carriers → All Carriers — Username, Password, Account Number, optional Sandbox Mode and Location Finder API Key.

**DHL Express** books worldwide express labels from Zippendo, with tracking and customs documents. The catalog card copy is: **Ship worldwide with DHL Express through Zippendo — express labels, tracking, and customs documents to 220+ countries.** Catalog slug: `dhl_express`. There is no separate DHL Freight connector.

This page is the DHL Express connect form. Shared chrome for every carrier: [Carrier credentials](/docs/how-to/carrier-credentials). Inventory of every connector: [Connect a carrier or integration](/docs/how-to/connect-index). Walkthrough: [Carriers](/docs/tutorials/carriers).

<Info>
  You do **not** pick a sender address on this form. Add addresses under **Manage → Addresses**. The address is chosen on the shipment or on a [shipping rule](/docs/how-to/shipping-rule-fields).
</Info>

## Prerequisites

* A **DHL Express** shipper account (the billed **Account Number**).
* **MyDHL API** username and password. Zippendo does not generate these — DHL Express issues them for API access.
* Optional: a **Location Finder** API key from [developer.dhl.com](https://developer.dhl.com) if you will deliver to DHL Service Points.
* Permission to create carriers in the organization. You can connect DHL Express more than once if each connection has its own **Carrier name**.

## Where to get credentials

MyDHL API username and password are issued for your DHL Express account — there is no self-serve public form. The Location Finder key is created on the DHL API Developer Portal after you **Register** / **Get Access** (login required). These public pages are the step we can show.

<Frame caption="DHL API Developer Portal — register here, then Get Access for API keys in your own account">
  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-dhl/10-dhl-developer-portal.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=1268a0ce16a35f4b861bd49dc5ff6d93" alt="DHL API Developer Portal home with Sign up, Browse our APIs, and Tracking Shipping Further Services cards" width="2880" height="2200" data-path="images/how-to/connect-dhl/10-dhl-developer-portal.png" />
</Frame>

<Frame caption="Location Finder – Unified on developer.dhl.com — Get Access in your own portal account for the optional Location Finder API Key">
  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-dhl/11-dhl-location-finder.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=3fdb99a0dc1b643260fbc943eb0323a6" alt="DHL Location Finder Unified API product page with Get Access and Try Now" width="2880" height="2200" data-path="images/how-to/connect-dhl/11-dhl-location-finder.png" />
</Frame>

## Connect from All Carriers

<Steps>
  <Step title="Open All Carriers">
    Sidebar **Carriers**. Page title **Carriers / Integrations**. Header tabs: **My Carriers** (`?tab=my-carriers`) and **All Carriers** (`?tab=all-carriers`).
  </Step>

  <Step title="Find DHL Express">
    Card title **DHL Express**. Buttons: **Connect** and **Learn more** (opens [dhl.com Express](https://www.dhl.com/en/express.html) in a new tab).
  </Step>

  <Step title="Click Connect">
    Modal id `connect-carrier-modal`. Title **Create new carrier**. Subtitle **Fill out the information below to create a new carrier**.
  </Step>

  <Step title="Fill required fields">
    Shared fields first, then **Carrier Configuration → Required Fields**. Scroll **Optional Fields** for **Sandbox Mode** and **Location Finder API Key**. Empty required values make **Create** return without saving.
  </Step>

  <Step title="Create">
    Click **Create** (shows **Creating…** while the request runs) or **Cancel**. Success toast: **Carrier created successfully**. Failure copy in the modal: **Failed to create carrier. Please try again.**
  </Step>
</Steps>

<Frame caption="DHL Express on All Carriers — Connect and Learn more">
  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-dhl/01-all-carriers-card-light.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=49fa0e03349596d2e756bb0efb10f3e2" alt="All Carriers grid with the DHL Express card, Connect, and Learn more" className="block dark:hidden" width="2880" height="1800" data-path="images/how-to/connect-dhl/01-all-carriers-card-light.png" />

  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-dhl/01-all-carriers-card-dark.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=2abfa9284d5d9d850eec09d68b6b8ac9" alt="All Carriers grid with the DHL Express card, Connect, and Learn more" className="hidden dark:block" width="2880" height="1800" data-path="images/how-to/connect-dhl/01-all-carriers-card-dark.png" />
</Frame>

<Frame caption="Create new carrier for DHL Express — Username, Password, Account Number">
  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-dhl/02-connect-modal-light.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=9e0ada0034dc662d37bd91bf55db90b9" alt="Create new carrier dialog for DHL Express with required Username, Password, and Account Number" className="block dark:hidden" width="2880" height="2800" data-path="images/how-to/connect-dhl/02-connect-modal-light.png" />

  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-dhl/02-connect-modal-dark.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=bd113ea989daebbd783bb81dfaf74748" alt="Create new carrier dialog for DHL Express with required Username, Password, and Account Number" className="hidden dark:block" width="2880" height="2800" data-path="images/how-to/connect-dhl/02-connect-modal-dark.png" />
</Frame>

## Shared fields

These appear on every connect dialog, including DHL Express.

| Field               | Required | What it is                                                                                                                                                                                             |
| ------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Carrier name \*** | Yes      | Display name in **My Carriers** and on shipments. Placeholder **Enter carrier name**. Defaults to **DHL Express**. Empty blocks **Create**.                                                            |
| **Brand**           | No       | Only when the organization has [brands](/docs/how-to/create-a-brand). Label **Brand**. Helper: **Only this brand can use this carrier.** Leave unset for organization-wide. Hidden when you have no brands. |

## DHL Express credentials

**Carrier Configuration** splits into **Required Fields** and **Optional Fields**. Labels that contain “Password” or “Secret” use a password input. Each helper is catalog copy. Placeholder on text fields is the same helper.

| Field                       | Required | Control                                                                                                              | Where you get it                                                                                | Format   | Sandbox vs live                                                                               |
| --------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -------- | --------------------------------------------------------------------------------------------- |
| **Username**                | Yes      | Text. Helper: **Your DHL Express API username for authentication**                                                   | MyDHL API credentials issued for your DHL Express account.                                      | String.  | Same field. Use the username that belongs to the environment you selected.                    |
| **Password**                | Yes      | Password. Helper: **Your DHL Express API password for authentication**                                               | The password issued with that MyDHL API username.                                               | String.  | Same field. Test credentials are required when **Sandbox Mode** is on.                        |
| **Account Number**          | Yes      | Text. Helper: **Your DHL Express account number (shipper account)**                                                  | Your DHL Express shipper account — billed on shipments and pickups.                             | String.  | Same field on both hosts.                                                                     |
| **Sandbox Mode**            | No       | Checkbox, default off. Helper: **Use the DHL Express test environment (test credentials required)**                  | Zippendo checkbox — not a DHL portal value.                                                     | Boolean. | On: `https://express.api.dhl.com/mydhlapi/test`. Off: `https://express.api.dhl.com/mydhlapi`. |
| **Location Finder API Key** | No       | Text. Helper: **DHL Location Finder API key from developer.dhl.com — enables DHL Service Point search and delivery** | [developer.dhl.com](https://developer.dhl.com) Location Finder product. Not the MyDHL username. | String.  | Same key field. Without it, door products still book; Service Point search fails.             |

DHL Express authenticates MyDHL with this **Username** and **Password** (Basic auth). Location Finder uses a separate `X-API-KEY`.

<Frame caption="DHL Express optional fields — Sandbox Mode and Location Finder API Key">
  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-dhl/03-optional-fields-light.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=9c474ed70e62ccd220a7bda80eaf577f" alt="DHL Express connect form scrolled to Sandbox Mode and Location Finder API Key" className="block dark:hidden" width="2880" height="2800" data-path="images/how-to/connect-dhl/03-optional-fields-light.png" />

  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-dhl/03-optional-fields-dark.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=f8005dfe45f33f4dbf61ae5e97691b8e" alt="DHL Express connect form scrolled to Sandbox Mode and Location Finder API Key" className="hidden dark:block" width="2880" height="2800" data-path="images/how-to/connect-dhl/03-optional-fields-dark.png" />
</Frame>

<Warning>
  Leave **Sandbox Mode** off for live orders. Test credentials on the production host, or live credentials on the test host, fail at send time. Details: [Sandbox mode](/docs/how-to/sandbox-mode).
</Warning>

## After you connect

The connection appears on **My Carriers** with a **Connected** badge and **Edit Carrier**. Products are **not** on this form — they appear when you [create a shipment](/docs/how-to/send-a-shipment) or save a [shipping rule](/docs/how-to/shipping-rule-fields). See [Carrier products and services](/docs/how-to/carrier-products-and-services).

Outbound products include **DHL Express Domestic**, **DHL Express Worldwide**, **DHL Express Worldwide (Documents)**, **DHL Express Worldwide (EU)**, **DHL Economy Select**, **DHL Economy Select (EU)**, **DHL Express 9:00**, **DHL Express 9:00 (Documents)**, **DHL Express 12:00**, **DHL Express 12:00 (Documents)**, and **DHL Express Envelope**. Inbound **Return** variants exist for the worldwide, EU, domestic, and Economy Select products. Extra service on outbound: **Shipment Insurance**. Additional options include **Label Format** (**PDF (4x6)** / **ZPL (thermal)**).

### Service Point products

**DHL Express Worldwide (Service Point)** and **DHL Express Worldwide (EU) (Service Point)** are service-point products. They stay in the product list even without a Location Finder key; searching nearby points without that key fails with **DHL Express configuration error: service point search requires a Location Finder API key — create one at developer.dhl.com and add it to the carrier settings.**

On **Create Shipment** pick a **Service Point** on the **Drop Point** card before send. Error: **This carrier product delivers to a service point — select a droppoint before sending.** How to pick: [Pick a service point](/docs/how-to/pick-a-service-point). Naming: [Droppoint vs service point](/docs/how-to/drop-point-and-service-points).

DHL Express does **not** appear in **Pickups**. That list is Bring and PostNord only — [Schedule a pickup](/docs/how-to/schedule-a-pickup).

Tracking is pulled on a schedule. There is no tracking-webhook field on **Edit your carrier** — [Carrier tracking webhooks](/docs/how-to/tracking-webhooks).

DHL Express generates customs documents and commercial invoices for international shipments — [Customs and documents](/docs/how-to/customs-and-documents).

## Edit

On **My Carriers**, click **Edit Carrier**. Page title: **Edit your carrier**. URL `/dashboard/carriers/:id`.

Two cards:

* **General** — **Carrier name** (helper: **Update the name of your carrier**), plus **Brand** when brands exist.
* **Carrier settings** — the same DHL fields as connect, including **Sandbox Mode** and **Location Finder API Key**.

Header actions: **Delete** and **Save** (pending **Saving…**). Success toast: **Carrier updated successfully**. Loading: **Loading carrier…**. Load failure: **Failed to load carrier. Please try again.** Save failure: **Failed to update carrier. Please try again.**

On edit, credential strings are plain text inputs (not password). Shared delete chrome: [Carrier credentials](/docs/how-to/carrier-credentials).

## Delete

On **Edit your carrier**, click **Delete**. Modal id `global-delete-modal`. Title **Delete Carrier**. Subtitle **You are about to delete carrier "\{\{name}}".** Body: **This will permanently delete carrier "\{\{name}}". This action cannot be undone.** Type the carrier name in **uppercase** to enable **Delete**. Toast: **Carrier deleted successfully**. Failure: **Failed to delete carrier**.

Booked shipments keep their labels and tracking.

## Common errors

| When                                             | Copy                                                                                                                                                               |
| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Required field empty on connect                  | **Create** does nothing until **Carrier name**, **Username**, **Password**, and **Account Number** have values.                                                    |
| Connect request fails                            | **Failed to create carrier. Please try again.**                                                                                                                    |
| Plan / resource cap                              | **You have reached your plan limit for this resource.** / **You have exceeded your plan limits. Please upgrade or remove excess items.**                           |
| Send with bad credentials                        | **The carrier rejected your API credentials. Update the carrier's API key or secret in Carrier settings.**                                                         |
| Booking rejected                                 | **DHL Express could not book the shipment.**                                                                                                                       |
| Service Point product, no droppoint              | **This carrier product delivers to a service point — select a droppoint before sending.**                                                                          |
| Service Point search without Location Finder key | **DHL Express configuration error: service point search requires a Location Finder API key — create one at developer.dhl.com and add it to the carrier settings.** |
| Product vs countries                             | **The selected carrier product does not ship between these countries. Choose a different product.**                                                                |
| Carrier down                                     | **The carrier service is currently unavailable.** / **The carrier rejected the request.**                                                                          |

Auth failures after send: [Carrier authentication failures](/docs/knowledge-base/carrier-authentication-failures).

## Related

* [Connect a carrier or integration](/docs/how-to/connect-index)
* [Carrier credentials](/docs/how-to/carrier-credentials)
* [Sandbox mode](/docs/how-to/sandbox-mode)
* [Carrier products and services](/docs/how-to/carrier-products-and-services)
* [Connect an integration](/docs/how-to/connect-an-integration)
* [Request a carrier integration](/docs/how-to/request-carrier-integration)
* [Carriers](/docs/tutorials/carriers)
