De Minimis Is Dead and Your Shopify Store Still Ships DDU: Why US Orders Keep Getting Refused at the Door
The $800 exemption that let low-value parcels into the US duty-free ended on August 29, 2025. A year on, most Shopify stores that ship internationally still have duty collection switched off, so the bill lands on the customer's doorstep instead of at your checkout — and the parcel comes back to you.
If you ship internationally into the United States and you have not touched your duties settings since before August 2025, here is what is actually happening on your orders right now. The parcel arrives at a US address, the carrier bills your customer a duty charge nobody warned them about, and one of two things happens. Either they pay it in an annoyed mood and never order again, or they refuse it, and the parcel comes straight back to you, at your expense, months after you already paid to ship it out.
Neither of those is a shipping problem. Both of them are a checkout configuration problem, and it is one most Shopify stores have not fixed.
What actually changed
For decades, the US let shipments under 800 dollars into the country without paying import duty. This was called the de minimis exemption, and it is why so many small international orders used to just show up with nothing extra to pay. Executive Order 14324, "Suspending Duty-Free De Minimis Treatment for All Countries," ended that at 12:01am Eastern on August 29, 2025. There is no longer a value threshold. Every commercial shipment into the US, regardless of price, is now dutiable, from every country.
It is also not a temporary measure you can wait out. The One Big Beautiful Bill Act, signed July 2025, separately repeals the statutory basis for de minimis entirely from July 1, 2027. Whatever happens to the executive order in the meantime, the exemption is not coming back.
None of this required you to change anything in Shopify. That is exactly the problem. The law changed, your store did not, and Shopify will happily keep shipping orders under the old assumption forever unless you go in and turn on the new one.
DDP versus DDU, and which one your store is actually doing
There are two ways a dutiable parcel can cross the border. Delivered Duty Paid, DDP, means you collect the duty from the customer at your checkout, remit it, and the parcel clears customs with nothing owed on arrival. Delivered Duty Unpaid, DDU, means nobody paid it upfront, so the carrier collects it from the customer at the door, usually with a handling fee stacked on top, usually as a surprise.
Go check which one you are doing. In your admin, open Settings > Markets, click into your US market, and look for the duties and import taxes toggle. If your store predates August 2025, or if nobody has touched this screen, there is a real chance it is still off, which means every US order you have shipped since then has gone out DDU. Your customer is the one finding out about the new law, at their front door, from a courier.
Why DDU is the expensive option even when it looks free
DDU feels like it costs you nothing because you are not the one paying the duty. You are paying for it a different way.
A customer who refuses the parcel sends it back through the same carrier network it just came through, and you are usually on the hook for the return leg, on top of the outbound shipping you already paid, on top of a product that is now sitting in your inventory again minus whatever the round trip did to the packaging.
A customer who does pay it, pays it grudgingly, and some of them file a chargeback anyway, because a charge from a courier they have never heard of, for an amount that was never disclosed at checkout, is exactly the shape of transaction that makes people call their bank instead of you. You end up defending a dispute for a fee you did not even charge.
And the customers who read enough to know duties are coming just do not check out at all when your cart shows a vague "duties and taxes may apply at delivery" line instead of a real number. Uncertainty at checkout is its own kind of abandonment.
Turning on DDP properly
Enabling the toggle in Settings > Markets is the easy part. The number it shows your customer is only as accurate as two fields on every one of your products: the Harmonized System code and the country or region of origin. Shopify needs both to calculate a real duty rate. Without them, it falls back to guessing from your product title, description, and category, and that guess goes wrong in both directions. Undercharge, and you are quietly absorbing the difference on every order, the same way an unset shipping weight quietly absorbs freight cost. Overcharge, and you have just added an abandonment reason to a checkout that did not have one before.
Fixing this is a bulk-edit job, the same way filling in a missing shipping weight is. Go to Products, select all, open the bulk editor, and add the Harmonized System (HS) Code and Country/Region of Origin columns. If you already export product data for another system, both columns exist in the standard product CSV, so you can fill them in a spreadsheet and re-import rather than clicking through each variant.
One thing worth knowing before you assume the number Shopify shows is exactly what customs will charge: some carriers calculate duty on product cost alone, while Shopify's estimate can include the shipping charge in the dutiable value. Merchants comparing their Shopify checkout duty against the actual carrier invoice have found the two do not always match to the cent. Treat the checkout figure as a close, defensible estimate, not a guarantee, and reconcile it against your carrier's actual charges on the first batch of orders after you switch it on, not a year later when a customer disputes one.
You will also see merchants online suggesting shipments get marked as "gifts" to dodge duty entirely. Do not do this. It is a customs misdeclaration, not a workaround, and the actual consequence is a seized parcel or a fine, not a saved duty charge.
A small trust signal worth adding while you are in there
Once duties are genuinely included at checkout, say so on the page, so the number a US customer sees earlier is not a surprise later. A short conditional block on your cart or product page, scoped to the US market with localization.country, does this without touching your checkout template:
{%- if localization.country.iso_code == 'US' -%}
<p class="duties-included-badge">
<strong>Duties & import taxes included</strong> — nothing extra to pay at your door.
</p>
{%- endif -%}
It is a small thing, but it is the difference between a customer who trusts your total and one who is bracing for a second bill that, if you have done the setup above, is never coming.
If you sell into other markets too
The US is the one with the sudden, total change, but it is not the only one moving. The EU introduced a flat parcel-level charge on low-value consignments from July 1, 2026, so if your Markets setup treats "international" as one bucket rather than one configuration per destination, this is a good moment to go through each market individually rather than assuming what fixed the US also covers Europe. If your store sells into several regions with different tax and hreflang requirements already, the same Markets configuration that governs your international SEO is the screen you are already in — duties just live one tab over.
What this does not fix
Turning on duty collection stops the surprise at the door. It does not audit whether your HS codes are correct, whether your product weights and dimensions are feeding the freight side of the calculation accurately, or whether your existing US customers from before August 2025 are still expecting the old, duty-free experience. That last one is a support and email job, not a settings job, and it is worth a short note to anyone who has ordered from you before telling them what changed and why.
If you want a second pair of eyes on your Markets and duties setup, or want the HS code and origin data filled in properly rather than guessed at, get in touch, or see what I do for stores selling internationally on Shopify.