# Shipping costs aren’t applying on WooCommerce

> The most common symptom isn’t a wrong shipping cost, it’s no shipping cost at all: the customer reaches the shipping step and sees no method offered. WooCommerce organises shipping into zones, each tied to countries or postcodes with its own methods; if the customer’s address doesn’t match any zone, WooCommerce shows nothing rather than a default rate.

- Source canonique : [https://allaux.fr/en/wordpress-woocommerce/problemes/frais-de-port-ne-s-appliquent-pas](https://allaux.fr/en/wordpress-woocommerce/problemes/frais-de-port-ne-s-appliquent-pas)
- Langue : EN
- Dernière mise à jour : 2026-09-30

## Direct answer

> Open WooCommerce > Settings > Shipping and check that a shipping zone really covers the buyer’s country: an address that falls into no zone is offered no method at all, so checkout shows nothing rather than a rate. Add a catch-all zone with a flat rate if needed, then retest using the customer’s exact address.

## How I go about it

1. **Checking the shipping zones** — I reproduce the journey with the customer’s exact address under WooCommerce > Settings > Shipping > Shipping zones. If no zone covers that country or postcode, that’s the most common cause of no shipping cost at all.
2. **Checking free shipping conditions** — I check the trigger conditions on the "Free shipping" method: minimum order amount, required coupon, or a combination with another method. These are often set differently from other methods in the same zone, creating inconsistent cases.
3. **Checking shipping classes** — A shipping-class rate only applies if every product in the cart actually has a class assigned. An unassigned product silently falls back to the zone’s base cost, throwing off the total with no visible error.
4. **Testing the live recalculation** — The shipping total recalculates over AJAX every time the cart or address changes. I check the browser console for a JavaScript conflict, often from the theme or another plugin, blocking that recalculation.
5. **Telling configuration from integration** — If the need goes beyond a fixed rate table, real-time carrier pricing for example, I work out whether it needs a dedicated API integration rather than another zone setting.

## What I handle regularly

- No shipping method shows up at the cart or checkout step
- Free shipping applies when it shouldn’t, or the reverse
- The shipping rate stays stuck at an amount that doesn’t match anything after an address change
- Some products add no shipping cost when they should
- The shipping total doesn’t update when the customer changes their cart

## How WooCommerce decides on a shipping rate

WooCommerce has no default shipping rate: each zone (WooCommerce > Settings > Shipping > Shipping zones) defines the countries, regions or postcodes it covers, and offers its own methods (flat rate, free shipping, local pickup…). If the customer’s address doesn’t match any configured zone, WooCommerce simply shows nothing at checkout, which explains most cases where a customer sees no shipping method.

The "Free shipping" method has its own trigger conditions: minimum amount, coupon, or a combination of several. They’re set independently from other methods in the same zone, which easily creates inconsistencies if one changes without the others following.

Shipping-class rates, meanwhile, depend on an assignment made product by product. An item left without a class doesn’t trigger any class-related surcharge and silently falls back to the zone’s base rate.

## What’s a setting, what needs development

> Adding or fixing a zone, a free-shipping condition, or a shipping class is a setting, doable without writing code. Making a rate depend on real-time carrier data, through an external API, is integration development.

## Worth reading too

- **VAT miscalculated on WooCommerce** — Another checkout calculation often disturbed by the same address settings. ([/wordpress-woocommerce/problemes/tva-mal-calculee](/wordpress-woocommerce/problemes/tva-mal-calculee))
- **API integrations** — For a shipping rate connected in real time to a carrier or an ERP. ([/services/integrations-api](/services/integrations-api))
- **Custom WooCommerce extension** — When the shipping logic goes beyond what native zones can do. ([/wordpress-woocommerce/extension-sur-mesure](/wordpress-woocommerce/extension-sur-mesure))

## FAQ

### Why does no shipping cost show up for some customers only?

Because their address doesn’t match any configured shipping zone. WooCommerce shows nothing rather than a default rate: a zone needs adding or expanding to cover that address.

### Free shipping never triggers, even above the minimum amount, why?

Check whether the method is also set to "requires a coupon" on top of the minimum amount: these two conditions can be combined without it being obvious at first glance.

### Can I manage shipping zones and classes myself?

Yes, these are settings available under WooCommerce > Settings > Shipping, no development skill needed, as long as the need stays a fixed rate table.

### Can I show a real carrier rate calculated in real time?

Yes, but that needs a connection to the relevant carrier’s API, which sits outside WooCommerce’s native zones and is an integration development job.
