At a glance
Average billed cost per DHL InExpress shipment over the last 30 days, including base rate, fuel surcharge, residential surcharge, oversize surcharge, and Brexit-era customs handling fees. The “what’s it really costing me to ship a parcel” number, the figure your CFO needs to track because the headline rate card is rarely what you actually pay.
| What it counts | SUM(shipmentCharges.totalAmount) / COUNT(shipments) over 30 days. Includes every billable line item in DHL’s shipment charge structure. |
| Charge components | Base rate (zone × weight) + fuel surcharge (resets weekly, typically 18 to 28%) + residential surcharge + oversize/non-conveyable surcharge + remote-area surcharge + customs handling fee (cross-border) + duty advance fee (DDP) + paperless-trade fee. |
| Multi-carrier opacity | The merchant pays DHL InExpress’s blended rate; DHL absorbs the cost differential between sub-carriers (Yodel, Evri, GLS, etc.). The card reflects what you actually paid, not the underlying carrier mix. |
| Brexit / customs cost | UK to EU lanes typically run 35 to 70% higher than UK domestic on this card after customs handling and duty-advance fees. Customs handling alone is £2 to £8 per parcel depending on declared value and clearance complexity. |
| Returns / RTO | RTO charges (return shipping) are counted on the original shipment as an additional charge line. A returned parcel can effectively double its cost on the card. |
| Currency | The card uses the account’s billing currency (typically GBP for UK accounts, EUR for EU). Multi-account merchants see a per-account aggregate; cross-currency aggregation is not done (would be meaningless without FX). |
| Time window | 30D vsP (rolling 30D vs prior 30D) |
| Alert trigger | +10% vsP. Period-over-period rises >10% are typically driven by mix shift, fuel-surcharge spike, or accessorial creep. |
| Roles | owner, finance, operations |
Calculation
Calculated automatically from your DHL InExpress data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A UK fashion brand shipping ~8,000 InExpress parcels per month. 60% UK domestic, 40% UK to EU. Reading taken at 09:00 GMT on 12 Mar 26 for the trailing 30D vs prior 30D.| Lane | Shipments | Avg charge per shipment | Period change |
|---|---|---|---|
| GB → GB (domestic) | 4,800 | £6.42 | +£0.18 (+2.9%) |
| GB → IE | 850 | £9.10 | +£0.40 (+4.6%) |
| GB → DE | 1,400 | £11.85 | +£1.20 (+11.3%) |
| GB → FR | 720 | £12.40 | +£1.45 (+13.3%) |
| GB → other EU | 230 | £13.95 | +£0.95 (+7.3%) |
| All lanes (this card) | 8,000 | £8.94 | +£0.86 (+10.6%) |
+10% vsP is tripped. Five things to notice:
- The headline rise is concentrated on cross-border lanes. UK domestic moved +2.9% (in line with normal fuel-surcharge drift); EU lanes moved +11 to 13% (a structural shift). The likely cause is either a fuel surcharge step-up on EU trunk legs or a new customs handling fee tier from DHL.
- Each cross-border parcel costs ~80% more than domestic. That’s a structural Brexit cost, customs handling (£2 to £4), duty advance fee (1 to 2% of declared value), and longer trunk legs all stack. Bake into your free-shipping thresholds; EU shoppers should hit a higher threshold than UK shoppers.
- Mix shift can trigger this card without any rate change. If 5% of volume shifted from UK domestic to UK to FR, the average alone moves +£0.30 with zero rate-card change. Always check Shipments by Service and Shipments by Destination before assuming rate inflation.
- Compare against Cost Per Shipment Trend. A 90D sparkline tells you whether the +10.6% is a one-time step or a slow drift. Steps usually mean rate-card change; drifts mean mix shift or accessorial creep.
- At 8,000 parcels/mo × £0.86, you’re paying £6,880 more this month than last. Annualised that’s £82,560. Worth a 30-minute conversation with your DHL account manager, fuel surcharge negotiation, customs-handling fee waiver, or volume-tier renegotiation are all on the table at this scale.
Sibling cards merchants should reference together
Avg cost is the headline; pair with mix and trend cards to diagnose root cause:| Card | Why pair it | What the combination tells you |
|---|---|---|
| Cost Per Shipment Trend | The 90D shape of the same number. | Step changes vs slow drift have different causes, step = rate-card change, drift = mix or accessorial creep. |
| Cost by Zone | Per-destination-zone breakdown. | Identifies which lane is dragging cost up; cross-border lanes typically dominate. |
| High-Cost Shipment Outliers | Per-shipment outlier table. | Surfaces individual oversize / overweight / remote-area parcels that pull the average up. Often a packaging or routing fix. |
| Shipments by Service | Service-tier mix. | Mix shift toward Express Worldwide costs more than Economy Select; if the avg cost rose because mix shifted, the fix is checkout-side. |
| Shipments by Destination | Geographic mix. | A 5% shift toward EU lanes can move avg cost +£0.30 without any rate change. |
| Duty-Billing Mismatch Rate | Customs cost integrity. | If duty-mismatch is climbing alongside avg cost, you may be over-paying customs that you’ll never recover. |
Cross-connector: shopify.shipping_revenue | Charged-to-customer side of the same equation. | Shipping cost - shipping revenue = subsidy. A widening subsidy gap is a margin signal. |
Reconciling against the vendor’s own dashboard
Where to look in DHL InExpress’s own dashboard: MyDHL+ portal → Billing → Invoices. Each weekly or monthly invoice itemises every shipment with its full charge breakdown (base, fuel, surcharges, customs, duties). The card reads the same data via the/billing/charges API endpoint.
For finance teams, the Billing → Charge Analysis report aggregates by lane, service, and surcharge type, the breakdown the card slices.
Why our number may legitimately differ from MyDHL+:
| Reason | Direction | Why |
|---|---|---|
| Billing cycle | Either | DHL invoices typically run on a weekly cycle. The card pulls charges as they post; an invoice summary may show the same 30D differently if the cycle boundary clips. |
| Customs / duty inclusion | Either | The MyDHL+ “Shipping cost” tile sometimes excludes duty advance fees (treats them as customer-paid). The card includes everything DHL bills you, duties + handling + base. To match the portal, exclude lineType = 'DutyAdvance'. |
| Credits and adjustments | Ours lower briefly | Refund credits and rate-adjustment back-credits land in the next billing cycle. The card sees them when posted; the portal’s pending-credits view may show them earlier. |
| VAT / tax | Either | The card uses the net (pre-VAT) figure where available. Some merchant accounts return gross. Check your account configuration. |
| Currency | Either | Cross-currency multi-account aggregation is not done. If you have GBP and EUR accounts, the card shows them separately or one only. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
shopify.total_shipping | Charged-to-customer side. The gap between shipping revenue / order count and DHL avg cost is your shipping margin. | Free-shipping thresholds, ad-hoc free-shipping promos. |
| Internal P&L “delivery cost” line | Should reconcile to within rounding when DHL is the only carrier. | Multi-carrier mix, manual journal entries, rebates booked separately. |
dhl_avg_shipping_cost = SUM(charges) / COUNT(shipments). Pair with Cost by Zone, the zone-weighted average should reconcile back to this card via the volume mix.
Known limitations / merchant FAQs
My avg shipping cost rose 12% this period. Where do I look first? In order:- Mix shift first. Check Shipments by Destination, a 5pp shift toward EU lanes can move avg cost +£0.30 with zero rate change. Mix shift is operationally fine; it’s not a contract problem.
- Fuel surcharge. DHL resets fuel surcharge weekly based on diesel prices. A 4 to 6pp surcharge step usually adds £0.20 to £0.40 per parcel. Check the rate card on MyDHL+ for the active surcharge.
- Accessorial creep. Residential, oversize, remote-area surcharges can apply silently. High-Cost Shipment Outliers surfaces them. A new SKU with non-standard dimensions can trigger oversize on every shipment of it.
- Customs handling fee changes. DHL revises customs handling fees annually for cross-border traffic. Post-Brexit, these have crept up year-on-year.
- Negotiate volume tier if you’ve grown into a higher tier in the last 6 months.
- Fix oversize SKUs, repackage anything triggering oversize surcharge.
- Address quality, invalid addresses become RTO charges. Tighten checkout address validation.
- Service-tier optimisation. Economy Select is 20 to 30% cheaper than Express Worldwide for non-urgent parcels.
- Drop unprofitable lanes, if UK to FR is costing you 30% margin, consider passing the Brexit cost to the customer or removing the lane.