Shipping rates not showing at checkout › “Already sold out” but in stock

Shopify checkout diagnostics

“Already sold out” — but the product is in stock

Your stock count is fine, yet a cart comes back empty with a sold-out warning. We hit exactly this on a test store, on a product whose inventory was not even tracked. It was not about stock at all.

The product 'The Inventory Not Tracked Snowboard' is already sold out.

What we saw

We created carts for the same product, at the same minute, for buyers in different countries. The US cart got two delivery options. The carts for France and Belgium got none, and this warning.

The product could not be sold out: Shopify was not tracking its inventory, so it can never run out. France had an active market, and the shipping zone covering it was the same one that worked for the US. The one thing that differed was this: asked from a French buyer's point of view, the product was not available for sale in France.

So the warning meant “this product cannot be sold to this buyer”, worded as if it were a stock problem. A merchant reading it checks inventory, finds stock, and goes looking in the wrong place.

Where you will see it: this is the warning returned when a cart is created through Shopify's Storefront API, which headless storefronts and many apps use. On a classic Online Store checkout, the same situation may surface differently, for example as “Shipping not available”.

Is it really about stock? One query tells you

Ask the Storefront API whether the variant is for sale in the buyer's country — the buyer's view, not the admin's:

query($id: ID!) @inContext(country: FR) {
  node(id: $id) {
    ... on ProductVariant {
      availableForSale
    }
  }
}

Not comfortable with GraphQL? Our free store check runs this test for every country your store ships to and reports “Not for sale here” separately from shipping problems.

What to check when it is not stock

  1. Markets. Is the buyer's country in an active market, and is the product included in that market's catalog?
  2. Publishing. Is the product published to the sales channel the cart comes from (Online Store, or the headless channel your storefront uses)?
  3. Locations. Is the stock held at a location whose inventory is available to fulfil online orders, and that serves this market?
  4. Recent changes. Market and catalog changes take time to settle. In our case the same product became sellable in France a few minutes later, with nobody touching anything. Test again before you change anything.

Why it is worth watching

A product that silently stops being sellable in one country raises no alert: no admin banner, no email, no failed order. ShipRateGuard checks each country every 6 hours and emails you when a country stops being able to buy.


Related

Observed on a Shopify development store on 1 October 2026 through the Storefront API. The checklist above is a set of places to look, not a list of observed causes.