LUCENTCOMMERCEGET A FREE STORE AUDITFREE AUDIT

TAX · INTERNATIONAL · MARKETS · CRO · 22 APRIL 2025 · 7 MIN READ

Duties at checkout: the post-purchase surprise that kills repeat orders

Collecting duties at checkout costs you conversion once. Not collecting them costs you the customer, the parcel and the support ticket.

One catalogue priced in four currencies

If you ship cross-border in any volume, yes — collect duties at checkout. The alternative is Delivered at Place, where the courier asks your customer for money on the doorstep, adds a brokerage fee of its own, and holds the parcel until someone pays. You trade a visible increase in the order total for the removal of the single worst post-purchase experience in retail. The caveat is that Shopify’s figure is an estimate, not a settlement, and the data it estimates from is product data you have to maintain.

IN SHORT

  • Delivered Duty Paid means you collect import costs at checkout; Delivered at Place means the courier collects them from your customer on delivery.
  • Shopify’s duty and import tax amounts are estimates based on the information available when the order is placed, not a guaranteed settlement with customs.
  • HS codes are required for all international orders; without one, Shopify falls back to the product description and category, and with none of the three it calculates nothing.
  • DDP shipping labels are only available through a subset of Shopify’s carrier accounts, so the carrier decision and the duties decision are the same decision.
  • Refunding an order that collected import taxes means recovering them from the customs authority yourself, and Shopify warns they are not always recoverable.
  • The conversion hit from a higher total is measurable and survivable; the cost of a refused parcel is the goods, the return leg and the customer.

What the two options actually do to a customer

There are two incoterms that matter here, and Shopify’s documentation names both. Under Delivered Duty Paid (DDP) the seller takes responsibility for import costs — duties, import taxes, and brokerage or disbursement fees — and can collect them during checkout. Under Delivered at Place (DAP), which most stores are running by default without having chosen it, the customer pays those costs on delivery.

DAP reads as cheaper because the storefront price is lower. What the customer experiences is different: a courier email demanding a payment they were not told about, a parcel held at a depot, and a brokerage fee the courier has added for the privilege of collecting it. Some pay. Some refuse delivery, and you get the goods back weeks later having paid for both legs. Nearly all of them remember it.

The pattern is worst in exactly the markets you most want to grow. A first order from a new country is the one carrying the least trust, and it is the one you have handed to a stranger in a van to renegotiate.

The estimate problem, stated plainly

This is the part worth reading twice, because it decides whether DDP goes well. Shopify is explicit: “Charges for duties and import taxes are estimates based on the available information at the time that the customer places an order.” It is not a quote agreed with a customs authority.

The documentation is equally explicit about the consequence. “Inaccurate product information, such as a missing country or region of origin or an incorrect Harmonized System (HS) code, might result in additional duties being charged to the customer upon delivery.” In other words, bad product data does not merely make the estimate wrong — it reproduces the exact doorstep surprise you turned DDP on to prevent, and this time the customer has already paid you for it.

So DDP is not a toggle. It is a toggle plus a product data obligation, and the second half is where the work is.

The product data you have to fix first

Shopify states that “HS codes are required for all international orders.” Where a product has no HS code, duties are calculated from its description and product category instead; where it has none of the three, Shopify does not calculate duties and import taxes for that order at all. That last case is the dangerous one, because nothing appears broken — the order goes through, the total looks right, and the shortfall surfaces at the border.

Country of origin sits alongside it. Origin is where the goods were made, not where you ship them from, and getting it wrong on a product that qualifies for preferential treatment under a trade agreement can cost your customer real money.

  • HS codes on every product you ship internationally — at the variant level where variants differ materially.
  • Country of origin on every product, sourced from your supplier rather than assumed from your warehouse.
  • Accurate, specific product descriptions and categories, because they are the fallback when an HS code is missing.
  • A check for products with none of the three, which are the ones that silently collect nothing.
  • A process for new products, so the data set does not decay the moment the clean-up project ends.

Your carrier may make the decision for you

This is the constraint that catches stores mid-project. If you buy labels through Shopify’s carrier accounts, DDP labels are supported on a specific subset — Canada Post for the USA, DHL Express, DHL Express Canada and DHL eCommerce. Shopify puts the limit bluntly: “If you use any other carrier with Shopify’s carrier accounts, then you can’t purchase a label for orders where duties have been collected.”

