Shipping Cost by Zip Code — Postal Code Based Shipping Fees - Module PrestaShop

PrestaShop Zip Code Shipping Module: Automate Your Custom Shipping Rates and Protect Your Margins

+39 downloads ★ ★ ★ ★ ★ 4.89 / 5 Version 2.0.0 1.7.8 8.2+ 9.1+ 5 languages 🇫🇷 FR 🇬🇧 EN 🇮🇹 IT 🇪🇸 ES 🇵🇱 PL

Apply different shipping fees based on postal codes of your customers. This PrestaShop shipping module lets you create unlimited delivery zones by zip code and configure shipping rates per carrier for each zone.

Calculate shipping costs by weight or cart amount, as a fixed price, a percentage or a surcharge on the carrier price, offer free shipping per zone or above a threshold, and refuse delivery to areas you do not serve with a clear message. Supports exact codes, ranges and prefixes, CSV import/export with preview and multilang.

Your customers check delivery to their postal code on the product page and in the cart; at checkout, PrestaShop applies tax and currency. Compatible with PrestaShop 1.7.8, 8.2+ and 9.1+.

Not sure yet? Try it free for 24 hours — no credit card required.
Features

Everything you need, nothing you don't.

Zones by postal code, prefix or range, rates per carrier and a delivery checker for your customers.

Zones by postal code

Exact codes, ranges and prefixes such as 75* or SW1*, with dashes, spaces or letters.

Rates by weight and amount

Weight or amount brackets, fixed or percentage price, replacement or surcharge.

CSV import/export

Preview before import, merge or replace, and an automatic backup of the configuration.

Unlimited number of zones

Adjustable priority between zones and coverage checks right in the list.

Carriers of your choice

Choose the carriers the module prices; store pickup keeps its own price.

Fair rates for every customer

Checker on product pages and in the cart, with a clear message when a zone is not delivered.

Customer reviews

They use it every day.

5 out of 5 · 4.89 reviews

"Exactement ce qu'il me fallait. Le module fonctionne parfaitement depuis le premier jour."

AB Antoine B.

"Ottimo modulo, facile da installare. Il supporto ha risposto in meno di un'ora."

MV Marco V.

"Works flawlessly on PrestaShop 9. Clean code and great documentation."

SL Sarah L.

"Muy buen modulo, cumple con lo prometido. Me gustaria ver mas opciones de personalizacion."

PG Pablo G.

"Bardzo przydatny modul. Oszczedza mi duzo czasu kazdego dnia."

KW Katarzyna W.

"Brilliant plugin. Set it up in under 15 minutes and it just works."

TH Thomas H.
description Full description expand_more

Shipping Cost by Zip Code — Advanced Postal Code Based Shipping Fees for PrestaShop

Managing shipping costs accurately is one of the biggest challenges for online merchants. By default, PrestaShop only allows you to set shipping fees by zone and country, which is often too broad. A delivery to a remote mountain village should not cost the same as a delivery to a major city center — even within the same country.

The Shipping Cost by Zip Code module solves this problem by giving you full control over your shipping rates based on postal codes. Create custom delivery zones by zip code, assign specific shipping fees per carrier, and let the module calculate the right amount at checkout.

How Does It Work?

First, you choose the managed carriers, for example your express carrier and your local courier. Then you create postal shipping zones: each zone groups zip codes, postal code ranges or prefixes, with its own shipping rates per carrier.

When a customer enters their delivery address, the module finds the zone of their postal code and calculates the shipping cost of each managed carrier. PrestaShop then adds the carrier tax, converts the currency and rounds the price as it does for its own rates. Store pickup, free carriers and carriers of other modules keep their usual prices.

Key Features

Unlimited Delivery Zones by Postal Code

Create as many shipping zones as you need. Split a country into regions, counties, cities or any custom area. Each zone is defined by exact postal codes, numeric ranges (e.g. 75001 to 75020 for Paris, 97100 to 97490 for French overseas territories) or prefixes (e.g. SW1* in London, 20* for Corsica). Codes with dashes, spaces or letters are recognized, such as 00-950 in Poland. Enter several codes at once and check for duplicates before adding them.

Flexible Shipping Rate Configuration

For each zone, configure shipping fees per carrier, or one grid shared by all managed carriers:

  • Weight-based calculation — set rates based on the package weight (e.g. 0–5 kg = €5.90, 5–10 kg = €8.50)
  • Cart amount calculation — set rates based on the order total (e.g. €0–50 = €6.00, €50–100 = €3.00)
  • Percentage-based fees — charge a percentage of the cart total instead of a flat rate (e.g. 3% of the order amount)
  • Surcharge on the carrier price — add an amount or a percentage to the PrestaShop rate (e.g. +€8 for islands)
  • Unlimited brackets — create as many brackets as you need; the last one can stay open-ended
  • Grid copy — copy a carrier's rates to other zones or other carriers, with a price change

Enter your prices tax excluded or tax included, as you prefer: PrestaShop applies the carrier tax, the customer's currency and the shop rounding.

