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.1 1.7.8 8.0+ 9.0+ 5 languages 🇫🇷 FR 🇬🇧 EN 🇮🇹 IT 🇪🇸 ES 🇵🇱 PL
  • Shipping fees by postal code: unlimited zones, exact codes, ranges and prefixes
  • Rates per carrier by weight or cart amount, replacing, as a percentage or a surcharge
  • Free shipping, refused zones and minimum amounts, kept even when PrestaShop free shipping applies
  • Faithful CSV import/export, postal code tester and a delivery checker for your customers
  • Compatible with PrestaShop 1.7.8, 8.0+ and 9.0+
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, automatic backup, and an export that restores each zone's identifier, name and message in every language.

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 and a "Free" label when PrestaShop free shipping applies.

PrestaShop free shipping, refusals kept

When PrestaShop free shipping applies, accepted carriers drop to 0 and the checker shows "Free"; refused zones and carriers stay refused.

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 entered as +5, -2 or 4.90; an invalid value is flagged instead of being ignored

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 and displays "Free" when PrestaShop free shipping will apply at checkout. PrestaShop global free shipping (by amount or weight) and your cart rules keep applying; a refused zone or carrier stays refused.

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. These refusals remain in force even when PrestaShop global free shipping is reached. 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. The export holds each zone's identifier as well as its name and message in every shop language: "Replace all zones" or restoring a backup recreates the zones exactly. Two zones with the same name are no longer merged, duplicating a zone gives it a unique name ("Paris (copy 2)") and the preview reports an ambiguous name. An export containing rates of a deleted carrier imports with a warning, and files of versions 1.0.0 and 2.0.0 remain readable.

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, and displays "Free" when a carrier will be free thanks to PrestaShop free shipping.

Multilingual and Multistore

Zone names and customer messages can be translated into each shop language, and the module interface, license panel included, 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 server is temporarily unreachable, the license stays active for seven days from the first failure; a real revocation, suspension or expiry still applies. Without an active license, your shipping fees keep being applied at checkout; only configuration changes are locked
  • File access — on PrestaShop 1.7.8 and 8, the CSV export, sample file and backups can only be downloaded by employees allowed to view the zones page

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.0+ and 9.0+, with PHP 7.4 or later. PrestaShop 1.7.7 is 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

Product page: postcode 75011 shows the Express 24h price, the free-delivery threshold and the tax note before the cart

Product page: postcode 75011 shows the Express 24h price, the free-delivery threshold and the tax note before the cart

Shipping step: the refusal message for Corsica, with store pickup still offered

Shipping step: the refusal message for Corsica, with store pickup still offered

Back office: the postal-code tester checks a postcode, weight and cart amount, then shows the zone and each carrier's price

Back office: the postal-code tester checks a postcode, weight and cart amount, then shows the zone and each carrier's price

Zone editor: codes, prefix and range checked one by one before being added

Zone editor: codes, prefix and range checked one by one before being added

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. When PrestaShop global free shipping applies, the checker displays "Free" and the tester gives the matching reason; refused zones and carriers stay refused.

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." These refusals also apply when PrestaShop global free shipping is reached: the managed carrier is not offered, even during a free-shipping promotion, and 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 versions 1.0.0 and 2.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 export holds each zone's identifier plus its name and message in every language; "Replace all zones" or restoring a backup recreates the zones exactly, two zones with the same name stay distinct, an ambiguous name is reported, and an export containing rates of a deleted carrier imports with a warning.

The module works with PrestaShop 1.7.8, 8.0+ and 9.0+, and PHP 7.4 or later; PrestaShop 1.7.7 is 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.

When the cart reaches PrestaShop's global free shipping threshold (amount or weight, set in the shipping preferences), the managed carriers that are accepted cost 0 and both the checker and the tester display "Free". Refusals still apply: a zone set to "Refuse delivery", a carrier refused in its zone or an unmet minimum amount are not offered, even during a promotion, and store pickup remains available. The threshold is set in PrestaShop, the refusal decision in the module.

Yes, your rates stay applied. Shipping fees never depend on the license: they keep being calculated at checkout. If the license server answers badly or not at all, the license stays active for seven days from the first failure, then the module retries without blocking the shop; the renewal day does not lock anything. A real revocation, suspension or expiry still applies. Only changes to zones and settings wait for an active license, and the license panel is translated into the five back-office languages.

Join +39 merchants using this module

5-minute installation · Full documentation included

Lifetime license
One-time payment, updates included for life.
Choose your license
No commitment · Cancel in 1 click from your account
Instead of --€/year if purchased separately
Loading...