Les chemins du back-office et les clés de configuration ci-dessous couvrent PrestaShop 1.6, 1.7, 8 et 9 (les libellés varient légèrement selon les versions). Les taux de taxe et les règles d’arrondi dépendent de chaque juridiction et sont révisés régulièrement, confirmez les exigences en vigueur dans le pays depuis lequel vous facturez avec votre comptable, au lieu de considérer les taux mentionnés ici comme définitifs.

La taxe est le réglage PrestaShop où une erreur discrète peut s’accumuler pendant des mois avant que quelqu’un ne la remarque. Un produit associé au mauvais groupe de règles fiscales part sans taxe ; un pays manquant dans un groupe facture 0 % à tous les clients de ce pays ; un mode d’arrondi qui ne correspond pas à celui de votre comptable génère des factures décalées d’un centime, et les contrôleurs le voient très bien. Rien ne déclenche d’erreur. Le panier passe quand même, la commande est confirmée, et l’écart n’apparaît qu’au moment de rapprocher la TVA en fin de trimestre, ou lorsque l’administration fiscale le fait à votre place.

Ce guide explique la configuration pratique : comment le moteur de taxes de PrestaShop est réellement construit, les chemins exacts du back-office et les clés de configuration, ainsi que la façon de configurer la TVA européenne selon le pays de destination pour qu’elle s’applique correctement et automatiquement. Le volet juridique, quand vous devez vous enregistrer à l’OSS, comment fonctionne le seuil de 10 000 €, quelles preuves conserver, est un sujet à part ; nous l’abordons dans TVA dans l’UE : OSS, IOSS et ce que votre boutique doit gérer. Ici, nous partons du principe que vous savez déjà quel taux appliquer, et que vous voulez que PrestaShop l’applique correctement à chaque fois.

Comment PrestaShop modélise la taxe : trois couches, pas une seule

La chose la plus utile à comprendre avant de toucher à quoi que ce soit : dans PrestaShop, vous ne définissez pas un simple « taux de taxe » directement sur un produit. Il existe trois objets imbriqués, et le produit pointe vers celui du haut.

CoucheCe que c’estEmplacement dans le back-officeClasse
TaxeUn taux nommé unique, « DE Standard 19 % », « FR Réduit 5,5 % ». Simplement un nombre avec un libellé et un indicateur actif.International → TaxesTax
Règle fiscaleUne ligne qui dit : « pour ce pays (éventuellement cet État ou cette plage de codes postaux), appliquer cette Taxe ». C’est le lien entre un taux et un lieu.Dans l’éditeur d’un groupeTaxRule
Groupe de règles fiscalesUn ensemble nommé de règles fiscales, « Taux standard UE », « Taux réduits UE (livres) ». C’est vers lui que pointe réellement un produit, un transporteur ou l’emballage cadeau.International → Taxes → Règles de taxesTaxRulesGroup

Concrètement, qu’est-ce que cela vous apporte ? Vous définissez chaque taux national une seule fois comme Taxe, puis vous assemblez des groupes qui réutilisent ces taux. Un produit ne nomme jamais un pays : il nomme un groupe, et ce groupe décide du taux selon l’adresse de livraison du client au moment du calcul. Modifiez une fois le taux de l’Allemagne au niveau de la Taxe, et tous les groupes qui y font référence se mettent à jour. Cette indirection est précisément ce qui rend une configuration TVA pour 27 pays de l’UE maintenable, au lieu d’en faire un tableur à modifier à la main.

Lorsqu’une commande est passée, PrestaShop résout le taux via l’adresse de livraison et le groupe du produit : TaxManagerFactory confie le travail à TaxRulesTaxManager, qui fait correspondre le pays de l’adresse (et l’État ou le code postal lorsque c’est pertinent) à une TaxRule, puis transmet le taux obtenu à un TaxCalculator. Vous n’appelez jamais cette chaîne directement, mais la connaître vous permet de déboguer un ticket du type « pourquoi cette commande est-elle sans taxe ? » en deux minutes plutôt qu’en deux heures.

Construire la configuration UE, étape par étape

Écran de configuration de la TVA UE PrestaShop avec validation en direct, durée de cache et options d'exonération de taxe par groupe de clients
La configuration de la taxe UE combine validation de TVA en direct, comportement de repli et règles par groupe de clients, chaque paramètre change le taux final que voit un acheteur.