Free Shipping Options

Offer free shipping for specific zones, specific carriers, or automatically when the cart amount exceeds a set threshold. The delivery checker shows this threshold to the customer. PrestaShop global free shipping and your cart rules keep applying.

Disable Delivery for Specific Areas

Need to block delivery to certain postal codes? Enable "Refuse delivery" on a zone: the carriers managed by the module no longer appear at checkout for customers in that zone, and store pickup is still offered. You can also refuse a single carrier in a zone or set a minimum order amount for it, for example a courier available from €30. A translated message explains the situation to the customer. Ideal for restricted delivery areas, remote locations or regions you do not ship to.

Zone Priority System

If a postal code belongs to several zones (e.g. a general "Mainland France" zone and a more specific "Paris" zone), the module uses a priority system. An exact code wins over a prefix, and a prefix over a range; between two rules of the same type, the zone placed higher in the list wins. The list flags codes handled by another zone, uncovered brackets and zones without rates.

CSV Import & Export

Managing hundreds of postal codes? Use the CSV import to create zones, postal codes and shipping rates in bulk. A sample CSV file is provided. Before importing, a preview counts zones and rates and flags every line in error; you then choose to merge or replace, and an automatic backup of the configuration is saved. You can also export your entire configuration to keep it or reuse it on another shop.

Postal Code Tester

Enter a country, a postal code, a weight and a cart amount: the tester shows the zone found, the rule that selected it and the price tax excluded and included of each managed carrier. It also explains why a carrier is missing at checkout, for example a PrestaShop zone that is not enabled for that carrier.

Multilingual and Multistore

Zone names and customer messages can be translated into each shop language, and the module interface is available in English, French, Spanish, Italian and Polish. In multistore, zones, postal codes and rates are saved for the shop selected at the top of the back office.

Seamless Checkout Experience

At checkout, your customers simply see the carriers available for their address, with the right price. Even before ordering, a delivery checker on the product page and an estimate in the cart show them the carriers and prices for their postal code, the free shipping threshold and, when needed, the zone message. The checker loads after the page is displayed; you enable it separately on product pages and in the cart.

Product page: the customer enters postal code 75011 and sees the Express 24h carrier at €5.88 tax incl., free from €100
Delivery checker on the product page
Shipping step: message saying Corsica is not delivered yet, with store pickup still offered
Message shown when a zone is not delivered

Easy Back-Office Management

The module integrates into your PrestaShop back office under the Shipping menu, with a dedicated "Shipping by postal code" tab:

  • Zone list — see your zones with their number of postal codes and rates, delivery allowed or refused, coverage checks and a priority you set by drag and drop
  • Zone editor — one page for the zone settings, its postal codes and the rates of each carrier, editable in place
  • Tester and CSV import/export — check a postal code and import your files with a detailed preview
  • Configuration — managed carriers, prices tax excluded or included, behavior outside zones, customer message, checker and data retention
Back office: the tester finds the Paris zone for 75011 and shows the price tax excluded and included, next to the CSV import and the zone list
Postal code tester and zone list
Zone editor: adding a code, a prefix and a range with a check, then weight rates for each carrier
Postal codes and rates of a zone

Technical Details

  • Module type: CarrierModule — the module prices the carriers you choose through PrestaShop's official mechanism, which then applies tax, currency and rounding
  • No core overrides — the module does not modify any native PrestaShop file; the original carrier settings are restored when you remove them
  • Lightweight — one zone lookup per address, reused while the page loads
  • Carrier safety — uses the carrier reference (id_reference) instead of id_carrier, so your configuration survives carrier updates
  • Postal codes in every format — digits, dashes, spaces and letters; numeric ranges, and prefixes for alphanumeric codes
  • Fallback behavior — configurable: when no zone matches, use standard PrestaShop fees or refuse delivery in the countries covered by your zones
  • Data kept — zones and rates are kept when you uninstall the module, unless you ask for their deletion
  • License — if the license expires, your shipping fees keep being applied at checkout; only configuration changes are locked

Common Use Cases

  • Different shipping fees for overseas territories — charge higher rates for DOM-TOM (97xxx) while keeping mainland France affordable
  • Free delivery in your local area — offer free shipping for postal codes near your warehouse
  • Block delivery to remote areas — refuse shipping to mountain regions or islands where carriers charge premium rates, while keeping store pickup
  • Tiered pricing by region — charge less for nearby cities and more for distant regions, all within the same country
  • Percentage-based shipping for high-value orders — charge 2% of cart total instead of flat rates for premium zones
  • Local courier with a minimum order — offer a city-center courier from a cart amount you choose

Compatibility

Compatible with PrestaShop 1.7.8, 8.2+ and 9.1+, with PHP 7.4 or later. PrestaShop 1.7.7, 8.0, 8.1 and 9.0 are not supported. A managed carrier must be enabled for the PrestaShop zone of the delivery country and have at least one price range for that zone; the tester flags what is missing.

