Skip to main content
Nerve Centre KPIs · Audit Profile · Sentiment Settings 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

SignalWarnCritical
on_time_delivery_rate9592
exception_rate23
avg_transit_days23
damaged_rate0.30.5
tracking_gap_pct35
lost_rate_pct0.20.3
retouren_etikett_failure_pct12
eu_customs_hold_pct510
auth_token_failures_24h15

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