Comment facturer la livraison selon le code postal sur PrestaShop
Créer des zones par code postal, plages et préfixes, refuser une zone, garder le retrait en magasin et sauvegarder la configuration : le parcours complet dans le back-office PrestaShop.
PrestaShop ne propose que des frais par zone et par pays. Un client de Paris, un client de Corse et un client d'un village isolé peuvent donc payer le même prix, ou se voir proposer un transporteur que vous ne voulez pas leur vendre. Le module Frais de livraison par code postal ajoute des règles au-dessus de vos transporteurs : chaque code, plage ou préfixe reçoit son tarif, son refus ou son montant minimum. Voici comment le régler, ce qu'il change au paiement et ce qu'il ne fait pas.
Qui a besoin de frais de livraison par code postal, et qui peut s'en passer ?
Le module sert dès que le prix du transport dépend d'un endroit précis à l'intérieur d'un même pays, et devient inutile quand un tarif national suffit.
Trois situations le justifient clairement.
- Vous expédiez vers des îles ou des zones isolées, et le transporteur y applique un supplément.
- Vous voulez un coursier local à partir d'un montant de panier, ou la gratuité autour de votre entrepôt.
- Vous facturez un pourcentage du panier pour les commandes volumineuses, au lieu d'un tarif fixe.
À l'inverse, une boutique qui applique un prix unique pour tout le pays, ou dont les tarifs viennent déjà d'une API transporteur, n'a rien à y gagner. Le module ne crée aucun transporteur : il tarife ceux que vous cochez. Les transporteurs gratuits, le retrait en magasin et les transporteurs d'autres modules gardent leurs prix.
Il fonctionne sur PrestaShop 1.7.8, 8.0+ et 9.0+, avec PHP 7.4 minimum. PrestaShop 1.7.7 n'est pas pris en charge.
Comment définir des frais de livraison différents selon le code postal ?
Cochez les transporteurs gérés, créez une zone par code, plage ou préfixe, puis saisissez un tarif par transporteur et par tranche.
Cinq étapes dans le back-office :
- Installez le module et activez la licence. Le menu Livraison > Livraison par code postal ouvre la liste des zones ; le bouton Réglages mène à la configuration.
- Dans Transporteurs gérés, cochez les transporteurs dont le prix dépend du code postal. Le module enregistre leurs réglages d'origine et les restaure si vous les décochez. Précisez si vos prix sont saisis hors taxes ou toutes taxes comprises.
- Cliquez sur Ajouter une zone. Renseignez le Nom, multilingue et utilisé aussi pour reconnaître la zone dans les fichiers CSV, puis Active, Refuser la livraison et un Message au client facultatif.
- Dans Codes postaux, choisissez le pays et saisissez les codes séparés par des virgules ou des retours à la ligne : un code (75011), une plage (75001-75020) ou un préfixe (75*, SW1*). Cliquez sur Vérifier pour voir ce qui sera ajouté, puis sur Ajouter.
- Dans Transporteurs et tarifs, ouvrez le bloc Tous les transporteurs gérés ou celui d'un transporteur. Ajouter un tarif demande la base (Poids ou Montant du panier) et la tranche : De inclus, À (exclu), vide pour sans limite. Le prix peut être fixe ou en pourcentage. Le calcul choisit Remplace le prix PrestaShop ou S'ajoute au prix PrestaShop.
Une adresse ne reçoit qu'une zone. Le code exact l'emporte sur le préfixe, le préfixe sur la plage, et à type égal la zone la mieux placée dans la liste. L'ordre se règle par glisser-déposer ; la colonne Contrôles signale les zones sans code, sans tarif, les tranches non couvertes et les codes pris par une zone prioritaire.

Exemple concret : une boutique parisienne crée la zone Paris avec la plage 75001-75020 pour son coursier, la zone France métropolitaine avec la plage 01000-95999 pour Express 24h, puis la zone Corse avec le préfixe 20*. Le coursier local couvre le centre, l'Express couvre le reste, et la Corse sera refusée à l'étape suivante.
Le bloc Tester un code postal rejoue une commande avec un pays, un code postal, un poids et un montant de panier TTC après réductions, et explique l'absence éventuelle d'un transporteur.

Comment refuser la livraison dans certaines zones ?
Activez Refuser la livraison sur la zone : les transporteurs gérés disparaissent du paiement pour ces codes, et le retrait en magasin reste proposé.
Le refus ne touche que les transporteurs gérés. Un transporteur d'un autre module ou un transporteur gratuit continue d'apparaître. Le message de la zone, ou à défaut le message général de la configuration, s'affiche à l'étape Livraison et dans le vérificateur ; il se traduit dans chaque langue de la boutique.
Vous pouvez aussi refuser plus finement, sans bloquer toute la zone. Dans le bloc d'un transporteur, cochez Refuser ce transporteur dans cette zone ou fixez un Montant minimum de commande, par exemple pour un coursier disponible à partir d'un panier donné.
Le réglage Code postal hors de toute zone décide du sort des codes qui ne tombent dans aucune zone : prix PrestaShop ou refus. Le refus ne s'applique que dans les pays où au moins une zone existe.

