Shopify shipping rates missing at checkout: a practical diagnostic checklist
A practical diagnostic sequence for Shopify checkouts with missing, incorrect, or unexpectedly combined shipping rates.
Discuss your Shopify implementation
Start with one reproducible checkout
A customer reaches checkout and sees “Shipping not available.” Another customer can order the same product without a problem. A third sees a shipping price that is twice what the team expected. These symptoms look similar in a support ticket, but they can come from different parts of Shopify’s shipping configuration.
Do not begin by changing several rates at once. First, create one test case that reproduces the problem and record:
- the exact products and variant quantities in the cart;
- the customer’s country, region, postal code, and address type;
- the market and currency shown in the storefront;
- the expected fulfillment location;
- the rate you expected and the result that appeared;
- the time of the test and any recent app or shipping-setting change.
Then simplify the cart. Test one affected physical variant with a quantity of one. Add other products back one at a time. This separates a destination problem from a product, profile, inventory, or multi-location problem.
Use a real checkout or Shopify’s rate-testing tools, not only a rate table copied into a document. Shopify evaluates the actual cart, market, shipping origin, inventory, package, address, and eligible services together. The rest of this checklist follows that path in a useful diagnostic order.
Identify which shipping interface your store uses
Shopify is gradually moving stores from shipping profiles and zones to shipping options managed by market. Shopify says existing settings are migrated when a store is upgraded and that most merchants do not need to initiate that migration. However, the admin path you need to inspect depends on which interface your store currently has.
For a store that still uses shipping profiles, open Settings > Shipping and delivery. For each relevant profile, trace this chain:
Product → shipping profile → origin location or location group → shipping zone → eligible rate
For a store with shipping options by market, open Markets, select the customer’s market, and inspect Shipping. Trace:
Customer destination → active market → shipping option → product or collection scope → ships-from locations → eligible rate
Take screenshots or export a small configuration note before editing. The labels may differ between the two systems, but the diagnostic questions are the same: Is the destination active? Is the product included? Can an eligible location fulfill it? Does at least one rate cover that combination?
Avoid following an old tutorial blindly. If it tells you to edit a General shipping profile but your store manages shipping inside each market, translate the instruction into the equivalent market-based setting.
Check markets, products, inventory, and locations
Start with eligibility before investigating prices. Shopify only offers shipping to a country that belongs to an active market. Confirm that the test country is present and that shipping is configured for it. A country listed elsewhere in the admin does not by itself make checkout available.
Next, inspect every variant in the test cart:
- It must be marked as a physical product that requires shipping.
- It must belong to the intended shipping profile or to the collections covered by the market shipping option.
- Its inventory must be available at a location allowed to fulfill online orders, unless the store intentionally sells past zero.
- Its weight must be correct when a manual or calculated rate depends on weight.
Then inspect the expected fulfillment location. Shopify’s shipping-rate troubleshooting guide says the location must be active, have a valid address, and be enabled to fulfill online orders. An app location without a physical address cannot supply the origin needed for carrier-calculated rates.
Dropshipping and fulfillment apps deserve an extra check. Products can have inventory at an app location while that location sits under “Not shipping from this location.” Add suitable rates for the app location or deliberately use rates from another location after verifying that the economics are correct.
Verify that a rate covers the whole test case
For a manual rate, check its destination and every condition. Price-based tiers use the cart value after discounts and before tax. Weight-based tiers use the product weight plus the relevant default package weight. A small gap between ranges can leave a valid cart with no rate. Set the lowest minimum and highest maximum so every intended order is covered; Shopify recommends leaving the maximum empty on the highest tier.
For carrier- or app-calculated rates, verify:
- the origin and destination are valid addresses accepted by the provider;
- product and package weights and dimensions are realistic;
- the default package is supported by the selected service;
- the carrier account or app connection is active;
- the relevant carrier services are selected for this zone or market;
- third-party carrier-calculated shipping is available on the store’s plan.
Shopify currently lists third-party carrier-calculated shipping for Advanced and Plus. Grow stores can add it for a fee or through annual billing. Confirm the current plan entitlement in the admin before treating the app as faulty.
There is also a current integration change to check after a new shipping app is installed or reconnected. Starting with Admin API version 2026-10, creating a carrier service registers it but no longer adds it automatically to the General shipping profile. Shopify’s June 2026 changelog says the rate must be added explicitly through the admin or shipping-profile APIs. An app can therefore appear connected while its rates are not yet eligible at checkout.
Explain rates that appear but look wrong
An unexpectedly high rate is often a combination rather than a carrier error. When a cart contains products from different shipping profiles or fulfillment locations, Shopify may add their rates and show one total. Carrier-calculated, app, and weight-based rates can combine across shipments. Flat rates within the same location group can behave differently.
Use the one-product test to find the boundary. If each product has the expected rate alone but the mixed cart costs more, map each item to its profile, origin, and location group. Check whether inventory routing forces Shopify to split the order. Also compare rate names: Shopify documents that matching names across profiles can preserve options such as “Standard” and “Express,” while differently named rates may be combined and displayed under the generic label “Shipping.”
Do not “fix” a combined rate by lowering unrelated prices until the fulfillment plan is clear. Decide whether the order really ships in multiple parcels and whether the business wants to charge for each. A configuration that hides the true cost may improve one test checkout but create a margin problem on real orders.
If a calculated price is consistently wrong, save the provider request context: origin, destination, item weights, package dimensions, selected service, currency, and quoted amount. This gives the app or carrier enough information to reproduce the quote without collecting unnecessary customer data.
Add a safe fallback and a regression test
Shopify provides backup shipping rates when all eligible app or carrier rates for a shipment fail and no other eligible rate is available. Shopify also notes that an eligible flat rate remains visible even when calculated rates work, so it can be selected by customers. Choose the fallback deliberately: it should keep checkout available without creating a systematically underpriced shipping option.
Before a campaign, market launch, warehouse change, or shipping-app update, test a small matrix:
- one ordinary product and one special-profile product;
- the lowest and highest valid order values;
- weights immediately below and above each boundary;
- one address per important country or region;
- one in-stock and one split-location cart;
- one carrier-success case and, where safely testable, one provider-failure case;
- mobile and desktop checkout for the customer-facing result.
Keep a short record of expected rates and assign an owner for changes. After editing markets, profiles, locations, packages, or app settings, repeat the same test carts. A successful checkout is not enough if the shipping amount is wrong or the order routes to a warehouse that cannot fulfill it.
When the configuration looks correct but an app still returns no rate, send the provider one reproducible case and the timestamp. If the problem crosses Shopify, an app, a carrier, and several locations, Stormdev can trace the eligibility path, compare one real rate request with the store configuration, and implement the smallest reliable correction.