Étape 1, Créer une Taxe pour chaque taux que vous facturez réellement

Allez dans International → Taxes et ajoutez une Taxe pour chaque taux standard que vous collecterez. Une boutique qui expédie des biens physiques au taux normal dans toute l’UE a besoin des taux standards des 27 États membres ; nommez-les donc de façon lisible : DE Standard 19 %, FR Standard 20 %, PL Standard 23 %, et ainsi de suite. Si vous vendez des produits éligibles à un taux réduit (livres, alimentation, certains produits médicaux), ajoutez aussi ces taux comme Taxes séparées, FR Réduit 5,5 %, DE Réduit 7 %, car les taux réduits sont liés à des catégories de produits précises et varient d’un pays à l’autre.

Le bouton « Activer » d’une Taxe est important : une Taxe désactivée reste en base de données (les commandes historiques conservent donc leur taux correct), mais elle n’apparaît plus dans la liste déroulante lorsque vous créez des règles. C’est ainsi que vous retirez un taux temporaire expiré sans corrompre les anciennes factures.

Étape 2, Assembler un groupe de règles fiscales par profil de produit

Sous International → Taxes → Règles de taxes, créez un groupe, commencez par Taux standard UE. À l’intérieur, ajoutez une règle fiscale par pays, chacune associant le pays à la Taxe correspondante. C’est la partie fastidieuse, et c’est celle où les erreurs arrivent : vous devez ajouter une règle pour chaque pays de l’UE vers lequel vous expédiez, y compris votre pays d’origine.

Voici le scénario d’échec qui finit par toucher tout le monde. Si le pays de livraison d’un client n’a aucune règle dans le groupe, PrestaShop ne devine pas : il applique une taxe de 0 %. Aucun avertissement. Une commande du Luxembourg sans règle Luxembourg passe au prix HT, vous devez tout de même la TVA luxembourgeoise, et vous ne l’avez simplement pas collectée. Traitez « chaque pays livrable possède une règle » comme un point de contrôle à vérifier, pas comme une hypothèse.

Si vous vendez des produits à taux mixtes, vous aurez plusieurs groupes, Taux standard UE, Taux réduits UE (livres), UE zéro / exonéré. Chacun n’est qu’un ensemble différent des mêmes Taxes sous-jacentes.

Étape 3, Associer les produits au bon groupe

Ouvrez un produit, allez dans l’onglet Prix, puis définissez Règle de taxe sur le groupe correct. C’est l’étape qui casse silencieusement les processus de création de produits : selon votre version de PrestaShop, le formulaire et les valeurs par défaut d’import, un produit nouveau ou importé peut prendre par défaut Aucune taxe ou un groupe de règles fiscales inattendu. Si quelqu’un le laisse une fois au mauvais endroit, ou si un import le remplit mal, tous les produits ajoutés ensuite dans la précipitation portent cette erreur jusqu’à ce qu’un audit la découvre. Vérifiez explicitement le groupe de règles fiscales de chaque produit au lieu de faire confiance au préremplissage.

Et alors ? Faites de « définir la règle de taxe » une étape explicite de votre liste de contrôle de création produit plutôt que de faire confiance au préremplissage, et contrôlez-la par sondage après tout import CSV : l’import acceptera sans broncher un groupe de taxes vide ou erroné, et vous ne verrez jamais d’alerte rouge dans l’interface. Pour un catalogue déjà en ligne, un export filtré rapide des produits par groupe de taxes est le moyen le plus rapide de repérer les produits passés sans taxe.

Vous n’avez pas besoin d’ouvrir chaque produit un par un pour trouver les intrus. Cette requête en lecture seule liste les produits qui ne portent aucun groupe de règles fiscales (le cas id_tax_rules_group = 0 « Aucune taxe »), exécutez-la dans Paramètres avancés → Base de données après chaque import en masse :

-- Find products set to "No tax" (id_tax_rules_group = 0).
-- Read-only spot-check; run after every CSV import. Adjust the lang id if needed.
SELECT p.id_product, pl.name, p.reference, p.id_tax_rules_group
FROM ps_product p
JOIN ps_product_lang pl
  ON pl.id_product = p.id_product AND pl.id_lang = 1
WHERE p.id_tax_rules_group = 0          -- 0 = no tax group assigned
  AND p.active = 1
ORDER BY p.id_product;