Que se passe-t-il quand la livraison gratuite PrestaShop s'applique ?
Les transporteurs gérés acceptés coûtent zéro, le vérificateur affiche « Gratuite » et le testeur « Gratuit » ; une zone ou un transporteur refusé reste refusé.
Le seuil se règle dans PrestaShop, dans Livraison > Préférences, par montant ou par poids. Le module lit ce seuil pour la devise et la boutique concernées. Les règles panier continuent de s'appliquer.
La version 2.0.1 corrige un défaut de la 2.0.0 : une zone où la livraison était refusée redevenait livrable et gratuite dès que la gratuité PrestaShop s'appliquait. Désormais, le refus est examiné avant la gratuité et le transporteur géré n'est plus proposé. Le retrait en magasin, lui, n'est jamais touché.
Le vérificateur de la fiche produit et l'estimation du panier suivent le même calcul. Ils s'activent séparément dans la configuration, avec Afficher le vérificateur sur les fiches produit et Afficher l'estimation dans le panier. L'estimation affiche un prix TTC et rappelle que le prix définitif est donné au paiement.
Si la gratuité vient d'une promotion et non du seuil PrestaShop, un module de promotions et de règles panier la porte au paiement, et le module de livraison continue d'appliquer ses refus.

Comment sauvegarder et transférer sa configuration de livraison ?
Exportez la boutique en CSV avant toute modification, puis réimportez le fichier avec Remplacer toutes les zones de cette boutique pour retrouver la configuration à l'identique.
Le bloc Import / export propose Exporter en CSV, un fichier d'exemple et un aperçu avant import. Le séparateur peut être un point-virgule, une virgule ou une tabulation ; l'encodage UTF-8 ou Windows-1252 ; les nombres acceptent la virgule ou le point. Les fichiers des versions 1.0.0 et 2.0.0 restent lisibles.
Chaque ligne a un type : zone, postcode, rate ou carrier. L'aperçu compte les zones et les tarifs et signale chaque ligne en erreur avec son numéro. Trois modes suivent : Fusionner, Remplacer les zones présentes dans le fichier et Remplacer toutes les zones de cette boutique. Avant chaque import, une sauvegarde automatique est enregistrée et reste téléchargeable dans Sauvegardes automatiques.
La version 2.0.1 complète l'export : chaque zone part avec son identifiant, son nom et son message dans chaque langue. Remplacer toutes les zones recrée donc les zones à l'identique. Deux zones qui portent le même nom ne sont plus fusionnées, la copie d'une zone reçoit un nom unique comme « Paris (copie 2) » et l'aperçu signale un nom ambigu. Un export qui contient les tarifs d'un transporteur supprimé s'importe avec un avertissement, sans perdre les lignes.
Sur PrestaShop 1.7.8 et 8, l'export, le fichier d'exemple et les sauvegardes ne sont téléchargeables que par les employés autorisés à consulter la page des zones.
C'est le moyen le plus sûr de retrouver votre configuration d'expédition, de revenir en arrière après un import partiel ou de garder une référence avant une refonte des tarifs.
Ce que le module ne fait pas
Le module ne crée aucun transporteur, ne modifie aucun fichier du cœur et ne remplace pas vos tarifs par une API de prix en temps réel.
- Il ne crée pas de transporteur : celui que vous cochez doit déjà exister, être activé pour la zone PrestaShop du pays de livraison et posséder au moins une tranche de prix. Le testeur signale ce qui manque.
- Il ne gère pas les transporteurs gratuits, le retrait en magasin ni les transporteurs d'autres modules.
- Il n'accepte pas d'expressions régulières : les préfixes avec lettres couvrent par exemple les codes britanniques comme SW1* à Londres.
- Il ne calcule ni poids volumétrique, ni conditions par groupe de clients, catégorie ou quantité, et ne fournit pas de tableau de bord d'analyse.
- Il ne remplace ni la TVA ni les règles fiscales ; pour la TVA européenne, un module dédié reste nécessaire.
La licence mérite un mot. Sans licence active, les frais de port continuent d'être appliqués au paiement et seule la modification de la configuration est verrouillée. Si le serveur de licence est injoignable, la licence reste active sept jours à compter du premier échec ; une révocation, une suspension ou une expiration réelle s'appliquent toujours.
Le module n'annonce aucun résultat commercial : il applique les règles que vous saisissez, et PrestaShop garde la taxe, la devise et l'arrondi. La fiche du module et sa documentation détaillent chaque écran. Pour le paiement, un checkout en une page affiche les étapes sur un seul écran.
Questions fréquentes
Comment définir des frais différents selon le code postal ?
Peut-on refuser la livraison dans certaines zones ?
Que se passe-t-il si la livraison gratuite PrestaShop s'applique à une zone refusée ?
Comment sauvegarder et réimporter la configuration ?
Comment empêcher l'expédition vers des zones isolées ou des îles ?
Produits de cet article
Frais de livraison par code postal — Tarification basée sur le code postal
Des frais de port par code postal : zones illimitées, codes exacts, plages et préfixes Tarifs par transporteur...
Promos intelligentes: 3x2, paliers & packs
Promotions avancées : 3x2, paliers, packs, cross-selling Application automatique au panier, sans code promo...
Messages conditionnels produits + CTA
Messages personnalisés sur vos fiches produits selon des conditions : stock, prix, promotion, marque, client ou...
Express Checkout : commande en 1 page
Toute la commande sur une seule page : coordonnées, adresse, livraison et paiement Un seul formulaire pour un...