SOMMAIRE

Le module vatnumber natif de PrestaShop est archivé depuis un moment. Officiellement. Tranquillement. Sans vraiment prévenir les marchands qui s’en servaient pour facturer hors taxe leurs clients B2B européens.
Le problème, c’est que le cœur de PS 1.7 continue d’en dépendre. Ses variables de config sont hardcodées dans plusieurs endroits du moteur. Résultat sur une boutique 1.7.8.11 sans remplacement : comportement fiscal imprévisible, TVA appliquée à tort, ou pire, le champ numéro de TVA qui disparaît purement du formulaire d’adresse.
Les alternatives payantes sur Addons tournent autour de 80-99 €. Pour un mécanisme qui aurait dû rester natif, c’est discutable. J’ai donc développé NW VAT Number : open source, gratuit, licence MIT. Ce n’est pas une réécriture complète, c’est le module historique corrigé là où il cassait, avec la synchro legacy que presque personne ne documente. Voici ce qu’il fait et comment l’installer.
⚡ Pas le temps de lire ?
- Le module natif
vatnumberPrestaShop est archivé et ne fonctionne plus correctement sur PS 1.7.8.11+ - NW VAT Number est la version corrigée, gratuite et open source (licence MIT)
- Il valide les numéros TVA via le service officiel VIES (SOAP), avec mode fail-open si VIES est indisponible
- Il applique automatiquement 0% de TVA pour les clients B2B intra-UE éligibles
- Il synchronise les clés legacy
VATNUMBER_*du cœur PS 1.7 pour éviter les conflits - Téléchargement sur GitHub : github.com/webcreativite/nwvatnumber
Pourquoi le module natif vatnumber ne fonctionne plus sur PrestaShop 1.7
Un module archivé qui dépend encore du cœur PS 1.7
Le module vatnumber de PrestaShop n’a jamais vraiment fonctionné sur la branche 1.7. Les issues GitHub datant de 2017 le confirment. PrestaShop l’a archivé, mais sans nettoyer les références dans le cœur du logiciel. Résultat : VATNUMBER_MANAGEMENT et VATNUMBER_COUNTRY sont encore appelées dans plusieurs fichiers du moteur, alors que le seul module censé les renseigner n’existe plus.
C’est le genre de situation où rien ne plante franchement, mais rien ne fonctionne non plus. La TVA s’applique quand elle ne devrait pas, ou le champ disparaît du formulaire selon la version et la configuration.
Il y avait aussi un problème plus basique : l’URL du service VIES a migré de HTTP vers HTTPS avec une nouvelle structure SOAP. L’ancien module pointait sur l’ancienne URL, ce qui renvoyait “service indisponible” en permanence, même quand VIES était parfaitement opérationnel.
Les problèmes concrets en production
Sur une boutique 1.7.8.11 sans module TVA intracom qui fonctionne, voilà ce qui arrive en pratique :
- Le champ numéro de TVA n’apparaît pas dans le formulaire d’adresse, ou apparaît mais n’est jamais validé
- La TVA reste appliquée à des clients B2B étrangers pourtant éligibles à l’exonération
- Dans certains cas, la validation VIES bloque complètement l’enregistrement d’une adresse si le service est temporairement down
- Le hook fiscal
actionTaxManager/ aliastaxManagern’est pas correctement branché, donc l’exonération ne se propage pas au panier
Pour une boutique qui vend à des pros européens, c’est problématique, juridiquement et commercialement. Si tu vends à un client allemand ou belge avec un numéro de TVA valide, tu as l’obligation de facturer hors taxe. Ce n’est pas une question de confort, c’est une règle fiscale européenne encadrée par la directive TVA UE.
NW VAT Number : la solution gratuite et open source
Ce que fait le module
NW VAT Number reprend le socle du module historique. Pas de réécriture complète, juste les corrections là où ça cassait, et quelques ajouts qui manquaient :
- Validation du numéro TVA via VIES. Le module appelle le service officiel VIES de la Commission européenne (
checkVatService.wsdl) en SOAP. Il normalise d’abord le numéro saisi (suppression des espaces, tirets, caractères non alphanumériques) avant l’appel. - Exonération automatique de TVA au panier. Si le client a un numéro TVA valide sur son adresse fiscale, qu’il est dans un pays UE différent du pays de la boutique, et que la gestion TVA est activée dans le module, le taux appliqué passe à 0%.
- Synchronisation des clés legacy. Le module maintient en parallèle les variables
VATNUMBER_*attendues par certaines portions du cœur PS 1.7, pour éviter tout comportement erratique. - Détection des conflits transporteurs. Certains modules de livraison forcent une TVA locale indépendamment du profil client. NW VAT Number détecte ces cas et se désactive sur ce panier pour éviter les incohérences fiscales.
La synchronisation des clés legacy : pourquoi c’est important
C’est le point que la plupart des modules tiers ne documentent pas, et qui génère les bugs les plus pénibles à diagnostiquer. Le cœur PS 1.7 lit encore VATNUMBER_MANAGEMENT et VATNUMBER_COUNTRY dans plusieurs fichiers. Si un module gère la TVA sous ses propres clés sans synchroniser ces valeurs legacy, les deux systèmes se contredisent. Le module dit “0% pour ce client”, PrestaShop lit une autre variable et applique la taxe quand même.
NW VAT Number synchronise automatiquement :
NWVATNUMBER_MANAGEMENT→VATNUMBER_MANAGEMENTNWVATNUMBER_COUNTRY→VATNUMBER_COUNTRYNWVATNUMBER_CHECKING→VATNUMBER_CHECKING
Si la TVA reste appliquée sur un client dont le numéro est pourtant valide, c’est là qu’il faut chercher en premier.
Le mode fail-open VIES : ta boutique ne se bloque plus
VIES a des interruptions. Pas souvent, mais ça arrive : maintenances, timeouts selon l’hébergeur, surcharges ponctuelles. Sur l’ancien module, ça bloquait l’enregistrement de l’adresse client. Commande impossible. Le client appelait. Mauvaise soirée.
NW VAT Number gère ça différemment : si VIES ne répond pas, le numéro est accepté quand même. Le module note qu’il n’a pas pu vérifier, et tu peux contrôler manuellement plus tard. Une boutique en production ne peut pas se permettre de bloquer des commandes sur un timeout réseau externe.
Installation et configuration pas à pas
Téléchargement et installation
Le module est disponible gratuitement sur GitHub. La dernière version stable est la v1.0.1 (mars 2026).
- Rends-toi sur la page des releases GitHub et télécharge le zip de la dernière version
- Copie le dossier
nwvatnumberdans le répertoiremodules/de ton PrestaShop - Dans le back-office, va dans Modules > Gestionnaire de modules
- Recherche “nwvatnumber” et clique sur Installer
- Vide le cache PrestaShop (
var/cache/devetvar/cache/prod)
Pas besoin de compte Addons, pas de licence, pas de clé d’activation. C’est du PHP pur sous licence MIT, tu peux l’utiliser, le modifier, le distribuer.
Configuration du back-office
Une fois installé, accède à la configuration du module. Trois paramètres à vérifier :
- Pays de la boutique pour la comparaison TVA. C’est le pays de référence. Un client du même pays que ta boutique ne bénéficiera pas de l’exonération, même avec un numéro TVA valide. Vérifie que ce paramètre correspond bien à ton pays d’établissement.
- Activer la validation TVA via VIES. À activer si tu veux une vérification en temps réel des numéros saisis. Si tu le désactives, les numéros sont acceptés sans validation.
- Bouton “Test de connexion VIES”. Utilise-le pour vérifier que ton serveur peut joindre le service VIES. Si le test échoue, vérifie que l’extension PHP SOAP est activée et que ton hébergeur n’a pas bloqué les connexions sortantes HTTPS vers la Commission européenne.
Procédure de test recommandée
Avant de valider en production, voici comment tester proprement :
- Vérifie que les taxes globales PrestaShop sont activées (sinon rien à exonérer)
- Contrôle que la base de calcul de taxe est bien sur l’adresse de facturation (ou livraison selon ta config via
PS_TAX_ADDRESS_TYPE) - Crée une adresse client avec un pays UE différent du tien, un nom d’entreprise renseigné, et un numéro TVA intracommunautaire valide
- Lance un nouveau panier avec ce profil client
- Vérifie : les prix doivent rester HT, et la TVA finale doit afficher 0%
Si ta boutique tourne derrière un proxy comme Cloudflare, assure-toi que les requêtes sortantes vers VIES ne passent pas par un cache. Elles doivent partir directement depuis ton serveur.
✅ Checklist : ma config TVA B2B PrestaShop est-elle correcte ?
Coche chaque point validé. Le score s’affiche en bas.
Cas particuliers et dépannage
VIES indisponible : que faire ?
VIES tombe parfois. Maintenance, surcharge, ou ton hébergeur qui bloque les appels sortants sans te prévenir. Dans l’ordre :
- Vérifie que l’extension PHP
SOAPest bien activée sur ton serveur (dansphpinfo()ou via ton hébergeur) - Utilise le bouton Test de connexion VIES dans la configuration du module pour diagnostiquer rapidement
- Vérifie que ton hébergeur n’a pas bloqué les connexions sortantes HTTPS vers
ec.europa.eu. Certains plans mutualisés filtrent les appels externes. - Si le problème persiste, tu peux temporairement désactiver la validation VIES dans le module. Les numéros seront acceptés sans vérification jusqu’à ce que le service soit de nouveau accessible.
La TVA reste appliquée malgré un numéro valide
C’est le bug le plus courant, et il a presque toujours la même cause. Dans l’ordre :
- Un seul module TVA actif. Si tu as un autre module gérant la TVA en parallèle, il peut écraser la logique de NW VAT Number. Désinstalle ou désactive tout autre module fiscal avant de tester.
- Vide le cache PrestaShop (
var/cache/devetvar/cache/prod). Un cache obsolète peut maintenir d’anciens comportements fiscaux. - Teste avec un nouveau panier. Un panier existant peut avoir des données fiscales figées. Crée un nouveau panier après avoir modifié l’adresse.
- Vérifie l’adresse utilisée pour la taxe. Contrôle le paramètre
PS_TAX_ADDRESS_TYPEdans ta config PrestaShop. La TVA est calculée sur l’adresse de livraison ou de facturation ? Le numéro TVA doit être sur l’adresse qui sert de référence.
Conflits avec certains modules de livraison
Certains modules de livraison embarquent leur propre logique fiscale, notamment les modules click & collect ou ceux avec tarification avancée. Ils peuvent forcer une TVA locale indépendamment du profil du client.
NW VAT Number détecte ça et se désactive sur ce panier plutôt que de créer une incohérence. C’est voulu. Si la TVA affiche 0% mais qu’un autre module la recalcule ensuite, tu te retrouves avec une facture fausse. Mieux vaut ne pas intervenir et laisser le transporteur gérer. Si tu tombes sur ce cas, le problème est côté module de livraison.
Pourquoi choisir NW VAT Number plutôt qu’un module payant ?
Question légitime. Les modules Addons dans cette catégorie sont complets, parfois trop. Rapport comptable intégré, gestion par groupe de clients, support éditeur. Si tu as besoin de tout ça, ils se justifient. Sinon :
| Critère | NW VAT Number (gratuit) | Modules Addons payants (~80–99 €) |
|---|---|---|
| Prix | Gratuit (MIT) | 80 à 99 € + abonnement support |
| Validation VIES | ✅ SOAP officiel, fail-open | ✅ Variable selon le module |
| Exonération TVA B2B intra-UE | ✅ | ✅ |
| Synchro clés legacy PS 1.7 | ✅ (unique sur ce segment) | ⚠️ Pas toujours documenté |
| Compatibilité PS 1.7.8.11+ | ✅ Testé | ✅ Généralement oui |
| Code source accessible | ✅ GitHub public | ❌ Code fermé |
| Modifiable selon tes besoins | ✅ Licence MIT | ❌ Généralement non |
| Rapport comptable / BO avancé | ❌ Non (hors scope) | ✅ Pour certains modules |
| Support garanti | Communautaire (GitHub issues) | ✅ Support éditeur inclus |
Pour la grande majorité des boutiques B2B qui ont juste besoin que l’exonération TVA intra-UE fonctionne, NW VAT Number fait le travail. Gratuit, auditable, modifiable.
J’utilise ce module sur mes propres projets clients en tant que développeur freelance PrestaShop. Le code est public sur GitHub, tu peux le lire, le forker, l’adapter à des règles fiscales spécifiques. C’est quelque chose qu’un module commercial fermé ne te permettra jamais de faire.
Conclusion
Le module vatnumber natif PrestaShop est archivé, buggé, et n’a jamais vraiment fonctionné sur 1.7. Si tu vends à des pros européens, tu ne peux pas faire l’impasse sur l’exonération TVA intracom. C’est une obligation légale, pas une option de confort.
NW VAT Number remplace ce module mort sans te coûter quoi que ce soit. Validation VIES à jour, exonération propagée correctement au panier, synchro des clés legacy, fail-open si VIES ne répond pas. MIT, GitHub, copier-coller.
Le dépôt est là : github.com/webcreativite/nwvatnumber. Les issues GitHub sont ouvertes si tu rencontres un cas non couvert. Et si tu as besoin d’une intégration sur une boutique spécifique, tu peux me contacter via ma page consultant PrestaShop.
FAQ
NW VAT Number est-il compatible avec PrestaShop 8 ?
Le module a été développé et testé pour PrestaShop 1.7.8.11 et supérieur. La compatibilité avec PrestaShop 8 n’est pas garantie dans la version actuelle, car PS 8 a introduit des modifications sur le système de hooks fiscaux. Une adaptation est envisageable. Si c’est ton besoin, ouvre une issue sur GitHub.
Faut-il désinstaller l’ancien module vatnumber avant d’installer NW VAT Number ?
Oui, absolument. Les deux modules ne peuvent pas coexister : ils gèrent les mêmes hooks fiscaux et les mêmes clés de configuration. Désinstalle complètement l’ancien module (pas juste désactiver), vide le cache, puis installe NW VAT Number.
Le module fonctionne-t-il si mon client est au Royaume-Uni post-Brexit ?
Non. Depuis le Brexit, le Royaume-Uni n’est plus dans le système TVA intracom UE. Les numéros TVA britanniques (préfixe GB) ne sont plus vérifiables via VIES. NW VAT Number gère uniquement les pays de l’Union Européenne. Pour les ventes vers le Royaume-Uni, tu relèves d’autres règles fiscales qui nécessitent un traitement spécifique.
Est-ce que NW VAT Number gère les ventes B2C (particuliers) hors UE ?
Non, c’est hors scope. Le module se concentre exclusivement sur l’exonération B2B intra-UE via numéro TVA valide. Pour les ventes B2C avec les règles OSS (One Stop Shop) applicables depuis juillet 2021, il faudra une solution complémentaire. Certains modules PrestaShop gèrent ce cas spécifiquement.
Que se passe-t-il si un client saisit un faux numéro de TVA ?
Si la validation VIES est activée, le module interroge la base officielle en temps réel. Un numéro invalide est refusé avec un message d’erreur : le client ne peut pas enregistrer l’adresse avec ce numéro. Si VIES est indisponible au moment de la saisie (mode fail-open), le numéro est accepté temporairement et tu devras le vérifier manuellement dans le back-office avant de valider l’exonération.
Le module crée-t-il des tables en base de données ?
Non. NW VAT Number ne crée pas de tables supplémentaires. Il utilise le système de configuration natif PrestaShop (ps_configuration) pour stocker ses paramètres, et s’appuie sur les champs d’adresse existants pour le numéro TVA. Pas de migration de base de données lors de l’installation ni de la désinstallation.