Un résultat vide est la réponse que vous voulez. Toute ligne retournée correspond à un produit expédié sans taxe tant que vous ne le corrigez pas, exactement le type d’oubli silencieux qu’un audit découvrirait autrement en premier.

Les réglages qui décident du montant final

Deux produits dans un panier, les « bons » taux configurés, et le total de facture ne correspond toujours pas à celui de votre comptable : il s’agit presque toujours d’un réglage d’arrondi ou de taxe sur les frais annexes, pas des taux eux-mêmes.

Arrondi : là où l’Allemagne et la France diffèrent réellement

Sous Paramètres de la boutique → Général, les réglages Mode d’arrondi et Type d’arrondi (PS_PRICE_ROUND_MODE et PS_ROUND_TYPE) changent le calcul, pas seulement l’affichage. Arrondir chaque article additionne des totaux de lignes déjà arrondis ; Arrondir le total n’arrondit qu’une fois à la fin. Sur un panier multi-articles, ces méthodes produisent des totaux différents, parfois d’un ou deux centimes, exactement le genre d’écart qui fait échouer le rapprochement des factures.

Ce n’est pas une préférence, c’est une question de juridiction. En règle générale, la pratique allemande attend un arrondi par ligne, tandis que la France autorise l’arrondi sur le total, mais confirmez l’exigence actuelle du pays depuis lequel vous facturez au lieu de vous fier à un article de blog, car ces règles évoluent. Testez-le honnêtement : créez un vrai panier multi-articles, vérifiez la facture et comparez-la à ce qu’attend votre comptable.

La livraison est taxable, et PrestaShop ne vous le rappellera pas

Chaque transporteur possède son propre groupe de règles fiscales, défini dans Livraison → Transporteurs sur l’écran de modification du transporteur. La valeur d’usine d’un nouveau transporteur est souvent Aucune taxe. La livraison est soumise à la TVA dans la plupart des pays de l’UE ; un transporteur « Aucune taxe » signifie donc que vous sous-collectez la TVA sur les frais de livraison de chaque commande. Configurez la taxe de chaque transporteur selon vos règles locales de TVA. Le traitement TVA de la livraison peut dépendre de la juridiction et des paniers à taux mixtes, et testez les paniers mixtes avec votre comptable au lieu de supposer que le taux du produit principal s’applique à la livraison.

Emballage cadeau et écotaxe, les deux frais que l’on oublie

L’emballage cadeau a son propre groupe de règles fiscales sous Paramètres de la boutique → Paramètres des commandes (la section emballage cadeau). Le laisser non taxé crée le même problème de sous-collecte, simplement sur une ligne plus petite. Si vous opérez dans un pays avec une écotaxe (l’éco-contribution française, par exemple), activez et configurez l’écotaxe sous International → Taxes (les paramètres de taxe), puis renseignez les champs d’écotaxe par produit lorsque c’est applicable, PrestaShop la traite ensuite comme un composant taxé séparé sur la facture.

B2C vs B2B : là où le taux change vraiment

Le taux de destination couvre les ventes ordinaires aux consommateurs. Deux cas le modifient, et chacun mérite son propre guide plutôt que d’être compressé ici.

  • B2B intracommunautaire (autoliquidation). Un numéro de TVA valide appartenant à une entreprise d’un autre pays de l’UE fait passer la commande à 0 % de TVA, l’acheteur déclarant la taxe dans son pays, mais le B2B domestique (une entreprise allemande achetant auprès d’une boutique allemande) paie toujours la TVA complète. PrestaShop gère cela via les groupes clients et la validation du numéro de TVA ; la configuration complète, la validation VIES et les mentions de facture sont détaillées dans l’e-commerce B2B avec PrestaShop.
  • L’affichage des prix en HT ou en TTC relève d’une règle d’affichage légale, pas du calcul de taxe, et varie selon le marché et le type de client. Nous traitons ce sujet entièrement dans les règles d’affichage des prix en Europe, afin de ne pas mélanger les deux problématiques.

