Under **Shipping providers** you decide how the shipping labels of your warehouse are created: through ShipCloud, or directly through the interfaces of **DHL**, **DPD**, **GLS**, **UPS** or **Hermes**. You store the carrier **accounts** – for your own company or for single clients, so each client can ship with its own carrier contract – and you define **shipping rules**. The rules are evaluated when a parcel is completed at the [packing station](/outbound/packing.md) and when a label is requested under [Packages and tracking](/orders/packages-and-tracking.md). Without any rule, ShipCloud is used.

![Screenshot: Shipping providers page with the Accounts card on top and the Shipping rules card below](/administration/images/shipping-providers-overview.png)

## Before you start

- Your user needs the permission **Shipping providers** in the **Administration** area of the permissions tree. Ask your administrator.
- Your company is the **logistician**. Clients cannot open this page – they see "Shipping rules and accounts are maintained by the logistician…".
- You have the access data from your carrier contract (see the table of required fields below).
- For ShipCloud you do not need an account in this list – ShipCloud uses the [ShipCloud accounts](/company/shipcloud-accounts.md) under Company Settings.
- Carrier accounts are connections and count against your package.

## Step by step

### 1. Create a carrier account

1. Open **Administration › Shipping providers** (*Administration › Versanddienstleister*).
2. In the **Accounts** card (*Zugänge*), click **Create a new account** (*Neuen Zugang anlegen*).
3. Choose the **Provider** (*Anbieter*).
4. Choose the **Company** (*Firma*) the account belongs to: your own company (*Logistiker*) or a client (*Mandant*).
5. Enter a **Comment** (*Bemerkung*), e.g. "Main account" or "Client XY".
6. Fill in the access data of the provider. Fields marked with * are required.
7. Optionally click **Test access** (*Zugang testen*) to check the login at the provider.
8. Click **Save account** (*Zugang speichern*). You see "Account has been saved."

Provider and company cannot be changed after the account has been created. To change the access data later, click **Edit** (*Bearbeiten*) in the account row. **Test** (*Testen*) checks an existing account at any time.

![Screenshot: Dialog "Access to Shipping Providers" with provider DHL selected, company dropdown, comment and the DHL credential fields](/administration/images/shipping-providers-account-dialog.png)

### 2. Define shipping rules

1. In the **Shipping rules** card (*Versand-Regeln*), click **Add a rule** (*Regel hinzufügen*).
2. Choose the **Provider**.
3. Choose the **Account** (*Zugang*). Accounts of clients show the client name in brackets; leave it at "-- No access --" for ShipCloud.
4. Choose the **Client** (*Mandant*): "-- all clients --" or a single client.
5. Optionally enter **Carrier identifiers** (*Frachtführer-Kennungen*).
6. Tick **Default** (*Standard*) for exactly one rule that should apply when no other rule fits.
7. Tick **Active** (*Aktiv*) and set the **Order** (*Reihenf.*).
8. Repeat for further rules. **Remove rule** (*Regel entfernen*) deletes a row.
9. Click **Save** (*Speichern*). Rules are only stored with this button: "The shipping rules have been saved".

![Screenshot: Shipping rules table with three rules – DHL for all clients with identifier "dhl", GLS for one client, ShipCloud as default](/administration/images/shipping-providers-rules.png)

## How a rule is chosen

When a parcel is completed, X-Sitter takes the **carrier name**: the carrier chosen at the packing station, or – with "order shipping method" – the shipping method of the order. Then:

1. Rules for another client or with carrier identifiers that do not appear in the carrier name are skipped.
2. A rule whose carrier identifier matches wins over a rule without identifier.
3. A rule for the order's client wins over a rule for all clients. A rule that matches both wins.
4. If no rule fits, the **Default** rule is used.
5. Without any rule, the label is created through ShipCloud.

**Example:** Rule A: DHL, all clients, identifiers "dhl, warenpost". Rule B: GLS, client "Shop Miller". Rule C: ShipCloud, default. An order of Shop Miller with carrier "DHL Warenpost" fits A (identifier) and B (client). A matching identifier counts more than a matching client, so rule A is used. If Shop Miller should ship DHL through its own account, add rule D: DHL, client Shop Miller, identifier "dhl", with Shop Miller's DHL account – it matches both and wins. An order of another client with carrier "Hermes" fits neither A nor B, so the default rule C applies.

![Screenshot: Packing station completing a parcel, with the carrier selection that is used for the rule matching](/administration/images/shipping-providers-packing-carrier.png)

## Fields and options

### Shipping rules

