How to set shipping costs by postal code in PrestaShop
Create zones by postal code, range and prefix, refuse an area, keep store pickup and back up the configuration: the full path through the PrestaShop back office.
Zones by postal code, prefix or range, rates per carrier and a delivery checker for your customers.
Exact codes, ranges and prefixes such as 75* or SW1*, with dashes, spaces or letters.
Weight or amount brackets, fixed or percentage price, replacement or surcharge.
Preview before import, merge or replace, automatic backup, and an export that restores each zone's identifier, name and message in every language.
Adjustable priority between zones and coverage checks right in the list.
Choose the carriers the module prices; store pickup keeps its own price.
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.
When PrestaShop free shipping applies, accepted carriers drop to 0 and the checker shows "Free"; refused zones and carriers stay refused.
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.
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.
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.
For each zone, configure shipping fees per carrier, or one grid shared by all managed carriers:
Enter your prices tax excluded or tax included, as you prefer: PrestaShop applies the carrier tax, the customer's currency and the shop rounding.
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.
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.
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.
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.
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.
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.
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.


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


id_reference) instead of id_carrier, so your configuration survives carrier updatesCompatible 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
See how we compare to the most common alternatives on the market.
| Feature | WePresta | Addons |
|---|---|---|
| payments Transparent pricing | check_circle | cancel |
| update Lifetime updates included | check_circle | cancel |
| support_agent Direct developer support | check_circle | cancel |
| verified PS 1.7, 8 & 9 compatible | check_circle | help_outline |
| code Standardized clean code | check_circle | cancel |
| storefront Multi-store ready | check_circle | help_outline |
| money_off No hidden renewal fees | check_circle | cancel |
Find answers to frequently asked questions about this module
Join +39 merchants using this module
5-minute installation · Full documentation included
check_circle
check_circle