# Misconfigured carriers and shipping costs on PrestaShop

> A carrier that disappears at checkout, a shipping cost that doesn't match the cart weight, a delivery zone with a gap: PrestaShop's carrier configuration is more detailed than it looks, and a single misconfigured rule is enough to block a sale.

- Source canonique : [https://allaux.fr/en/prestashop/transporteurs-livraison](https://allaux.fr/en/prestashop/transporteurs-livraison)
- Langue : EN
- Dernière mise à jour : 2026-09-30

## Direct answer

> Open Shipping > Carriers, edit the carrier concerned and check its ranges: the delivery address’s zone must be ticked and the cart weight must fall inside a defined range. Outside those bounds PrestaShop drops the option with no message at all. Also look at Shipping > Preferences for how out-of-range carts are handled.

## How PrestaShop calculates shipping costs

Each carrier created in ps_carrier is tied to price brackets defined by weight or price, themselves attached to a geographic zone. If a customer's delivery address falls in a zone not covered by the carrier, or if the cart weight exceeds the last defined bracket, PrestaShop silently removes that carrier from the checkout options, with no explicit error for the customer.

External carrier modules (Mondial Relay, Colissimo, Chronopost, among others) add another layer: they sometimes calculate their own rate via an API call to the carrier, and an authentication error or a temporarily unavailable service on the carrier's side can make the option disappear without anything looking broken on PrestaShop's side.

The actionCarrierUpdate hook fires when a carrier is edited, and some modules use it to automatically recalculate rate grids: disabling or updating a module can therefore change a displayed rate without any manual action on your part.

## Cases I handle

- No carrier offered for certain delivery addresses
- Shipping cost at zero or inconsistent for a heavy cart
- Pickup point not found, or the selection map won't load
- A carrier disappearing only for certain countries or postcodes
- Fixed delivery rates that no longer track the real carrier's grids

## How I check

1. **Reproducing the exact case** — I simulate an order with the exact weight, country and postcode reported by the blocked customer, to reproduce the behaviour rather than guess.
2. **Checking zones and brackets** — I check that the relevant geographic zone is actually covered and that the weight or price brackets go up to the amount actually needed.
3. **Checking carrier modules** — I test external carrier modules' API calls to rule out an authentication issue or an unavailable service.
4. **Adjusting the rules** — I fix the relevant brackets, zones or restrictions and re-test with the same scenario to confirm the carrier is available again.

## What I can also set up

- **Custom rate grids** — Shipping cost rules combining weight, cart value and zone, aligned with your actual carrier contracts.
- **Pickup point delivery** — Integrating or fixing pickup point selection modules, with checks on the map and point availability.
- **Free shipping rules** — Setting free-delivery thresholds consistent with your margin, without breaking the other carriers on offer.

## FAQ

### Why does the carrier disappear without an error message?

That's PrestaShop's native behaviour: when no rate rule matches the cart or zone, the carrier is simply removed from the list instead of showing an error, which makes the problem hard to spot without a close look.

### Will I lose my current rates during the fix?

No, I work on the existing settings and don't remove anything without checking the impact first. Rates that work correctly aren't touched.

### What access do I need to give you?

Back office access is usually enough. FTP access or the external carrier's API credentials may be needed depending on the problem.

### How long does fixing a carrier issue take?

A zone or price bracket issue is the kind of block that gets sorted the same day once the exact scenario is identified and back-office access is available. An external carrier API issue, by contrast, depends on the carrier's own response times.
