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

# Deutsche Post / DHL Parcel audit profile, Vortex IQ

> What the Vortex IQ Deutsche Post / DHL Parcel health audit checks: Deutsche Post / DHL Parcel: German OTD, Retouren-Etikett Compliance, EU Customs Lanes & Cross-Channel Leak

**[Nerve Centre KPIs](/nerve-centre/kpi-cards/deutsche-post) · [Audit Profile](/nerve-centre/kpi-cards/deutsche-post/audit) · [Sentiment Settings](/nerve-centre/kpi-cards/deutsche-post/sentiment)**

Deutsche Post / DHL Parcel Germany is the Tier-1 domestic + EU cross-border carrier for DACH-region merchants. Findings either block German consumer-law compliance (Retouren-Etikett / 14-day Widerruf pre-paid return labels mandated by BGB section 312g), strand EU cross-border parcels at customs (CN23 paperwork on DE to AT/CH lanes), or cost a customer (dispatch SLA miss, tracking blackout). Cross-references commerce siblings via order\_ref; competing German carriers (DPD, PostNord, Hermes/Evri) via shipment cost per zone. DHL Parcel Germany is distinct from DHL Express - do not conflate the two APIs or products.

## What this audit checks

### Authentication & access

* OAuth2 client\_id + client\_secret still issue access\_tokens against api-eu.dhl.com/auth/token (no 401)
* DHL Developer Portal API key still active and not revoked at app level
* Geschaeftskunden account number (EKP, 10-digit) maps to an active DHL Parcel rate-card
* Participation number resolves to a valid service tier within the EKP (no 'unknown participation')
* Sandbox vs production base URL correctly set - merchant not pointed at api-test.dhl.com in production

### On-time delivery & transit

* Domestic (Inland / V01PAK) on-time delivery rate \< 95% rolling 30D
* EU (V53WPAK) on-time delivery rate \< 92% rolling 30D
* Average domestic transit days > 2 (DHL Parcel Inland baseline)
* Packstation locker first-attempt delivery materially below home-delivery success

### Exceptions & failed deliveries

* Shipment exception rate (status = Exception) > 3% rolling 30D
* AttemptedDelivery / Refused events converting to ReturnedToSender > 2%
* Out-for-delivery shipments not Delivered same day > 5%
* Dispatch SLA breach: actual\_delivery > expected\_delivery on open shipments

### Damaged / lost parcels

* Lost shipment rate (status = Lost) > 0.3% rolling 90D
* Damaged-parcel claim rate > 0.5%
* ReturnedToSender not attributable to a Retouren-Etikett (unexplained returns) > 1%

### Tracking data completeness

* Domestic tracking-event gap > 24h with shipment still InTransit
* EU / Welt tracking-event gap > 3d (customs-blackout signal) with shipment AwaitingCustoms
* Shipments with shipment\_no but zero tracking events after 48h (tracking-feed gap)
* EU cross-border CN23 customs declaration missing where customs\_declaration\_required = true

### Cross-channel fulfilment SLA (the kill-shot area)

* Cross-channel: ecom order with no DHL shipment after 48h -> fulfilment leak per channel
* Cross-channel: Retouren-Etikett generation failure rate > 2% -> blocks German Widerruf compliance, revenue + legal risk
* Cross-channel: EU cross-border parcels stuck AwaitingCustoms > 3 days joined to sibling orders -> refund-propensity \* order.total
* Cross-channel: DHL Parcel cost per zone > 10% above DPD / PostNord / Hermes sibling -> carrier renegotiation candidate
* Cross-channel: late-delivery refund-propensity \* sibling.order.total by zone (Inland / EU / Welt)

## Severity thresholds

| Signal                         | Warn | Critical |
| ------------------------------ | ---- | -------- |
| `on_time_delivery_rate`        | 95   | 92       |
| `exception_rate`               | 2    | 3        |
| `avg_transit_days`             | 2    | 3        |
| `damaged_rate`                 | 0.3  | 0.5      |
| `tracking_gap_pct`             | 3    | 5        |
| `lost_rate_pct`                | 0.2  | 0.3      |
| `retouren_etikett_failure_pct` | 1    | 2        |
| `eu_customs_hold_pct`          | 5    | 10       |
| `auth_token_failures_24h`      | 1    | 5        |

## Data sources

* `POST https://api-eu.dhl.com/auth/token` - OAuth2 token issuance
* `POST https://api-eu.dhl.com/parcel/de/shipping/v2/orders` - Shipment / label creation (write-side)
* `GET https://api-eu.dhl.com/parcel/de/tracking/v0/shipments` - Tracking events (read-side, OTD + gap detection)
* `POST https://api-eu.dhl.com/parcel/de/shipping/v2/returns` - Retouren-Etikett (pre-paid return label) generation