Read that in order. You can collect duties at checkout and then find you cannot buy a label for the order you collected them on. If you are on a Shopify carrier account with a carrier outside that list, the duties decision is really a carrier decision, and it needs to happen before anyone touches the storefront. Stores with their own negotiated carrier contracts or a 3PL handling labels are in a different position, and should confirm DDP support with the carrier directly rather than with Shopify.

Refunds are where DDP bites back

Here is the cost almost nobody models. When you refund an order that collected import taxes and has been fulfilled, Shopify tells you to “contact the country or region’s customs authority to recover the tax that you’ve remitted” — and adds that “import taxes that have been paid to a country or region’s customs authority aren’t always recoverable.” The same applies to low-value goods taxes, recovered from the tax authority rather than the customs one.

For a fashion brand with a high return rate into several countries, that is not an edge case, it is a line in the P&L. It does not change the recommendation — the alternative still hands your customer to a courier — but it does change the maths on which markets are worth shipping into at all. A market with a 40% return rate and unrecoverable import taxes may simply not be a market yet.

There is also a Shopify transaction fee on orders where duties are collected. It is not charged on orders shipped within your own country or region, on orders between EU member countries, or on abandoned checkouts. Check the current rate for your plan on Shopify’s own pricing information rather than taking a number from a blog post, including this one.

Thresholds move, and 2025 proved it

De minimis — the value below which a shipment enters duty-free — is not a fact about the world, it is a policy that governments change. Shopify’s documentation records one such change: from 29 August 2025, “de minimis doesn’t apply to shipments to the United States,” so duties apply to US imports regardless of value. Anyone whose US strategy quietly depended on small parcels slipping under a threshold found out that year.

Separately, low-value goods tax regimes apply in a specific set of regions — Shopify lists Australia, New Zealand, Switzerland, Norway, the European Union and the United Kingdom. These are different mechanisms with different registration consequences, and they are the reason “just turn duties on” is not a complete instruction.

The practical lesson is architectural, not political: do not encode a threshold in your pricing strategy or your shipping rules as if it were permanent. Whoever owns international at your company should be checking the regimes for your top markets on a schedule.

What we would actually recommend

For most cross-border stores: collect duties at checkout, and treat the product data work as the project rather than the toggle as the project. Show the duty as its own line in the cart and at checkout rather than rolling it into the price — a customer who can see what the charge is and why is a customer who does not open a ticket about it.

But be honest about the two cases where we would not. If cross-border is a handful of orders a month, the HS code work and the carrier constraints cost more than the problem; ship DAP, say so clearly on the product page and in the shipping policy, and revisit it when volume justifies it. And if your returns rate into a market is high and the import taxes are unrecoverable, the answer may be to stop shipping there and open the market properly later — with local pricing, a local returns address and stock in the region.

The general rule holds though. A surprise charge on the doorstep does not just lose the order, it teaches the customer that buying from you is risky. That lesson is expensive and it does not wear off.

Questions this raises

Does collecting duties at checkout hurt conversion?

It raises the displayed total, so expect some effect at the point of purchase. What it removes is refused deliveries, courier brokerage fees, support tickets and customers who never return. Judge it on delivered orders and repeat rate over a quarter, not on checkout conversion in isolation.

Are Shopify’s duty calculations accurate?

They are estimates. Shopify describes them as “estimates based on the available information at the time that the customer places an order,” and warns that missing country of origin or an incorrect HS code can result in additional duties charged to the customer on delivery. Accuracy is a function of your product data.

What happens if I do not add HS codes?

Shopify falls back to the product’s description and category to calculate duties. If a product has no HS code, no description and no category, duties and import taxes are not calculated for that order — which is worse than an inaccurate estimate, because nothing looks wrong until customs intervenes.

Can I refund duties to a customer?

You can refund the customer, but recovering what you remitted is your problem. Shopify directs merchants to contact the relevant customs authority and states that import taxes paid to a customs authority are not always recoverable. Model this before entering a high-returns market.

Which carriers support DDP labels on Shopify?

Through Shopify’s carrier accounts, DDP labels are supported for Canada Post (USA only), DHL Express, DHL Express Canada and DHL eCommerce. With any other carrier on a Shopify carrier account you cannot buy a label for an order where duties were collected. Own or 3PL carrier contracts should be confirmed with the carrier.

Should a small store collect duties at checkout?

Often not yet. If cross-border volume is a few orders a month, the HS code and carrier work outweighs the problem. Ship Delivered at Place, state plainly on the product page and shipping policy that import charges may be due on delivery, and switch when the volume makes the surprise expensive.

NEXT STEP

Free store audit

A senior Shopify engineer reviews your storefront, theme performance and checkout, then sends a prioritised list of fixes.