My customer's shipping address is completely valid, so why does checkout say no shipping is available?
A perfectly valid shipping address sometimes gets zero shipping methods at checkout. Here's why that happens and how to trace it back to your shipping profiles, zones, and stocked locations.
What's going on
A customer enters a completely normal, deliverable address at checkout and gets no shipping methods at all, or a message that no shipping is available to that address. The address itself is fine. Shopify isn't rejecting the text of the address; it's trying to calculate a shipping rate for that destination and coming up empty, and checkout presents that as if the address can't be shipped to.
This is a shipping configuration gap, not an address parsing bug. Shopify generates rates per shipping profile: each profile groups a set of products, lists the locations that fulfill them, and defines shipping zones, such as countries, provinces or states, or postal code ranges, with rates attached. For Shopify to return a rate, three things have to line up at once: the destination address has to fall inside a zone on the relevant profile, the location stocking the ordered item has to be attached to that profile, and that location needs available inventory for the variant. If any one of those is missing, checkout silently shows no shipping options for what is, in every practical sense, a valid address.
This shows up more often on stores with more than one shipping profile, for example a custom profile for oversized or specialty items, or more than one fulfillment location, because it's easy for a zone or a location link to get set up on one profile but not carried over to another. It also tends to surface after operational changes, such as adding a new warehouse, moving inventory between locations, or narrowing a zone's postal code range without checking the effect on every product currently stocked there.
Why it happens
Shopify doesn't keep a single global shipping rate table; it computes rates live for each cart based on shipping profiles. A profile ties together which products it covers, which of your locations can fulfill those products, and which geographic zones those locations are allowed to ship into, with rates or carrier accounts attached per zone. If the customer's address doesn't fall inside any zone attached to a profile that covers everything in their cart, or if the location holding stock for that item isn't included in the profile's zone coverage, Shopify has no rate to offer and checkout shows an empty shipping methods list.
The same dead end happens if the zone and location setup are correct but the item is out of stock at every location that could ship to that zone, since Shopify calculates rates based on locations that can actually fulfill the order, not on any location associated with the store in general. On stores using carrier calculated, real time rates, an additional layer can produce the identical symptom: the carrier itself declines to quote for certain address types, such as PO boxes, freight forwarder addresses, or remote postal codes it doesn't service, independent of anything configured in Shopify.
5 ways to fix it
Check that a shipping zone actually covers that address
In Settings, under Shipping and delivery, open each shipping profile the affected products belong to and review its zones. A single missing country, province, or postal code range will make Shopify return zero rates for that address, which shows up at checkout as no shipping options rather than a clear error. If you use postal code based zones, double check the range for gaps or typos that exclude the customer's code.
Confirm the product's stocking location is included in that shipping profile
Shopify calculates rates from the location or locations that actually stock the item, not just any location on your account. Open the shipping profile, check its assigned locations, and confirm the specific location holding inventory for the ordered variant is listed there and included in a zone that covers the address. If the item is only stocked at a location left out of the profile, or the profile links to a zone that location doesn't ship into, checkout will show no rates for an otherwise valid address.
Make sure the item actually has stock at that location
If a variant shows zero available inventory at every location capable of shipping to the customer's zone, Shopify won't return a rate even when the zone and profile are configured correctly. Check the product's inventory details for that location and quantity, then add stock, enable the option to continue selling when out of stock, or add another stocked location that covers the region.
Rule out carrier-specific or address-format restrictions
If you use carrier calculated shipping, the carrier itself can decline to quote a rate for certain addresses, such as PO boxes, freight forwarder addresses, or remote postal codes it doesn't service. Temporarily test the same address against a flat rate or manual rate to isolate whether the gap is in your Shopify configuration or in the carrier's own serviceable address rules.
Split or consolidate shipping profiles for multi-location catalogs
When a store has several locations each stocking different products, it's easy to end up with overlapping or contradictory shipping profiles. Reorganizing into fewer, clearly scoped profiles, one per fulfillment strategy, each with complete zone coverage for every location it references, removes the gaps that cause valid addresses to intermittently lose shipping options as inventory shifts between locations.
Bottom line
Most reports of a valid address getting no shipping options trace back to a mismatch between shipping profiles, zones, and where inventory actually sits, not a broken address field. Work through profile, zone, location, and stock in that order before assuming it's a bug. If you manage many products across multiple warehouses, a shipping profile audit tool that flags zone gaps and unlinked locations can save time, but for most stores this is a quick fix in Settings once you know where to look.
Browse the rest of the problem library, run a free storefront scan to catch issues like this automatically, or email us and we'll work out a custom solution for it.