Shipping Fundamentals

DDP vs DAP: What Every EU Shopify Merchant Must Understand Before Shipping Cross-Border

When a parcel arrives at a German or Dutch customs office, the Incoterm printed on the label determines who pays the duty — and who loses the customer to a refused delivery.

Brice Mba
Brice Mba
CEO, REasy
Split view of a parcel label showing Incoterm DDP and a customs checkpoint illustration

The Incoterm on the Label Is a Financial Contract, Not a Formality

Every cross-border parcel your store dispatches carries an Incoterm. It sits in the commercial invoice, printed on the carrier label, and referenced in the customs declaration. Most Shopify merchants never consciously choose it — they inherit whatever the carrier or fulfilment app defaults to. That default is almost always DAP: Delivered At Place.

Under Incoterms 2020, Delivered At Place means your obligation ends when the goods arrive at the named destination — but with import duties, import VAT, and customs clearance still outstanding. The carrier delivers a parcel and a separate invoice for customs charges. Your customer, who paid what the checkout said, now owes more money to a carrier they've never heard of. In Germany, DPD and GLS issue these advance-duty invoices routinely. In the Netherlands, PostNL's customs handling fee runs €4–€15 per parcel depending on declared value. Your customer didn't sign up for that.

What Delivered Duty Paid Actually Commits You To

Delivered Duty Paid (DDP) under Incoterms 2020 shifts the entire cost chain to the exporter. You pay the import duty, the import VAT, the customs clearance fee, and the carrier's duty collection charge — everything — before the parcel reaches the doorstep. The customer pays the checkout price. Nothing else arrives.

This is not a carrier upgrade. DDP is a legal transfer of risk and cost. For a French Shopify store shipping a €55 linen cushion cover to Munich, DDP means:

  • Import duty: CN 6304.19 (other furnishing articles), EU MFN duty rate 0% — €0 in this case
  • Import VAT: 19% of (€55 + shipping + insurance) collected at checkout under your IOSS registration
  • Carrier duty-handling surcharge: €0 because there is nothing to collect at the door

Under DAP, the same shipment triggers a DPD duty invoice sent to the customer for the import VAT the store failed to collect — plus DPD's handling fee of €8–€14. The customer is looking at a €10–€15 bill for a €55 cushion cover they already paid for. Many refuse it.

The Economics of a Refused Delivery on the FR–DE Lane

Consider a typical DAP scenario: a growing online home-goods brand, let us call them NordHome Berlin, shipping from a French warehouse to Germany at roughly 300 parcels per month. Industry-observed refusal rates on DAP cross-border shipments to Germany run 5–15% depending on product category and average order value. For low-AOV categories (candles, accessories, cosmetics under €30), refusals cluster at the higher end of that range.

At 10% refusal on 300 parcels, that is 30 refused deliveries per month. Each refused parcel costs:

  • Return shipping from DE to FR: €8–€18 via Colissimo retour or DPD return service
  • Restocking or disposal if the product cannot be resold (perishables, fragile goods)
  • Lost margin on the original sale
  • Customer service cost to process the refund

The DDP switch does not eliminate refusals entirely — buyers still change their minds — but in the merchant onboarding data we work with, moving from DAP to DDP typically reduces refusals by 60–75% on the DACH corridor. The remaining refusals are buyer-preference refusals, not duty-surprise refusals.

Where the Confusion Comes From: DAP vs DDP on Intra-EU Shipments

Here is where many EU merchants get tripped up. If you are shipping from France to Germany, Italy, or Spain — all within the EU customs territory — there are no import duties between member states. Intrastat declarations exist for statistical purposes above certain thresholds, but no duty invoice will arrive at the door. So why does this still matter?

It matters for two reasons. First, if your store sources or ships from outside the EU — from a UK supplier post-Brexit, from a Chinese manufacturer doing direct drop-ship, from a US brand you white-label — every parcel entering the EU faces actual import duty and import VAT. Second, even on intra-EU shipments, the IOSS VAT question is live: if you are selling B2C goods under €150 shipped from a non-EU warehouse (a French merchant using a UK fulfilment centre, for example), IOSS applies and the checkout must collect VAT at the destination rate. Failure to collect it means the carrier tries to collect it at the door under DAP terms.

We are not saying every French-to-German shipment creates a customs crisis — intra-EU goods move duty-free within the single market. We are saying that once non-EU sourcing or non-EU shipping origin enters the picture, the Incoterm choice has direct financial consequences for your customer at delivery.

Carrier-Level Reality: DPD SafetyNet and GLS FlexDelivery

