Guide for Shopify merchants

What "customs hold" means on a Shopify order — and who has to act

"Held at customs" sounds like a queue. Most of the time it is a request — addressed to someone who has not read it.

Last updated September 2026

The short answer

Almost everything written about customs holds explains what customs does. That is rarely the useful part. The useful part is this:

A customs hold is usually a request, not a queue. Something is being asked for, and the parcel stays still until it is provided. And the person being asked is very often the recipient — not you — which means the merchant is the last to find out that nothing is happening.

Three holds that look identical on a tracking page

Tracking rarely distinguishes these. They need completely different responses.

KindWhat is actually wantedWho can unblock it
Charge unpaidImport duty, VAT or a handling fee has to be paid before release.The recipient, in most cases — and only they can, because it is billed to them.
Missing informationAn incomplete or vague description, a missing value, a tariff code, a required licence or certificate.You, usually — the data came from your shipping label and commercial invoice.
InspectionNothing. The parcel has been selected for checking.Nobody. This one really is a queue, and chasing it changes nothing.

The reason this matters: two of the three are being actively waited on, and one of those two is waiting on someone who has no idea. If you treat all customs holds as "these things take time", you will let a request expire while believing you were being patient.

Why the merchant finds out last

Follow the chain. Customs raises the request with the carrier. The carrier contacts the recipient, because the charge is theirs to pay and the address is theirs to confirm. The contact goes to whatever phone number or email was on the shipping label.

Now count the ways that fails. The number was never collected at checkout. The email went to a folder nobody opens. The message came from an unfamiliar sender asking for money, which in 2026 is exactly what a scam looks like — so a careful customer ignores it on purpose.

Meanwhile nothing in your store changes. Shopify shows the order as fulfilled. The tracking page says something bland. Your first real signal is the customer asking where their order is, days or weeks later, or the parcel coming back.

The customer is not being difficult. An unexpected message demanding a payment before a parcel is released is indistinguishable from a common fraud. A recipient who ignores it is behaving sensibly. That is exactly why a message from you — the shop they actually bought from — is worth so much more than the carrier's notification.

Working out which one you have

You usually can, with two checks and no phone call.

  1. Read the event wording, not the status. Anything mentioning duty, tax, fee, payment or "unpaid" is a charge. Anything mentioning documents, declaration, description, invoice or a code is missing information. Wording that mentions only inspection, examination or control, with no request attached, is the queue.
  2. Check what you sold it under. If your shipping is delivered-duty-unpaid, a charge landing on the recipient is expected behaviour, not an error. If you ship delivered-duty-paid and a charge appears anyway, something was declared wrongly and that is yours to fix.

What to send

For a charge, the goal is to make an unfamiliar demand credible by putting your name in front of it:

To the customer — charge unpaid

Your order has arrived in [country] and customs is asking for an import fee before releasing it. The carrier will contact you with payment instructions — that message is genuine, and paying it is what releases the parcel. If you would rather check before paying anything, reply here and I will confirm the amount with the carrier first.

The last sentence is doing real work. It gives a cautious customer a way to verify without abandoning the parcel, which is the outcome you actually want.

To the carrier — missing information

Consignment [number] is held for documentation. Please confirm exactly which field or document is required and I will supply it today. If a corrected commercial invoice is needed, tell me which line is disputed.

What we are not going to tell you

We are not going to tell you how long a customs hold lasts, or what percentage clear within a week. Those numbers vary by country, by carrier, by the reason for the hold, and by the time of year. Anyone quoting a single figure is quoting it about a different situation than yours.

What we will say is that the length of the hold is rarely the thing that decides the outcome. What decides it is whether the person being asked for something finds out in time. That is a communication problem, and it is one you can actually solve.

The one thing to change today

Stop treating "held at customs" as a status to wait out. Read the event text once and sort it into charge, documents, or inspection. Two of those three are waiting for a human being — and in the most common case, that human being is your customer, who has not been told anything they find believable.

That's what we built Delivery Radar for

It watches every tracked parcel your Shopify store ships and surfaces only the ones that have gone quiet longer than their route should allow, been refused, held at customs, or started heading back to you — with the reason and a customer message ready to send.

It doesn't message anyone automatically. It tells you which parcels need you, so you're not opening tracking pages one by one.

See it on the Shopify App Store