Pour les boutiques fortement orientées B2B, la partie que le système natif de groupes clients de PrestaShop gère le moins élégamment est la validation fiable des numéros de TVA via VIES. Y compris lorsque VIES est indisponible ou renvoie des correspondances partielles. Le module Automatic EU VAT Checker prend ce processus en charge de bout en bout : il valide à l’inscription et à la commande, applique l’exonération uniquement aux vrais cas de B2B transfrontalier, et reste maîtrisé lorsque le service VIES est indisponible, afin qu’un client avec un numéro valide ne soit pas bloqué par une panne d’API gouvernementale. Le bénéfice n’est pas « plus de validation » : c’est de ne pas devoir corriger manuellement des commandes que le comportement par défaut a exonérées (ou n’a pas exonérées) lors d’une mauvaise journée côté VIES. Si ces mêmes acheteurs professionnels paient aussi sur compte, B2B Deferred Payment Terms gère la partie facture et limite de crédit.

Multiboutique : taux partagés, valeurs par défaut séparées

Si vous exploitez plusieurs boutiques sous une même installation PrestaShop (un modèle fréquent pour des vitrines par pays), les objets fiscaux peuvent être partagés tandis que les valeurs par défaut restent propres à chaque boutique. La structure pratique :

  • Partagez les Taxes et les groupes de règles fiscales entre toutes les boutiques, vous ne voulez pas que « DE Standard 19 % » soit défini trois fois et dérive progressivement. Définissez-le une seule fois au niveau Toutes les boutiques.
  • Définissez le pays par défaut par boutique (PS_COUNTRY_DEFAULT tient compte du contexte boutique, chaque vitrine peut donc avoir son propre pays d’origine) et associez les produits de chaque boutique au bon groupe dans le contexte de cette boutique. Une vitrine allemande définit l’Allemagne comme pays d’origine ; une vitrine française fait de même avec la France.
  • Retestez l’arrondi par boutique si les devises diffèrent, l’arrondi de taxe interagit avec la conversion de devise, donc un prix propre en euros peut finir décalé d’un centime dans une autre devise. Vérifiez avec un vrai panier dans la devise de chaque boutique.

La liste de contrôle fiscale avant lancement

Avant de confier cette configuration à de vraies commandes, parcourez cette liste : elle regroupe ce qui échoue silencieusement.

  • Chaque pays livrable possède une règle fiscale dans chaque groupe que vous utilisez. Pays manquant = 0 % facturé, TVA toujours due. Ouvrez chaque groupe et comptez.
  • Votre pays d’origine est dans le groupe, c’est le plus facile à oublier, parce que vous facturez « évidemment » la TVA nationale.
  • Chaque produit porte le bon groupe de règles fiscales. Les produits nouveaux et importés peuvent prendre par défaut Aucune taxe ou un groupe inattendu selon la version et les données d’import ; chaque produit doit donc être défini (ou vérifié), pas supposé correct.
  • Les transporteurs ne sont pas sur « Aucune taxe », sauf si vous ne taxez réellement pas la livraison.
  • L’emballage cadeau et l’écotaxe sont configurés si vous les proposez.
  • Le mode d’arrondi correspond à ce qu’exige votre juridiction de facturation, testé sur un panier multi-articles, pas supposé.
  • Passez de vraies commandes de test depuis trois ou quatre pays de l’UE différents (utilisez une adresse de test par pays) et lisez les totaux réels sur facture. Cela détecte plus de problèmes que n’importe quelle inspection prolongée des écrans de configuration.

Questions fréquentes

Pourquoi l’un de mes produits facture-t-il 0 % de taxe sans erreur ?

Deux causes, toutes deux silencieuses. Soit le produit est défini sur Aucune taxe dans son onglet Prix (id_tax_rules_group = 0, la requête SQL de contrôle ci-dessus les trouve), soit le pays de livraison du client n’a pas de règle fiscale dans le groupe assigné. PrestaShop n’avertit jamais lorsqu’un pays manque ; il applique simplement 0 %. Ouvrez le groupe de règles fiscales concerné, confirmez que le pays de livraison possède une règle, puis vérifiez que le produit pointe vers le bon groupe.

Dois-je régler « Taxe basée sur » sur l’adresse de livraison ou l’adresse de facturation ?

Pour la TVA européenne basée sur la destination (celle attendue par les déclarations OSS), utilisez l’adresse de livraison sous International → Taxes. Le taux doit suivre l’endroit où les biens sont livrés. Le laisser sur l’adresse de facturation applique le mauvais taux dès que les pays de facturation et de livraison diffèrent, et votre rapprochement TVA ne tombera pas juste. Le contexte juridique expliquant pourquoi la destination prime se trouve dans TVA dans l’UE : OSS, IOSS.

