"Held at customs" sounds like a queue. Most of the time it is a request — addressed to someone who has not read it.
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.
Tracking rarely distinguishes these. They need completely different responses.
| Kind | What is actually wanted | Who can unblock it |
|---|---|---|
| Charge unpaid | Import 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 information | An 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. |
| Inspection | Nothing. 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.
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.
You usually can, with two checks and no phone call.
For a charge, the goal is to make an unfamiliar demand credible by putting your name in front of it:
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.
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.
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.
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.
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 StoreWe'd like to measure how people find this site. We use Google's advertising cookies to see which searches and ads bring merchants here. Nothing runs until you choose, and declining changes nothing about how the site works. Read the privacy policy.