ClearStock is live on the Shopify App Store.Install free →

← All blogs

Choosing a Tool10 min read

Cross-border shipping for small stores: duties, DDP vs DDU, and the returned-goods problem

Cross border shipping from the seller's side — who pays duties, DDP vs DDU at checkout, the click-path setup, and how international returns come back.

InventoryX is in development and not available today. ClearStock is the live Shopify app.

Cross-border shipping, from your side of the counter, is one question wearing several hats: when a customer in another country orders from your Shopify store, who pays the duties and taxes — you, or them — and what happens when that package comes back? The default answer is "them," via a system where your customer gets billed by the carrier at the door, which is also the answer that produces the most abandoned international orders, the angriest support emails, and the returned-goods mess this article spends its second half on. Short answer: you have two real models — DDP (delivered duty paid: duties collected at your checkout, delivered free of surprises) and DDU/DAP (delivered duty unpaid: your customer pays the carrier on arrival) — and the choice is a conversion-and-support decision as much as a shipping one.

One boundary first: this article is about shipping out to customers. Importing your inventory — HS codes, entry filing, landed cost on goods you buy — is a different direction of the same border, owned by the customs duties for small importers guide. Where the two worlds share vocabulary (they share a lot), this article stays on the outbound side.

The two models: DDP vs DDU in plain terms

The terminology descends from the same Incoterms family used in freight (the Incoterms guide covers the import-side versions), but at parcel scale it reduces to two questions: who pays the border charges, and when?

DDP — duties paid at checkout DDU/DAP — duties unpaid, customer pays on delivery
Who pays duties/taxes Customer pays them to you at checkout; you remit Customer pays the carrier (plus a broker/disbursement fee) before or at delivery
Checkout experience One price, no surprises Lower sticker price; surprise bill possible at the door
Your workload You configure rates and remit correctly Near-zero — until something goes wrong
Refusal risk Low — no border surprise Higher: customers refuse packages they didn't know were taxed
Failure mode You set duty rates wrong and eat the difference The returned-goods problem (below)

The term "DDU" (delivered duty unpaid) is the older colloquial label; in Incoterms 2020 it was formally retired in favor of DAP (delivered at place), and carriers still use all three labels in their rate sheets. For your purposes they mean the same thing in the checkout context: duties not prepaid by you.

The economics tilt matters more than the labels. A customer who ordered a $60 item and is met at delivery with a $22 duty-and-brokerage bill has two options: pay a 37% surcharge on their purchase, or refuse the package. Some pay. The refusals are where your costs multiply — which brings us to the part almost nobody plans for.

The returned-goods problem: the expensive end of international shipping