PrestaShop valide-t-il les numéros de TVA B2B et applique-t-il automatiquement l’autoliquidation ?

Non. Le cœur de PrestaShop stocke le numéro de TVA et peut afficher les prix HT via les groupes clients, mais il n’appelle jamais VIES et ne met jamais la TVA à zéro simplement parce qu’un numéro a été saisi. L’exonération par autoliquidation, validation en temps réel, condition transfrontalière, libellé de facture, comportement sûr lorsque VIES est indisponible, est précisément le manque que comble Automatic EU VAT Checker. L’appartenance à un groupe change uniquement l’affichage, pas la taxe facturée.

Le total de ma facture multi-articles diffère d’un centime du chiffre de mon comptable : qu’est-ce qui cloche ?

Presque toujours l’arrondi, pas les taux. Vérifiez Mode d’arrondi et Type d’arrondi sous Paramètres de la boutique → Général. « Arrondir chaque article » et « arrondir le total » produisent des sommes différentes sur un panier multi-lignes, et le bon choix dépend de la juridiction (la pratique allemande attend généralement un arrondi par ligne ; la France autorise l’arrondi sur le total, confirmez votre cas). Testez avec un vrai panier multi-articles plutôt qu’un produit seul, car une seule ligne ne révèle jamais la différence.

J’ai modifié le taux de TVA de l’Allemagne : dois-je éditer chaque groupe ?

Non, et c’est tout l’intérêt du modèle à trois couches. Modifiez le taux une seule fois au niveau de la Taxe (International → Taxes) et chaque groupe de règles fiscales qui référence cette Taxe se met à jour automatiquement. Pour un taux temporaire qui expire, désactivez l’ancienne Taxe plutôt que de la supprimer : les commandes historiques conservent leur taux d’origine, et la Taxe désactivée cesse simplement d’apparaître dans la liste déroulante lorsque vous créez de nouvelles règles.

Où s’arrête la configuration fiscale et où commencent les autres guides

Mettre les bons taux sur les commandes, c’est le rôle de cet article. Trois sujets voisins sont souvent confondus avec lui ; ils ont leur propre place, afin de ne pas vous donner ici des demi-réponses :

PrestaShop vous donne un moteur de taxes réellement solide : trois couches claires, calcul sensible à la destination, contrôle par transporteur et par frais annexe, valeurs par défaut prêtes pour le multiboutique. Ce qu’il ne fera pas, c’est vous dire quelle configuration est correcte ou vous avertir lorsqu’un pays manque ; ce jugement vous revient. Configurez-le délibérément, vérifiez-le avec de vraies commandes de test transfrontalières, et révisez vos taux chaque trimestre lorsque des réductions temporaires expirent. Faites cela, et la taxe devient ce qu’elle devrait être : un réglage configuré une fois, auquel vous ne pensez plus, jusqu’à l’audit que vous passez sans transpirer.

David Miller

David Miller

Fondateur, mypresta.rocks
À propos de l’auteur

David Miller est un spécialiste PrestaShop fort de plus de dix ans d'expérience concrète et le fondateur de mypresta.rocks, un studio de développement situé à Tychy, en Pologne. Il conçoit et maintient un catalogue de 159 modules PrestaShop, dont 21 suites « Revolution » couvrant le SEO, le checkout, la sécurité, la performance, le marketing, la recherche, le support et la gestion d'entrepôt, qui améliorent chaque jour de vraies boutiques, testés sur PrestaShop 1.7.8, 8.x et 9.x. Il assure également la maintenance de boutiques en production : son travail se juge donc sur des ventes réelles, pas sur des démos. Son expérience couvre l'ensemble du e-commerce. Performance, sécurité, SEO et marketing, et va au-delà de PrestaShop, jusqu'à WooCommerce, Shopify et les systèmes sur mesure. Sur le blog, il écrit sur la face technique de PrestaShop : ce que la plateforme fait vraiment, ce qui casse en production et quelles solutions tiennent dans la durée.

Partager cet article:

Commentaires

Aucun commentaire pour le moment. Soyez le premier !

Cet article vous a plu ?

Recevez nos derniers conseils, guides et mises à jour de modules dans votre boîte mail.

Vous pouvez vous désinscrire à tout moment. Vous trouverez pour cela nos informations de contact dans les conditions d'utilisation du site.

Chargement...
Retour en haut