138 lines
6.4 KiB
Markdown
138 lines
6.4 KiB
Markdown
# DHL Geschäftskundenportal CSV Sendungsdatenimport — Format Specification
|
||
|
||
> **Sources:** Official DHL XLS templates downloaded from `dhl.de` / `shop.deutschepost.de`
|
||
> * `DHLCSVImport-VLS.xls` – Geschäftskundenportal (GKP) Version
|
||
> * `dhlcsvimport_shop.xls` – DHL Online Frankierung (Privat/Shop) Version
|
||
> * `DHLCSVImport_de.xls` – Internationale Version
|
||
> * `dhl-versenden-funktionen-im-detail-de-202302.pdf` – GKP "Versenden" Overview
|
||
|
||
---
|
||
|
||
## 1. General CSV Format Rules
|
||
|
||
| Parameter | GKP Version (VLS) | Shop/Private Version | International Version |
|
||
|-----------|-------------------|---------------------|----------------------|
|
||
| **Encoding** | CP1252 (Windows) | CP1252 (Windows) | CP1252 (Windows) |
|
||
| **Separator** | `;` (semicolon) **only** | `,` `;` `\|` `:` `#` or Tab | `;` (semicolon) **only** |
|
||
| **Line ending** | `<CR>`, `<LF>`, or `<CR><LF>` | `<CR>` or `<CR><LF>` | `<CR>`, `<LF>`, or `<CR><LF>` |
|
||
| **Quoting** | Double-quote fields containing separator or `"`; double `"` inside | Same | Same |
|
||
| **Max records** | **100** | **50** | **100** |
|
||
| **Empty lines** | Ignored | Ignored | Ignored |
|
||
| **Newlines in fields** | **Not allowed** | **Not allowed** | **Not allowed** |
|
||
|
||
---
|
||
|
||
## 2. Column Definitions (CSV Header / Spaltennamen)
|
||
|
||
The header row MUST contain these exact column names. Order must be preserved as shown.
|
||
|
||
| # | Field Name | Type | Required | Description |
|
||
|---|-----------|------|----------|-------------|
|
||
| 1 | `SEND_NAME1` | String(50) | ✅ First row | Sender name line 1: First+Last name or Company |
|
||
| 2 | `SEND_NAME2` | String(50) | ❌ Optional | Sender name line 2: c/o, department, etc. |
|
||
| 3 | `SEND_STREET` | String(50) | ✅ First row | Sender street name (without house number) |
|
||
| 4 | `SEND_HOUSENUMBER` | String(11) | ✅ First row | Sender house number |
|
||
| 5 | `SEND_PLZ` | String(11) | ✅ First row | Sender postal code |
|
||
| 6 | `SEND_CITY` | String(38) | ✅ First row | Sender city |
|
||
| 7 | `SEND_COUNTRY` | String(3) | ❌ Optional | ISO3 alpha country code. Default: `DEU` if empty |
|
||
| 8 | `RECV_NAME1` | String(50) | ✅ Every row | Recipient name line 1 |
|
||
| 9 | `RECV_NAME2` | String(50) | ❌ Optional | Recipient name line 2 |
|
||
| 10 | `RECV_STREET` | String(50) | ✅ Every row | Recipient street name |
|
||
| 11 | `RECV_HOUSENUMBER` | String(11) | ✅ Every row | Recipient house number |
|
||
| 12 | `RECV_PLZ` | String(11) | ✅ Every row | Recipient postal code |
|
||
| 13 | `RECV_CITY` | String(38) | ✅ Every row | Recipient city |
|
||
| 14 | `RECV_COUNTRY` | String(3) | ❌ Optional | ISO3 alpha. Default: `DEU` |
|
||
| 15 | `PRODUCT` | String(30) | ❌ Optional | Product key (see §3). If empty, must be chosen after import in the portal. |
|
||
| 16 | `COUPON` | String(30) | ✅ Every row | Coupon code assigned via GKP to your billing number. Valid for 100 uses. |
|
||
| 17 | `SEND_EMAIL` | String(100) | ✅ First row | Sender email address |
|
||
|
||
### Sender Inheritance Rule
|
||
Sender fields (`SEND_*`) only need to be populated in the **first data row** and whenever the sender changes. Subsequent rows inherit the last-seen sender values. Incomplete sender data in a row triggers an import error.
|
||
|
||
---
|
||
|
||
## 3. Product Codes (PRODUCT field)
|
||
|
||
### Germany Domestic — `*.DEU` suffix required
|
||
|
||
| Key | Product | Weight |
|
||
|-----|---------|--------|
|
||
| `PAK02.DEU` | DHL Paket | 2 kg |
|
||
| `PAK05.DEU` | DHL Paket | 5 kg |
|
||
| `PAK10.DEU` | DHL Paket | 10 kg |
|
||
| `PAK31.DEU` | DHL Paket | 31,5 kg |
|
||
|
||
**Your product `DHL PAKET GKP`** → use `PAK02.DEU`, `PAK05.DEU`, `PAK10.DEU`, or `PAK31.DEU` depending on weight.
|
||
|
||
### EU / International — `*.EU` suffix (Shop version only)
|
||
|
||
| Key | Product |
|
||
|-----|---------|
|
||
| `PAECK.EU` | Päckchen |
|
||
| `PAK05.EU` | Paket 5 kg |
|
||
| `PAK10.EU` | Paket 10 kg |
|
||
| `PAK20.EU` | Paket 20 kg |
|
||
| `PAK315.EU` | Paket 31,5 kg |
|
||
|
||
### International version (no suffix)
|
||
|
||
| Key | Product |
|
||
|-----|---------|
|
||
| `PAECKS` | Päckchen S |
|
||
| `PAECK` | Päckchen M |
|
||
| `PAK02` | Paket 2 kg |
|
||
| `PAK05` | Paket 5 kg |
|
||
| `PAK10` | Paket 10 kg |
|
||
| `PAK20` | Paket 20 kg |
|
||
| `PAK31` | Paket 31,5 kg |
|
||
|
||
---
|
||
|
||
## 4. Complete CSV Example (GKP Version)
|
||
|
||
```csv
|
||
SEND_NAME1;SEND_NAME2;SEND_STREET;SEND_HOUSENUMBER;SEND_PLZ;SEND_CITY;SEND_COUNTRY;RECV_NAME1;RECV_NAME2;RECV_STREET;RECV_HOUSENUMBER;RECV_PLZ;RECV_CITY;RECV_COUNTRY;PRODUCT;COUPON;SEND_EMAIL
|
||
Selma Sender;DHL Online Frankierung;Charles-de-Gaulle-Str.;20;53113;Bonn;DEU;Max Mustermann;DHL Online Frankierung;Charles-de-Gaulle-Str.;20;53113;Bonn;DEU;PAK02.DEU;ABCDEFG;selma.sender@domain.de
|
||
;;;;;;;Mustermann GmbH;z. Hdn. Herrn Mustermann;Bundeskanzlerplatz;2;53113;Bonn;DEU;PAK02.DEU;ABCDEFG;
|
||
;;;;;;;Mustermann GmbH;z. Hdn. Herrn Mustermann;Grüner Weg;10;53175;Bonn;DEU;PAK05.DEU;ABCDEFG;
|
||
Max Mustermann;;Steinweg;3;34117;Kassel;DEU;Mustermann GmbH;z. Hdn. Herrn Mustermann;Grüner Weg;10;53175;Bonn;DEU;PAK31.DEU;ABCDEFG;max.mustermann@domain.de
|
||
```
|
||
|
||
**Key observations:**
|
||
- Row 1: Full sender + first recipient
|
||
- Rows 2-3: Empty sender columns → inherits from row 1
|
||
- Row 4: New sender → all sender fields filled again, new email
|
||
- Every row has `RECV_*`, `PRODUCT`, and `COUPON`
|
||
- Semicolons separate all fields
|
||
|
||
---
|
||
|
||
## 5. Coupon Code (COUPON)
|
||
|
||
- A coupon code is assigned to your **billing number** (Abrechnungsnummer) via the Geschäftskundenportal.
|
||
- Each coupon is valid for **100 shipments**.
|
||
- The field is **required** in every row in the GKP version.
|
||
- Your billing number: **31647432600101** — you need to generate a coupon code for this number in the GKP portal.
|
||
|
||
---
|
||
|
||
## 6. Additional Notes
|
||
|
||
- The GKP "Versenden" module supports **custom CSV import templates** where you define your own column-to-field mapping. The fixed template above is the default/legacy format.
|
||
- Maximum **100 records** per import file. Excess rows are discarded.
|
||
- Fields exceeding the maximum length are **truncated** on import.
|
||
- House numbers and postal codes are strings — leading zeros preserved.
|
||
- No newlines allowed within field values.
|
||
- Country codes: ISO 3166-1 alpha-3 (e.g., `DEU`, `AUT`, `CHE`, `FRA`, `ITA`).
|
||
|
||
---
|
||
|
||
## 7. Source URLs
|
||
|
||
| Source | URL |
|
||
|--------|-----|
|
||
| GKP Template XLS | `https://www.dhl.de/content/dam/images/Paket/GK/downloads/DHLCSVImport-VLS.xls` |
|
||
| Shop/Private Template XLS | `https://shop.deutschepost.de/shop/pop/dhlcsvimport.xls` |
|
||
| International Template XLS | `https://www.dhl.de/int-versenden/gw/restweb/nepal/assets/downloads/DHLCSVImport_de.xls` |
|
||
| GKP Functions Overview PDF | `https://www.dhl.de/dam/jcr:211b2975-947c-4fa8-ae47-0bb340a1fd9d/dhl-versenden-funktionen-im-detail-de-202302.pdf` |
|