When an international customer refuses a DDU package (or it can't be delivered), one of three things happens, and two of them are bad — and when a refused parcel does make it back to your dock, the returned inventory processing framework owns what happens to the units:

  1. Abandonment. The carrier disposes of or auctions the goods after a holding period, per the carrier's terms (which vary — verify the current terms of whichever carrier you use). You've lost the product and the shipping; the customer was refunded. This is the most common outcome for low-value parcels, because return freight exceeds product value.
  2. Return to sender — billed to you. Return international freight can cost multiples of the original outbound leg. On a low-margin item, the returned unit often arrives with total freight costs exceeding its resale value even in new condition.
  3. Re-delivery after intervention. You or the customer pay the duties bill and the package completes delivery. Best case, but it requires someone noticing the customs hold in time — packages in customs limbo have holding clocks, and the clock runs on the carrier's schedule, not yours.

Run the math on a refusal with realistic, illustrative numbers — a fishing lures set at $55 retail, $24 product cost, shipped DDU internationally:

  • Refund to customer: −$55
  • Outbound freight: −$12 (sunk)
  • Package abandoned or returned: −$24 product, plus $0–30 return freight
  • Total loss: $91–121 on one refusal — more than the gross margin on two successful sales of the same item

Multiply by your international refusal rate and the "free" DDU model has a hidden line item that never appears on a rate sheet. This is the honest reason DDP at checkout exists: prepaid duties remove the surprise, and removing the surprise removes most refusals.

The Shopify setup, as a click-path

Shopify supports collecting duties and import taxes at checkout through Markets settings — the exact screens and availability depend on your plan and region, so verify in your own admin as of October 2026; the outline (per Shopify Help Center, "Charging duties and import taxes," accessed October 2026):

  1. Settings → Markets and select the market (country or region group) you want to change.
  2. In the market's settings, find "Duties and import taxes." Enable duties collection for that market.
  3. Choose how duties calculate — Shopify offers calculation options based on destination rules; review what each market supports rather than assuming one setting fits all countries.
  4. Set your shipping rates for the market so the customer sees the total picture: product + shipping + duties, itemized at checkout.
  5. Test with a real address in a duty-collecting country: place a draft-order test at checkout, confirm duties appear as a line item, and confirm who is responsible for remitting (Shopify's setup and your tax registration determines the remittance path — this is the step to get right or get advice on, because remittance obligations differ by destination).

Markets and duty settings change often — Shopify has been actively expanding market-level shipping and duties features through 2026 — so treat the help doc, not this article, as the current source of truth for the exact clicks.

The strategic decision behind the click-path: you can enable duty collection per market. Many small stores start DDU-everywhere, then flip duty collection on for their highest-volume international countries first — the markets where refusals and support tickets actually cost money — and leave long-tail countries DDU.

A pre-mortem: your international shipping plan, attacked

Before you open international selling (or before your next quarter of it), attack the plan the way reality will:

  • "The customer didn't know about the duty bill." If you ship DDU, the mitigation isn't a buried FAQ line — it's checkout-level messaging ("international orders may be subject to duties on delivery") and a policy page that states it plainly. Silence is how refusals happen.
  • "The customs paperwork was wrong." Undeclared, undervalued, or misdescribed parcels get held, fined, or destroyed, and the penalty lands on the shipper. A "gift" label or a $5 declared value on a $80 order saves the customer duty and puts the risk on you — decline that request, always.
  • "The return request came from abroad." Your domestic return policy quietly assumes returns are cheap. An international return label can exceed the product's value — decide before the first request: for which countries do you accept returns, who pays freight, and is there a no-return threshold below which you refund without wanting the unit back? Write it into your return policy explicitly rather than deciding ad hoc per customer.
  • "The bestseller went dark abroad but not at home." International demand drains the same pool as domestic stock, and a promo aimed at one market can run the SKU to zero for both — the cost of that double-sided loss is the out-of-stock ledger's territory. If you promote internationally, your reorder math needs to count international demand too, not just domestic velocity.
  • "Freight quotes looked flat across countries." They aren't — zone, weight breaks, and country-specific surcharges vary wildly. Quote your three heaviest and three lightest SKUs to your top two international destinations before promising a flat international rate.

Choosing: a decision path

Your situation Default Why
International is <10% of orders, mostly low-value items DDU, with clear checkout messaging Prepaid-duty admin isn't worth it at low volume; refuse-and-abandon losses are small and absorbable
One or two countries drive most international orders DDP in those markets via duties at checkout Removes refusal risk exactly where it's costing you
High-value items (leather goods, small electronics) DDP anywhere you ship them A surprise duty bill on a $300 item is a near-guaranteed refusal
No capacity to manage remittance and market settings yet DDU + explicit policy language An honest DDU beats a misconfigured DDP; upgrade when volume justifies
Customer asks you to mark it as a gift / undervalue Decline Customs fraud exposure sits with you as the shipper; the duty saved isn't worth it

Common questions

What is cross-border shipping? Shipping orders to customers in another country, which puts your parcel through export from your side and import on the customer's side — meaning duties, import taxes, and customs paperwork become part of the transaction. The core decision is who pays those border charges: you, prepaid (DDP), or your customer, on delivery (DDU/DAP).

What's the difference between DDP and DDU? DDP (delivered duty paid) means duties and taxes are collected before shipping — in a Shopify context, at your checkout — so the parcel arrives with nothing owed. DDU (delivered duty unpaid, formally DAP under Incoterms 2020) means the customer pays duties to the carrier before or at delivery, usually with a brokerage fee added. DDP converts better and reduces refusals; DDU is simpler to operate.

Should I charge duties at checkout on Shopify? If one or two international countries drive meaningful order volume, yes for those markets — duty collection at checkout removes the delivery-day surprise that causes refusals and support load. At low international volume, many stores stay DDU with clear messaging and flip on duty collection when refusals start costing real money.

What happens if an international customer refuses a package? The carrier typically attempts re-delivery, bills the duties to someone, or — after a holding period defined by the carrier's terms — disposes of the goods or returns them to you at your cost, and return freight often exceeds the product's value. Refusals are the hidden cost of the DDU model; that's why prepaid duties are worth configuring for your serious international markets.

Can I ship internationally without dealing with customs? No — every international parcel crosses a border and needs accurate customs declarations (description, value, country of origin). What you can avoid is paying the duties yourself: under DDU terms the customer handles import charges. But misdeclared or undervalued parcels risk holds and fines that land on you as the shipper, so accurate declarations are non-negotiable either way.

Next step

Pull your last 90 days of international orders and count two numbers: refusals/return-to-sender by destination country, and support tickets mentioning "customs" or "duty." If either number clusters in one or two countries, that's your pilot for duties-at-checkout — and if you ship DDU today, read your checkout messaging with a customer's eyes: is the duty bill stated anywhere they'd actually see it before they buy?