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.

Comment facturer la livraison selon le code postal sur 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 :

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

Dans l'éditeur de zone, la saisie « 75116, 92*, 93100-93199 » est analysée avec Vérifier avant l'ajout : chaque code reconnu apparaît, avec les règles déjà en place.
Dans l'éditeur de zone, la saisie « 75116, 92*, 93100-93199 » est analysée avec Vérifier avant l'ajout : chaque code reconnu apparaît, avec les règles déjà en place.

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.

Le testeur montre la zone Paris trouvée par la plage 75001-75020, la règle appliquée et le prix HT et TTC du transporteur géré, avec le seuil de gratuité du panier.
Le testeur montre la zone Paris trouvée par la plage 75001-75020, la règle appliquée et le prix HT et TTC du transporteur géré, avec le seuil de gratuité du panier.

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.

À l'étape Livraison, le message de la zone explique le refus et le retrait en magasin reste sélectionnable : le client n'est pas laissé devant une erreur.
À l'étape Livraison, le message de la zone explique le refus et le retrait en magasin reste sélectionnable : le client n'est pas laissé devant une erreur.

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.

Sur la fiche produit, le client saisit son code postal et voit le transporteur, le prix TTC et le seuil de gratuité avant d'ajouter au panier.
Sur la fiche produit, le client saisit son code postal et voit le transporteur, le prix TTC et le seuil de gratuité avant d'ajouter au panier.

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 ?
Cochez d'abord les transporteurs gérés dans la configuration, puis créez une zone par secteur. Dans la zone, ajoutez les codes exacts, les plages ou les préfixes, puis saisissez un tarif par transporteur et par tranche de poids ou de montant. Le module choisit la zone au paiement et PrestaShop applique la taxe, la devise et l'arrondi.
Peut-on refuser la livraison dans certaines zones ?
Oui. Activez « Refuser la livraison » sur la zone : les transporteurs gérés ne sont plus proposés pour ces codes postaux. Le retrait en magasin et les transporteurs d'autres modules restent disponibles. Un message traduit explique le refus au client à l'étape Livraison. Le refus tient même quand la livraison gratuite de PrestaShop s'applique, depuis la version 2.0.1.
Que se passe-t-il si la livraison gratuite PrestaShop s'applique à une zone refusée ?
Depuis la version 2.0.1, le refus l'emporte : le transporteur géré n'est pas proposé, même si le panier atteint le seuil de gratuité par montant ou par poids. Les transporteurs acceptés, eux, passent à zéro. Le vérificateur affiche « Gratuite » et le testeur « Gratuit » lorsqu'un transporteur sera effectivement gratuit au paiement.
Comment sauvegarder et réimporter la configuration ?
Utilisez « Exporter en CSV » dans le bloc Import / export. Le fichier contient les zones, les codes postaux, les tarifs et les règles transporteur. Pour restaurer, choisissez « Remplacer toutes les zones de cette boutique » : les zones sont recréées avec leur identifiant, leur nom et leur message dans chaque langue. Une sauvegarde automatique est aussi enregistrée avant chaque import.
Comment empêcher l'expédition vers des zones isolées ou des îles ?
Créez une zone avec les préfixes ou plages concernés, par exemple 20* pour la Corse (codes 20000 à 20999), puis activez « Refuser la livraison ». Les transporteurs gérés disparaissent du paiement pour ces codes et le retrait en magasin reste proposé. Vous pouvez aussi refuser un seul transporteur ou fixer un montant minimum, sans bloquer toute la zone.

Produits de cet article

Trouvez le module dont votre boutique a besoin

Voir les modules