DPD in Germany operates a service called SafetyNet that, on DAP shipments with outstanding customs charges, flags the parcel and attempts pre-notification to the recipient. If the recipient doesn't respond or declines, DPD returns the parcel to the sender. The return is billed. The original duty invoice is cancelled — but the carrier's handling fee still applies in some configurations.

GLS Germany takes a similar approach with FlexDelivery: recipients can redirect, reschedule, or decline via SMS notification. On duty-liable parcels, many recipients choose decline. Colissimo, the La Poste parcel arm used heavily on the FR–DE and FR–ES corridors, issues customs invoices through a separate process where the recipient pays at the point of collection from a pick-up point. The friction is different from DPD but the outcome — buyer pays or buyer refuses — is the same.

DDP labels tell these carriers that duties are pre-paid and guaranteed by the shipper. The carrier receives no duty invoice to present and has nothing to collect. The delivery proceeds without a payment checkpoint.

Which Products Are Most Exposed on DAP Terms

Not all product categories carry the same duty risk. Some categories entering the EU from outside the customs territory attract 0% MFN duty (books, most electronics, certain software-related goods). Others carry meaningful duty rates that, when combined with import VAT, make the surprise bill at the door feel punitive to a consumer:

  • Apparel and clothing accessories: EU MFN duty rates typically 12% for woven fabric garments, up to 12% for knitted — on top of 19–22% import VAT depending on the destination
  • Leather goods (bags, wallets, belts): 3–3.7% MFN duty
  • Ceramic tableware: 6–12% MFN duty
  • Cosmetics and toiletries: 0–6.5% MFN duty, but import VAT is always live
  • Candles and home fragrance: generally 0% MFN duty, but import VAT of 19–21% still applies

For many Shopify DTC brands, the duty rate itself is low or zero, but the import VAT at destination — collected at checkout under IOSS on DDP terms vs collected at the door under DAP — is the real driver of refusals. A German consumer paying 19% VAT on a surprise duty invoice for a €45 candle they ordered is simply presented with a €8.55 bill they didn't expect. That is enough to trigger a refusal.

Why Not Just Build DDP Into the Product Price?

Some merchants attempt a blunt solution: inflate the product price by an estimated 20–25% and ship everything under DAP, hoping the inflated margin absorbs any duty the carrier might invoice. This approach has three failure modes. First, the estimated duty buffer is wrong for categories with variable duty rates — you either over-charge customers in low-duty countries or under-collect in high-duty ones. Second, carrier duty collection fees are not predictable: DPD's handling fee structure varies by parcel value and destination depot. Third, inflated prices reduce conversion; a €55 candle priced at €68 "to cover possible customs" loses to a competitor who ships DDP and shows the real breakdown at checkout.

The structurally sound solution is to calculate landed cost precisely at the time of the order — using the correct HS code, the destination country's duty rate, and the applicable VAT rate — and collect the exact amount at checkout. That is what DDP-with-IOSS integration does. The customer sees a transparent total. The carrier gets a pre-paid duty guarantee. Nobody gets a surprise invoice.

Practical Steps to Move from DAP to DDP on Your Shopify Store

The transition has four dependencies that must be in place before you can ship DDP reliably:

  1. EORI number: required to file export declarations from France or your country of export. Without it, your carrier cannot legally file on your behalf. Registration via the French customs Trader Portal (pro.douane.gouv.fr) takes 2–7 working days and is free.
  2. IOSS registration (for non-EU origin parcels under €150): if your goods originate outside the EU, you need an IOSS number to collect and remit EU import VAT at checkout rather than at the border. REasy can operate this layer on your behalf.
  3. HS code accuracy: the landed cost calculation depends on the correct 6-digit HS code for each product. A mis-classified product generates an incorrect duty rate, which means you either under-collect (duty shortfall paid by you, not the customer) or over-collect (customer overpays, which is a VAT compliance risk).
  4. Carrier DDP agreement: DHL Express, DPD, and GLS all support DDP shipments, but they require an account-level DDP agreement and a guarantee that the shipper will fund any duty shortfall. This is a commercial, not a technical, agreement with your carrier account manager.

Once these four pieces are in place, the mechanics of DDP shipping become an order-by-order calculation problem — something a properly integrated Shopify app handles at checkout without manual intervention.

Brice Mba, who founded REasy after encountering every one of these steps as a French e-commerce merchant, structured the platform specifically to sequence through these dependencies so merchants don't have to negotiate four separate setups before they can quote a duty-inclusive price.

The core decision, though, is not technical: it is whether you want your customer's first post-purchase experience to be a delivery, or a duty invoice followed by a decision.

Tired of refused deliveries and surprise duty invoices? REasy automates DDP shipping from inside your Shopify checkout.

Book a Demo

Related guides