| Field | Meaning |
|---|---|
| **Provider** (*Anbieter*) | ShipCloud, DHL, DPD, GLS, UPS or Hermes. |
| **Account** (*Zugang*) | The carrier account. Not needed for ShipCloud. Accounts shared with you by another company are marked "shared". |
| **Client** (*Mandant*) | "-- all clients --" or one client. |
| **Carrier identifiers** (*Frachtführer-Kennungen*) | Comma-separated words in lower case that must appear in the carrier / shipping method name, e.g. `dhl, warenpost`. Empty = applies to every carrier. |
| **Default** (*Standard*) | Used when no other rule fits. |
| **Active** / **Order** (*Aktiv / Reihenf.*) | Rule on/off; sort order of the list. |

### Required access data per provider

Every account has a **Mode** (*Modus*): sandbox (test system) or live.

| Provider | Required fields | Useful optional fields |
|---|---|---|
| **DHL** | Business customer portal user and password (*GKP Benutzer / GKP Passwort*), API key from the DHL developer portal, EKP (10-digit customer number) | Participation numbers per product (parcel, international, small parcel, return, Europaket, Warenpost International), **Return receiver ID** (needed for return labels created later), domestic product, print format, Incoterm |
| **DPD** | Delis ID and password (issued by DPD for the web service, not your myDPD login), DPD platform (Germany or Netherlands) | DPD customer number, product, paper format, shipping depot, Predict e-mail notification |
| **GLS** | Client ID, client secret, contact ID (shipper) | Product, label format, App ID for Shop Returns, Incoterm, customs declaration for non-EU shipments |
| **UPS** | Client ID, client secret, UPS account number (shipper number) | Standard service, e-mail notification, Incoterm |
| **Hermes** | User, password, client ID, client secret (from Hermes Business Service) | Product type, weight unit, mandator, recipient e-mail notification |

![Screenshot: Accounts table with provider, number, comment, mode (Sandbox/Live), company and the Test / Edit buttons](/administration/images/shipping-providers-accounts-table.png)

## Shipments to non-EU countries

For recipients outside the EU, X-Sitter sends the customs data automatically (price of the order item, weight, customs tariff number and country of origin from the article; without country of origin DE is used).

- **ShipCloud** and **DHL** return a CN23 customs form, **UPS** a commercial invoice. The document is printed together with the label at the packing station and saved in the order under **Documents** (see [Order documents](/orders/order-documents.md)).
- **GLS** sends customs data only if the customs declaration option is enabled in the account.
- **DPD** and **Hermes** do not support non-EU shipments in X-Sitter – use another provider for these.

Make sure your articles have a customs tariff number and country of origin.

## Good to know / Troubleshooting

| Message | Cause | Solution |
|---|---|---|
| "Required fields are missing: …" (*Pflichtfelder fehlen: …*) | Access data incomplete. | Fill in the listed fields. |
| "ShipCloud does not need access in this list." (*… braucht keinen Zugang in dieser Liste.*) | You tried to create an account for ShipCloud. | Maintain ShipCloud under [ShipCloud accounts](/company/shipcloud-accounts.md). |
| "Please select a company" (*Bitte eine Firma wählen*) | No owner chosen for the account. | Choose your company or a client. |
| "Rule …: Account #… does not match the provider or does not belong to your companies." | The account belongs to another provider or company. | Choose a matching account. |
| "Rule …: Client #… does not belong to your companies." | The client is inactive or not yours. | Choose one of your active clients. |
| "DHL API error: …" / "DPD API error: …" / "GLS API error: …" / "UPS API error: …" / "Hermes API error: …" | The provider rejected the label. | Check access data, recipient address and weight. |
| "DPD login failed: …" | Wrong Delis ID or password. | Correct the account. |
| "DHL: No receiver ID for returns is stored in the connection." | Return label requested without receiver ID. | Add the return receiver ID to the DHL account. |
| "No ShipCloud settings are stored for client …" | No rule applied and the client has no ShipCloud account. | Assign a [ShipCloud account](/company/shipcloud-accounts.md) or add a rule. |
| "ShipCloud did not return a tracking number." | Temporary ShipCloud problem. | Try again; see [Shipcloud API status](/administration/shipcloud-api-status.md). |

**All Connections** (*Alle Verbindungen*) opens [Jobs & connections](/administration/jobs-and-connections.md), where all accounts appear as connections (only with the matching permission). Tracking of direct-API labels is updated automatically, see [Shipment tracking](/orders/shipment-tracking.md) and [Shipping labels](/outbound/shipping-labels.md).
