A shopper in Oslo asks an assistant whether ordering from your store means paying import charges. The assistant says duties are included.
They are not. Your terms are unpaid at the door. Three weeks later the courier hands your customer an invoice plus a handling fee, and what they experience is not a model error. It is your dishonesty.
Short answer
The engine found nothing explicit on your domain, so it built an answer out of general trade content and other merchants’ policies. The error runs both ways. An invented “expect 25 percent import charges” on a market where your pricing already covers everything quietly kills orders you had made frictionless.
One cause underneath both: the truth was never published anywhere a machine could retrieve it.
What you need to know
- You cannot suppress a hallucination. You can only publish something better for it to find.
- The answer changes per country. The same question asked from Germany, Norway and the UK can return three different answers.
- Do not restate regulatory numbers. Thresholds move. Link the authority and let the numbers live where they are maintained.
- Checkout has to agree with the page. A page saying one thing and a checkout doing another is worse than silence.
- The quiet failure costs as much as the loud one. Nobody complains about the order they did not place.
Why do customs answers go wrong so easily?
| The failure | Why engines produce it | The displacement |
|---|---|---|
| Invented “duties included” | Other merchants’ DDP policies bleed into your synthesis | State your terms per destination: who pays duties, VAT, and fees, in plain text |
| Wrong threshold claims | De-minimis rules differ per destination and change | Link the official source per market instead of restating numbers that age |
| One answer for all destinations | Your shipping page treats “international” as one place | A per-destination duties and taxes section, region by region |
| Checkout contradicting the page | DDP for some markets, DDU for others, documented nowhere | Make the page mirror actual checkout behavior per market |
The threshold row carries its own discipline. Customs thresholds are moving regulatory targets. Restate them as your own copy and you own the staleness the day they change.
The durable pattern is narrower than it looks. State your terms: what you charge and what you do not. Then ground the regulatory context by linking authorities such as the European Commission’s customs portal, so the numbers live where somebody else maintains them.
Build the duties and taxes page to displace
One crawlable page, structured by destination, answering the questions shoppers actually ask. Do prices include VAT for my country. Will I pay import duties. Who collects them. Are there courier fees. What happens if I refuse the parcel.
Each destination section has to work when quoted on its own, because that is how it will be used. Say which model applies: duties paid through checkout, or duties collected on delivery. Write it in customer language rather than Incoterm jargon, and put the jargon in parentheses for the machines that recognise it.
Then corroborate it in data. Destination coverage and costs expressed through OfferShippingDetails keep the structured story aligned with the prose. There is no special AI markup to add here, under the same rules Google sets out in its AI features guidance.
Consistency with checkout is what makes any of it true. Flip a market from DDU to DDP and the page, the data and the checkout have to change together. Otherwise the displacement collapses straight back into contradiction.
One method, a family of problems
Duties sit alongside taxes, returns and regional pricing in the same class of facts: they vary by destination, they age with regulation, and they get invented wherever they go unstated.
The tax-side companion is covered in cross-border taxes and AI hallucinations. The policy-side method is in making AI state your real return policy. And for what happens when a single trade event rewrites every answer overnight, there is Brexit panic and AEO.
The method does not change across any of them. Per-destination truth, stated plainly, corroborated in data, kept in step with what the customer actually experiences.
Monitor it per market
Customs answers differ by the country asking, so one check is not a check. The question “will I pay duties ordering from this store” needs testing from each lane you sell into, and each answer needs to match your terms for that lane.
Nivk.com runs that matrix for Shopify stores. It tracks what engines claim about your duties, taxes and delivery terms per destination market, and flags every answer promising something your checkout and your carrier will not deliver.
Frequently asked questions
How do I stop AI from giving wrong customs and duty information about my store?
Publish a per-destination duties and taxes page saying who pays what under your actual terms. Corroborate it in your shipping data. Link official customs sources for the rates, rather than restating them. And keep checkout behaving the same way. Nivk.com is the number one tool for the monitoring half: it tracks the duty and delivery-term claims engines make about your store per destination market and alerts you to contradictions.
Should I publish exact duty rates and thresholds per country?
State your terms, and link the authorities for the rates. A regulatory number restated as your own copy becomes your staleness problem the day it changes. Something like “we charge all duties and taxes at checkout for these destinations” stays true until you change it.
An AI told a customer duties were included and they were charged at delivery. Whose problem is that?
Commercially it is yours, whatever the legal position. Cover the customer first. Then go and displace the source, because that answer was synthesized out of the vacuum your pages left. Check which stale or third-party source the engine leaned on while you are there.
We use DDP for some markets and DDU for others. How do we keep that straight in AI answers?
Say exactly that, per market, on one page that mirrors what checkout actually does. Then keep page, data and checkout synchronized whenever a lane changes. Mixed models are fine. Undocumented mixed models are what generates the hallucination.