Support is provided from your WePresta customer area or by email at mail@wepresta.shop, according to the support option of your plan. Read the full documentation

Comparaison

Why choose us?

See how we compare to the most common alternatives on the market.

Feature Addons
Transparent pricing
Lifetime updates included
Direct developer support
PS 1.7, 8 & 9 compatible
Standardized clean code
Multi-store ready
No hidden renewal fees
Included Not included Partial / Not guaranteed
Preview

Discover the module in images.

Shipping fees by postal code

Shipping fees by postal code

Delivery checker on the product page

Delivery checker on the product page

Message shown when a zone is not delivered

Message shown when a zone is not delivered

Postal code tester and zone list

Postal code tester and zone list

Postal codes and rates of a zone

Postal codes and rates of a zone

Support

FAQ

Find answers to frequently asked questions about this module

It calculates shipping fees from the customer's postal code, whereas PrestaShop works by country and geographic zone. You group postal codes into zones (city center, mountain area, islands, overseas territories…), then give each zone its own rates per carrier. At checkout, the module finds the zone of the delivery address and PrestaShop shows the matching price, tax included. Your customers see fees consistent with their address, and you handle exceptions (islands, remote areas, local delivery) without workarounds.

An address belongs to a single zone. An exact postal code wins over a prefix, and a prefix over a range. Between two rules of the same type, the zone placed higher in the list wins; you set the order by drag and drop. You can therefore create a broad "France" zone and a more precise "Paris" zone. The Checks column flags codes handled by a higher-priority zone, and the tester shows the zone found together with the rule that selected it.

Yes. For each zone, add rates for a specific carrier or for all managed carriers. Each rate covers a weight or cart amount bracket, from the lower value (included) to the upper value (excluded); the last bracket can stay open-ended. The price is fixed or a percentage, and it replaces the PrestaShop price or is added to it. Amount brackets use the cart amount tax included after discounts. This lets you reproduce your carriers' actual price grids or your own costs.

Yes. A percentage rate is calculated on the cart amount, or on the carrier's PrestaShop price in surcharge mode (for example +15% for an island). For free shipping, tick "Free shipping" on a bracket or set a "Free from" threshold: the checker then shows the customer the threshold to reach. Native PrestaShop rules, such as global free shipping or cart rules, still apply at checkout.

Tick "Refuse delivery" on the zone: managed carriers are no longer offered to its customers, while store pickup and carriers not managed by the module remain available. You can also refuse a single carrier in a zone or require a minimum order amount. A translated message explains the situation to the customer at the shipping step and in the checker, for example "We do not deliver to Corsica yet: store pickup remains available."

You choose: use the carrier's PrestaShop price or refuse delivery with managed carriers. Refusal only applies to countries in which you created at least one zone; other countries keep PrestaShop prices. A separate setting handles a zone found without a rate for a carrier, for example beyond the last weight bracket: PrestaShop price or hidden carrier. A good practice is to start with PrestaShop prices, then switch to strict mode once your zones are complete.

No, it relies on your existing carriers. In the configuration, tick those whose price depends on the postal code: the module prices them through PrestaShop's official carrier module mechanism, without overrides, and restores their original settings if you remove them or uninstall the module. Free carriers and carriers of other modules are not changed. At checkout, customers see the available carriers with their price, and a message when delivery is refused.

Download the sample file or export your configuration, edit it, then click Preview. The module accepts semicolon, comma or tab separators, UTF-8 or Windows-1252, and a decimal comma or point; exports from version 1.0.0 remain readable. The preview counts zones, codes and rates and flags each line in error with its number. Then choose to merge (zones are recognized by name and existing codes are not duplicated) or to replace. A backup is saved automatically before the import and remains downloadable.

The module works with PrestaShop 1.7.8, 8.2+ and 9.1+, and PHP 7.4 or later; PrestaShop 1.7.7, 8.0, 8.1 and 9.0 are not supported. It contains no overrides and follows carriers by their reference: your rates stay attached to a carrier when PrestaShop creates a new version of it after an edit. Zone names, messages and the interface are available in English, French, Spanish, Italian and Polish. In multistore, zones and rates are saved for the selected shop. The calculation looks up one zone per address and reuses it while the page loads.

Ranges only accept digits: for codes with letters (United Kingdom, Canada, Netherlands), use a prefix such as SW1* or 1011*. PrestaShop only offers a carrier if it is enabled for the PrestaShop zone of the country and has a price range for that zone; the tester flags these missing prerequisites. Start with a few zones, keep PrestaShop prices for uncovered addresses while you complete your coverage, and check your typical cases with the tester before enabling the checker for your customers.

Join +39 merchants using this module

5-minute installation · Full documentation included

inventory_2 Module 10.70 € 4.28 € one-time -60%
Choose your license
3 months of support for 0.99€ · then 1.99€/month
  • • Response within 24 business hours
  • 🔧 Installation & configuration assistance
  • 💬 Direct contact with the developer
No commitment · Cancel in 1 click from your account
Instead of --€/year if purchased separately
Loading...