I’m Janson, CEO of ASG Dropshipping. We run fulfillment out of four warehouses in Shenzhen and Dongguan.
Right now, at least one of your destination countries is probably misconfigured in a way you haven’t spotted yet.
Some of those misconfigurations tell you. A customer hits an error, or the country simply vanishes from the checkout dropdown.
Others won’t say a word. The order completes.
The customer is happy. The money is wrong, and you find out weeks later.
One version note first. Shopify’s rate pages now carry a banner: shipping profiles and shipping rates are gradually moving to shipping options by market (Shopify Help Center , banner read 2026-09-20).
The rollout is staged. The three blind spots below apply either way; the menu paths follow the shipping-profiles setup those same pages still document.
Quick AnswerShopify fulfillment from China breaks in two different ways, and only one of them announces itself. A destination can be underpriced, blocked, or under-collected. The right question is not which Shopify rate type to pick. It is: for this destination, which blind spot are you exposed to — and which one will actually tell you when it breaks.
Key Takeaways
Shopify’s own weight-based rate table takes product weight as input. Package dimensions are not listed as an input for that rate type (Shopify Help Center , read 2026-09-19).
A customer can only pick a country at checkout when it sits in both an active market and a shipping zone that has a rate (Shopify Help Center , read 2026-09-19).
Duties are a second, separate checklist. They cannot be collected in the Rest of world zone at all (Shopify Help Center , read 2026-09-19).
Two of the three failures can run silently. Nothing at checkout is obliged to announce them, so you have to go looking.
Some destinations are worth fixing. Some are worth excluding on purpose, cleanly, until you can price them.
The Real Question Isn’t Which Shopify Rate Type to Pick — It’s Which Blind Spot You’re In
You’ve probably spent an evening on this already. Flat rate, or weight-based?
Free shipping above a threshold, or a real rate? That rate table gets rebuilt more often than any other setting in a growing store.
Here’s the thing — that evening was spent on the wrong layer.
Quick answer: A Shopify rate type controls how much gets charged. It does not control whether the country can be bought from , and it does not control whether duties get collected .
Those are three separate systems inside the same settings area. Each one can sit in a wrong state on its own, and two of the three can stay wrong without ever raising an error at checkout.
It isn’t a rate-type problem. It’s a blind-spot problem.
Each of these three is documented by Shopify. They live on three different help pages, and the pages I reopened on 2026-09-19 do not line them up into one view for you.
You build the combined picture yourself, or you ship without it.
Illustration. Three blind spots, and the only one that reports itself. Source: Shopify Help Center rate setup, shipping zones and markets, and duties considerations pages, read 2026-09-19.
Three blind spots, two ways they fail
Three blind spots, two ways they fail
Blind spot
What breaks
Loud or silent
How you’d actually notice
Real example
Rate-accuracy
The shipping fee you collect is smaller than the shipping fee you pay
Silent
Reconcile carrier invoices against collected shipping on orders you already shipped
A bulky, light SKU: Shopify charges on product weight; the carrier bills on volume
Sellability
The customer cannot select or complete the destination
Loud
It shows up the moment a customer tries to check out
“Country is in restriction. Change country details to proceed checkout”
Duties-compliance
Duties you configured are not charged
Silent
Compare the duties rate in settings against what the order actually charged
A merchant set 10% US duties; checkout charged nothing
The three mechanisms in this table come from Shopify’s own pages: rate setup , shipping zones and markets , and duties considerations , all read 2026-09-19.
“Loud” and “silent” describe what reaches you , not what reaches the customer. A sellability failure is loud because your store surfaces it while someone is trying to pay.
The other two complete the order and file nothing. A customer may still feel them.
An unexpected bill at the door is not a quiet event for whoever pays it. But nothing in your admin raises a hand.
The three are not mutually exclusive. One country can sit in two of them at once.
There’s also an order to them. Sellability comes first.
Say a customer can’t reach checkout for Spain. You will never find out that your Spanish duties setting is wrong.
There is no completed order to expose it.
Do this next: pick your top three destination countries by revenue. Write each one in a row.
You’ll fill in the three columns as you read.
How Shopify International Shipping Rates Actually Work: Four Types and a 99-Profile Ceiling
If you’ve only ever set one flat rate and moved on, you’re not behind. That’s a normal starting point, and it holds up fine until the second country shows up.
Quick answer: Shopify gives you four rate types — flat, price-based, weight-based, and carrier or app-calculated.
They differ in one thing that matters for China fulfillment: what each one reads as input. A store can also create up to 99 custom shipping profiles, which is a real ceiling you can hit.
Shopify’s rate setup documentation (read 2026-09-19) organises this as flat rates carrying three conditions, plus carrier or app-calculated rates — four configurations in practice.
The page itself never says “four rate types”; that grouping is mine. Flat rates apply one time per order by default.
Weight-based rates need accurate product weight data; if products are missing weight information, then shipping rates don’t calculate correctly at checkout.
That last line is worth slowing down on. Weight-based rates combine the weights of the individual products, with your store default package weight added to each product.
So the input is product weight plus a fixed package assumption. Nothing in that description reads the box.
How Shopify International Shipping Rates Actually Work: Four Types and a 99-Profile Ceiling
Rate type
What it reads as input
What is not listed as an input
Best-fit SKU pattern
Flat
Nothing about the parcel; applies once per order by default
Weight, dimensions
Genuinely uniform catalogues
Price-based
Order value (compared against the discounted cart total)
Weight, dimensions
Small, dense goods where value tracks cost
Weight-based
Sum of product weights + your default package weight
Dimensions
Dense SKUs where real billable weight ≈ product weight
Carrier / app-calculated
Weight, dimensions, and destination
—
Mixed catalogues, bulky items, live quoting
Source: Shopify’s rate-type descriptions, read 2026-09-19. “Not listed as an input” means exactly that — it is not named in Shopify’s description of that rate type on that page. It is not a claim that the platform is incapable of anything broader.
Photographed at an ASG facility.
The profile mechanics almost nobody reads
For stores still using shipping profiles, a profile is a set of shipping rules for specific products and locations. One product or variant belongs to only one profile at a time.
Add it to a second profile, and it’s automatically removed from the first.
This matters for split-origin orders. When an order pulls products from different profiles or locations, Shopify combines the separate rates into a single shipping rate at checkout.
One customer-facing number. Several rate calculations behind it.
If one of them is wrong, the total is wrong and it looks completely normal.
There is a hard ceiling too: you can create up to 99 custom shipping profiles. That number isn’t only in the docs.
A merchant hit it and wrote it down:
“Shopify has a maximum limit of 99 custom shipping profiles.
If you cross that limit, you need to use a third party shipping rate application [such as ShipMagic] to create shipping rules, which emulate the exact functionality of shipping profiles.”
— sniper2804, Shopify Community , 2024-02-27
This ceiling is stated in Shopify’s own documentation and reported by a merchant who ran into it firsthand.
Orders that combine items from several suppliers create their own confusion on the tracking side. I covered that one separately: why multi-supplier orders confuse Shopify tracking .
Do this next: for stores still using shipping profiles, open your rate table and write down which of the four configurations each zone uses.
If it says weight-based everywhere, the dimensional-weight blind spot is the one to read closely.
The Dimensional-Weight Blind Spot: Why a Weight-Based Rate Can Quietly Underprice Bulky, Light SKUs From China
This is the one that costs real money while your dashboard looks fine.
One sequencing note before you reach for a tape measure. This check only pays off on destinations customers can actually reach.
If a country’s market and shipping zone don’t agree, nobody can buy from it, and an underpriced rate there isn’t costing you anything yet.
That gate has its own section further down — run it first if you’re unsure.
You’ve got a product that weighs almost nothing and takes up half a carton. A pet bed.
A foam insert. A set of storage cubes.
Your weight-based rate charges the customer for 900 grams, because that’s what the product weighs.
Quick answer: Shopify’s weight-based rate charges on product weight plus your default package weight. Carriers bill on whichever is greater — actual weight or volumetric weight.
For a bulky, light SKU shipped from China, those two numbers are not close, and the gap lands on your margin. Checkout never flags it.
Look — this is not a bug. Shopify’s description of weight-based rates says what it reads, and dimensions aren’t in it.
The word “dimensions” shows up in the carrier-calculated description instead, alongside weight and destination.
So the platform is consistent with itself. The mismatch appears when a rate calibrated on product weight meets a carrier that bills on volume.
An illustrative example, not an ASG shipment
DHL publishes its formula openly.
Volumetric weight equals length in centimetres, times width, times height, divided by a volumetric divisor. DHL states that DHL Express typically uses a standard divisor of 5000, and bills whichever is greater between volumetric and actual weight.
DHL’s own worked example: a box measuring 50 cm x 40 cm x 30 cm, divided by 5000, gives 12 kg.
Now put a hypothetical 900-gram product in that box. The carrier is working from 12 kg.
Your rate table is working from roughly 1 kg. That difference repeats each time that SKU ships.
Illustration, not an ASG shipment record. Built from DHL’s published volumetric-weight formula (read 2026-09-19); DHL states the divisor varies by carrier and transport mode.
Two boundaries on that example, and I’m not going to blur either one.
First, 5000 is DHL’s number. DHL itself writes that the divisor “can vary depending on the mode of transport” and the carrier.
The same page says it’s crucial to confirm the current divisor with your shipping company directly. Do not carry 5000 over to another carrier because it appeared in an article.
Second, those figures are a worked illustration built from a public formula. They are not an ASG shipment record.
We don’t publish a billable-weight sample set, so I’m not going to dress one up as an example.
What I can tell you from our side is narrower and real. When we evaluate a branded packaging upgrade, dimensional weight sits on the checklist.
So do protection, materials, labelling, and the warehousing and picking impact. The rule we work to internally is blunt: a packaging upgrade must not become a new fulfillment bottleneck.
Photographed at an ASG facility.
That’s the point I’d push: the dimensions that decide your carrier bill are decided at the packing bench, long before anyone opens the Shopify rate table.
Do this next: take your three bulkiest SKUs. Measure the outer carton.
Run your carrier’s published formula on each. Compare the result against the weight tier your rate table actually charges.
If the carrier number is higher, you have found your first silent leak.
Why Shipping Zones and Shopify Markets Have to Agree Before a Country Can Check Out
You set the rates. You saved.
You tested the store, and the country isn’t in the list. Sellers write that exact sentence into the Shopify Community, and two of those threads are quoted below.
Quick answer: In Shopify, a country has to clear two separate gates before anyone can buy from it.
It must belong to an active market, and it must sit in a shipping zone that has an available rate. Miss either one and the country is either unselectable or uncheckoutable.
This is the one blind spot that reports itself immediately.
Shopify’s shipping zones and markets page (read 2026-09-19) puts it plainly:
“Customers can select a country at checkout only when it’s included in both an active market and a shipping zone with available shipping rates.”
— Shopify Help Center, read 2026-09-19
The same page says countries can only be added to your shipping zones when those countries already belong to a market.
Read that as an order of operations. Market first, zone second.
Rates third.
Illustration, not a screenshot of a real store. Source: Shopify Help Center, shipping zones and markets page, read 2026-09-19.
Two merchants, same gate, different distance in
The first one is the straightforward version:
“Hi I have set the shipping rates per region however when i do a test on my website the countries are not showing. Please advise”
— epaturzo, Shopify Community , 2022-03-21
The answer pointed straight at the other gate:
“Just check if you have access to Shopify Markets in your store?
If you do, you can navigate to Settings > Markets to check if the other regions on your store has been activated within the Markets settings of your store.”
— Anindita, same thread, 2022-03-21
He did the rate work. He hadn’t done the market work.
Two gates, one of them open.
The second case is harder, and it’s the one I’d want you to remember:
“I have a new shopify basic store and I am trying to setup the shipping and when I go to check out it says “Country is in restriction. Change country details to proceed checkout”.
The shipping address is in the United States. I have my Markets set to United States.”
— Shop36, Shopify Community , 2025-12-17
This merchant believed both gates were open. The reply is the sentence I’d tape to the monitor:
“That error usually means the country is either not enabled in Shopify Markets or not included in an active shipping zone, even if it looks correct at first glance.”
— Jagruti_Naveen, same thread, 2026-01-02
Even if it looks correct at first glance.
I’m not going to tell you which of the two settings was actually wrong in that store. The person answering couldn’t say either, and the thread never settled it.
Guessing a root cause for someone else’s store is how bad advice gets written.
What survives is the judgment: a settings screen that looks configured is not evidence that two systems agree.
Do this next: for each destination you sell to, open Settings > Markets and confirm the market is active.
Then, for stores still using shipping profiles, open Settings > Shipping and delivery. Confirm the country appears inside a zone with at least one rate.
Shopify’s troubleshooting page recommends the built-in “Test rates” simulator for this instead of relying on abandoned checkouts, and it’s faster than a test order.
Why Your Landed Cost Estimate Breaks When Duties and Delivery Options Don’t Line Up
Here’s the failure I hate most, because nothing looks wrong. The orders come in.
The customer pays. Months later someone asks why the duty line on the P&L is empty for an entire country.
Quick answer: Duties are a completely separate checklist from shipping rates.
The destination can’t sit in the Rest of world zone, each country has to be set to either DDP or DAP, and the duties shown at checkout are estimates.
When that checklist is out of alignment, the order still completes — you just don’t collect what you meant to collect.
Shopify’s duties considerations page (read 2026-09-19) carries three constraints that decide your landed cost.
One: the Rest of world zone cannot collect duties at all. To collect duties and import taxes for a country or region, you have to add it to an existing shipping zone or create a new one.
If your long tail of small markets lives in Rest of world, none of them are collecting.
Two: DDP and DAP are exclusive per country. For each country or region, you can choose DDP or DAP — but you can’t offer both to customers in the same country or region.
Pick one and the customer experience follows from it.
Three: the number at checkout is an estimate. Shopify states the duties charged are estimates based on the latest information at the time the customer places the order, and additional duties might be charged for reasons such as incorrect duties paid or incorrect Harmonized System codes.
I’m not re-explaining DDP and DAP here — that’s a different piece, and I already wrote it: DDP vs DDU for ecommerce sellers .
What matters in this article is narrower: how that choice interacts with the zone you put the country in.
Illustration. Source: Shopify Help Center, duties and import taxes considerations page, read 2026-09-19.
What a silent duties failure looks like from the inside
“Hi there, I’m having issues with Shopify’s checkout wherein it is not charging the duties I’ve set for the US.”
— Lunamise1, Shopify Community , 2025-08-26
She had set duties at 10% in her store settings. The responses in that thread pointed at two different places.
One was Markets and eligibility, where duties only calculate if the country is enabled there.
The other was an option inside the expanded country area, controlling whether duties and taxes appear as a separate line item.
Notice what did not happen. No error.
No blocked checkout. No notification.
That is the whole difference between this blind spot and the market-and-zone gate. A blocked checkout interrupts a customer while you’re watching.
This one interrupts nobody — at least not the seller. The customer may notice later, when an unexpected bill lands at the door.
Nothing in your admin will flag it for you.
One distinction I want to be exact about, because stores get mislabelled here: choosing DAP on purpose is not a failure. If you decided the customer pays on delivery for that country, duties not appearing at checkout is the system working.
The blind spot is only a blind spot when your configured intent and the actual charge disagree — like a 10% setting that collects nothing.
Do this next: pull one completed order from each duty-collecting country. Compare the duty amount actually charged against the rate you configured.
If a country has no orders to check because nobody can select it, fix the market-and-zone gate first.
Setting Up DDP Shipping Without Creating a Silent Duties Failure
If you collect duties at checkout, the setup is a sequence. For stores still using shipping profiles, it also sits in a different settings area from your rates.
Skipping a step in the middle doesn’t stop the sequence. It just produces a store that looks configured.
Quick answer: I reduce Shopify’s documented duties setup into six operational checks — DDP-capable carriers, the countries you actually selected, HS codes and country of origin, store policies and international notifications, the terms you accept before the feature switches on, and the 0.5% fee.
Shopify’s page walks more steps than six; these are the ones that fail quietly.
The fee is temporary, applies to orders with calculated duties, and took effect February 2, 2025, excluding domestic and EU intra-member orders.
The steps come from Shopify’s guide to collecting duties at checkout . Two details on that page are easy to miss and expensive to miss.
The first: the Shopify Fulfillment Network app is not compatible with this feature.
The second is the fee. It’s small, it’s real, and it belongs in your landed cost maths rather than in a surprise at the end of the quarter.
Setting Up DDP Shipping Without Creating a Silent Duties Failure
Check
What Shopify’s setup asks for
What breaks if you skip it
1. Confirm DDP labels
Your carriers have to support delivered-duty-paid labels
You collect duty from the customer and then can’t ship it prepaid — a documented route to the customer being charged twice
2. Select countries
Choose the specific countries or regions to collect duties for
A country you never selected quietly collects nothing, with no checkout error
3. Fill in HS codes and origin
Review and add missing HS codes and country-of-origin information
Estimates get less accurate; Shopify names incorrect HS codes as a reason extra duties get charged later
4. Update policies and notifications
Shopify’s flow includes reviewing your store policies and your international sales notifications
Nothing in the platform breaks. Your published policy text and your order emails simply stop matching what checkout now charges
5. Agree and activate
Review the terms, accept them, and turn the feature on
The feature stays off while your settings page looks populated
6. Price in the 0.5% fee
Temporary 0.5% transaction fee on orders with calculated duties, effective 2025-02-02, except domestic and EU intra-member orders
Your landed cost model is short by the fee on every duty-calculating order
Photographed at an ASG facility.
Source: Shopify Help Center, collecting duties at checkout page, read 2026-09-19.
Step 3 is where China-fulfilled stores usually stall, because the codes have to come from whoever actually knows the product.
I wrote the longer version of that problem separately: HS codes and product descriptions for DDP shipping from China .
One merchant in that duties thread pointed at a setting that’s easy to walk straight past.
Read it as one community troubleshooting suggestion, not a confirmed diagnosis of anyone’s store — that thread never settled what was actually wrong in the original poster’s admin:
“When you enable the US duties and tariffs, you have to expand the area and then select the option where the duties and taxes appear as a separate line item.”
— Matt_Grech, Shopify Community , 2025-09-05
A setting that lives one click inside another setting is exactly the kind of thing a silent failure is made of.
Do this next: walk the six rows above against one country you already sell to. Any row you can’t answer with a yes is the row to fix this week.
Want the worked version of this?
Get the China-Fulfillment Shipping Zone and Duties Self-Check Sheet — one row per destination, with the three blind-spot columns from the opening model and the six duty checks from this section.
Get the self-check sheet →
No commitment. We send the sheet and answer questions if you have them.
The Counterargument: “Just Turn On Carrier-Calculated Rates and Skip All This”
There’s a straight answer to everything above, and plenty of people give it: stop maintaining rate tables and let the carrier quote live at checkout.
It’s a fair argument, and I want to give it its strongest form before I answer it.
Quick answer: Carrier-calculated rates can materially reduce the first blind spot when your product, package and location data are accurate, because that rate type reads weight, dimensions, and destination.
They do nothing for the other two. Market and zone alignment, and duties configuration, are unaffected by which rate type you choose.
Bogos.io’s Shopify shipping rates guide makes the case directly, with a whole section on using real-time shipping rates to increase checkout completion. The logic holds up as far as it goes.
A live quote is calculated from carrier or app inputs — inputs closer to the parcel characteristics that actually determine the bill. And nobody maintains a weight tier table by hand.
But Shopify’s own troubleshooting page attaches a condition: the quote is right only when product weights, package dimensions and both addresses are right first.
Live rates move the arithmetic to the carrier. They don’t clean your data.
On blind spot one, that argument is the stronger one, with that condition attached.
Shopify’s own rate-type description confirms carrier-calculated rates read dimensions alongside weight and destination — the exact input that the weight-based table doesn’t name.
So where does it stop?
Two limits, both documented, neither invented by me.
Access. Built-in carrier integrations are available on all plans, in supported fulfillment regions — the same page carries a region-by-region table of which carriers you actually get.
Connecting your own carrier accounts means activating third-party carrier-calculated shipping, and Shopify states this requires specific plans or an additional monthly fee.
Location data. Shopify’s troubleshooting page lists app locations without a physical address as a reason carrier-calculated rates can’t be used from them.
If your China-side fulfillment appears in Shopify as an app or dropshipping location without a configured physical address, this option can be unavailable exactly where you needed it.
And then the part that no rate type touches.
Turning on live rates does not activate a market. It does not add a country to a zone.
It does not enable duties for the United States, and it does not fill in a missing HS code. The market-and-zone gate and the entire duties checklist are unchanged by the decision.
Do this next: if carrier-calculated is available on your plan and your fulfillment location has a real address, test it on your bulkiest SKU first.
Then run the market-and-zone check on that destination anyway.
The Shopify Fulfillment Decision Framework: Fix the Configuration, or Exclude the Destination
At some point the honest move is to stop selling to a destination until you can price it properly.
That sounds like giving up revenue. It’s the opposite.
An underpriced country and a silently uncollected duty keep taking a cut, order after order, while looking like growth.
Quick answer: Run four checks per destination — coverage, rate type, duties interaction, and the promise you make at checkout. Three of them have a fix.
The fourth has a decision: price it correctly, or remove it cleanly from your zones until you can.
Illustration, matching the four-check table above.
The Shopify Fulfillment Decision Framework: Fix the Configuration, or Exclude the Destination
Step
What you check
Default move if it fails
1. Coverage
Is the country in an active market and in a zone with an available rate? (Shopify )
Fix both before touching anything else. Until this passes, no other problem in this country is even observable
2. Rate type vs SKU
Does the rate type read the input that decides your carrier bill?
For bulky, light SKUs, price your weight tiers manually from your own billable-weight maths — Shopify’s weight-based rate won’t read volume for you — or move that catalogue to a carrier-calculated profile
3. Duties interaction
Is the country out of Rest of world, set to DDP or DAP deliberately, with HS codes filled in? (Shopify )
Complete the six duties checks above, or switch that country to DAP on purpose and say so on the product page
4. Checkout promise
Can you state a price and a delivery expectation you’d stand behind?
If not, exclude the destination from your zones for now — a clean absence beats a wrong price
There’s a real cost to step 4 that I won’t hide.
OneCart’s seller guide describes it well: “Customers from missing countries see ‘no shipping options available’ and abandon the cart silently — you never even get a notification.”
So exclusion is not free. You lose the customer and the signal.
Here’s why I still take that trade. A wrong price is also silent, and it also arrives with no notification.
The difference is that it keeps taking a cut, order after order, instead of once. Between two silent failures, take the one that stops.
And keep the two promises apart. What you charge is a shipping question.
When it arrives is a fulfillment question. The gap between your Shopify processing time and a China warehouse’s real lead time is its own trap.
I wrote about Shopify processing time versus China warehouse lead time separately.
Four checks, per country. That is the whole discipline that keeps Shopify fulfillment from China priced honestly.
Do this next: run all four checks on your top three destinations this week, and one new destination per week after that. Four checks per country, not forty.
Where ASG fits
We help Shopify sellers with shipping profile setup, zone and rate planning, warehouse coordination, transit-time support, and order visibility from the China side.
That’s configuration and planning support — it is not tax, customs or legal advice, and it is not a guarantee that your duties setup is correct for your specific countries.
Correct duty treatment per destination is something we work through with you, not something we sign off on sight unseen.
Talk to our team →
Our published fulfillment timing is typically 1–3 day processing, 5–8 day delivery to USA/UK/Europe.
Quick Answers About Shopify Shipping Zones and Rates
Does Shopify’s weight-based rate charge for package size?
No. That rate type reads product weight plus your default package weight.
Dimensions are named as an input for carrier-calculated rates instead.
Can a country be blocked at checkout even when shipping rates exist?
Yes. The country also has to belong to an active market.
Missing either condition makes it unselectable or uncheckoutable.
Is a missing duty charge always a configuration error?
No. If you deliberately chose DAP for that country, the customer pays on delivery.
It’s only a failure when intent and behaviour disagree.
Should you ever remove a destination from your shipping zones on purpose?
Yes.
When you cannot price a destination or align its duties, a clean exclusion costs less than a wrong price repeated order after order.
Frequently Asked Questions
Why did shipping rates disappear for a country I already set up?
Rates are only half the requirement. Shopify requires the country to sit inside an active market and inside a shipping zone with an available rate.
A merchant in the Shopify Community hit exactly this in 2022: regional rates were set, and the countries still didn’t appear at checkout.
The fix was in Settings > Markets, not in the rate table.
Why does Shopify say “Country is in restriction” even though Markets looks configured?
Because one of the two gates still isn’t open, and a settings page that looks right isn’t proof that it is.
A merchant reported this in December 2025 with Markets set to the United States, and checkout still blocked the order.
The reply noted the country may not be enabled in Markets, or not included in an active shipping zone, “even if it looks correct at first glance.” Check both gates directly instead of trusting the summary view.
Why isn’t Shopify collecting the duties I configured?
Duties carry their own preconditions . The country can’t sit in the Rest of world zone.
Duties have to be enabled for that specific country. Each country is either DDP or DAP.
Accurate HS codes and country of origin should be supplied as well — missing or incorrect product classification can reduce calculation accuracy.
One merchant configured 10% US duties and checkout charged none. Also check whether you chose DAP deliberately, in which case nothing is broken.
How do I work out what my carrier will actually bill for a bulky, light parcel?
Run the carrier’s own volumetric formula on the outer carton, then compare it against the product weight your rate table charges. DHL publishes its version : length times width times height in centimetres, divided by a volumetric divisor, billing whichever is greater.
DHL typically uses 5000 and says the divisor varies by carrier and transport mode, so confirm yours rather than borrowing that number.
How many shipping profiles can I create in Shopify?
Up to 99 custom shipping profiles , on top of the General profile you can’t delete. Past that, merchants use a third-party shipping-rate app to emulate profile behaviour.
Final Thoughts
Configuration errors aren’t equally dangerous. They’re dangerous in proportion to how quietly they fail.
“Loud” here means you find out, not that the problem is harmless to everyone else.
A blocked checkout is loud in that sense: embarrassing, in front of you the same day, usually fixed the same afternoon. An underpriced parcel and an uncollected duty are polite to you .
They let the order through, let the dashboard look healthy, and take a cut of every sale until somebody goes looking.
Loud failures are the easier ones to catch. You don’t need a paper trail to notice a blocked checkout.
The hard ones are always the settings nobody is forced to look at.
So stop grading yourself on whether the rate table feels tidy.
Grade yourself on whether you could prove, today, that the last order from your third-biggest market was priced right and taxed right.
You don’t need a perfect Shopify fulfillment setup. You need to know which of your destinations is lying to you quietly — and you need one habit: three countries, four checks, this week.
External Sources
ASG Data Note
Platform behaviour in this article — rate types, shipping profiles and their 99-profile ceiling, market and zone requirements, and duties setup — comes from Shopify Help Center pages reopened on 2026-09-19, with the URLs listed above.
Those same pages carried a banner when rechecked on 2026-09-20 : shipping profiles and shipping rates are gradually moving to shipping options by market.
The menu paths here describe the shipping-profiles setup those pages still document; the rollout is staged, not complete.
The volumetric-weight formula, the 5000 divisor and the 50 x 40 x 30 cm worked example are DHL’s own published figures, quoted with DHL’s own caveat that the divisor varies by carrier and transport mode; the bulky-SKU scenario built on them is an illustration, not a record of an ASG shipment.
Merchant quotations are reproduced verbatim from public Shopify Community threads with the original usernames and dates.
ASG fulfillment timing is quoted from our published service description. This article is an operator’s view of platform configuration, not tax, customs or legal advice.