B2B dans l'UE · WooCommerce
Vendez aux entreprises de l'UE. Avec les bons prix et la bonne TVA à 0 %.
Cartnorm B2B ajoute à WooCommerce des prix de gros, des groupes de clients, des règles de commande et des devis, et vérifie les numéros de TVA dans VIES. Les particuliers voient toujours vos prix habituels. Les clients professionnels voient les leurs, HT ou TTC.
Le plugin gratuit n'est pas encore sur WordPress.org. Écrivez-nous et nous vous enverrons un seul e-mail le jour du lancement.
Exemple : un produit, deux clients
Boutique d'exemple · Allemagne · visiteur
Recharge de savon liquide, 5 l
29,75 € TTC (TVA 19 %)
5,95 € / 1 l
- Prix affichés
- TTC, comme réglé dans WooCommerce
- TVA au paiement
- TVA allemande de 19 %
- Règles de commande
- Aucune
Les règles pour les particuliers restent actives : prix TTC, prix à l'unité de mesure et, en cas de réduction, le prix le plus bas sur 30 jours (Omnibus).
Boutique d'exemple · Allemagne · Groupe Grossiste, entreprise en France
Recharge de savon liquide, 5 l
20,00 € HT
4,00 € / 1 l
| Quantité | Prix unitaire | Prix au litre |
|---|---|---|
| dès 1 | 20,00 € | 4,00 € / 1 l |
| dès 10 | 18,50 € | 3,70 € / 1 l |
| dès 50 | 17,00 € | 3,40 € / 1 l |
- Prix affichés
- HT, avec la mention « HT »
- TVA au paiement
- 0 %, numéro de TVA valide dans VIES
- Règles de commande
- Par 4, commande minimum 150 €
Mention sur la commande : Exonération de TVA, article 138 de la directive 2006/112/CE
Illustration avec des prix d'exemple. La mention est enregistrée dans la langue de la commande.
Pourquoi le B2B est plus complexe dans l'UE
Vendre aux entreprises de l'UE demande plus qu'une remise
Un numéro de TVA doit être vérifié, et la vérification conservée
La TVA à 0 % pour une entreprise d'un autre pays de l'UE suppose un numéro de TVA valide. VIES le confirme et renvoie un numéro de consultation : votre preuve pour l'administration fiscale.
Il existe deux cas de 0 % différents
Les biens sont une livraison intracommunautaire exonérée (art. 138). Les services relèvent de l'autoliquidation (art. 196). Chaque cas exige sa propre mention sur la facture, pas seulement « exonéré ».
Des prix HT seulement si les particuliers sont vraiment exclus
Les particuliers doivent voir des prix TTC. Afficher uniquement des prix HT n'est admis que si les particuliers ne peuvent effectivement pas acheter. Une case « Je suis un professionnel » ne suffit pas.
Un cache de pages peut afficher des prix HT
Si un cache enregistre une page créée pour un client grossiste et la montre à un particulier, celui-ci voit des prix sans TVA. Dans une boutique qui vend aussi aux particuliers, c'est un problème juridique, pas seulement un bug.
Quatre tâches, bien faites
1
Prix et prix par quantité
Prix fixes par groupe sur les produits et les variations, remises par catégorie, une remise sur tous les produits et des prix par quantité comme « dès 10 pièces 7 € ». Vos prix produits enregistrés ne sont jamais modifiés.
2
Numéro de TVA et TVA à 0 %
Un champ numéro de TVA dans le paiement en blocs et classique, une vérification en direct dans VIES avec numéro de consultation, 0 % seulement quand c'est correct et la bonne mention légale sur chaque commande.
3
Règles de commande
Montant minimum de commande et nombre minimum d'articles par groupe, quantités minimales et maximales et conditionnements par produit. Contrôlés dans le bloc panier, le panier classique et sur le serveur.
4
Devis et inscription des revendeurs
Le client demande un devis, vous répondez avec vos prix, il accepte via un lien signé et paie. Les entreprises demandent un compte revendeur, que vous validez, ou que VIES valide.
Conformité UE
Ce qui arrive à la TVA, cas par cas
Cartnorm B2B décide sur le serveur pour chaque panier et enregistre la décision dans la commande.
| Cas | Ce que fait Cartnorm B2B | Mention sur la commande |
|---|---|---|
| Client professionnel dans votre propre pays | Applique la TVA comme d'habitude. Les ventes nationales incluent toujours la TVA. | — |
| Biens pour une entreprise d'un autre pays de l'UE, numéro de TVA valide dans VIES | TVA à 0 % | Exonération de TVA, article 138 de la directive 2006/112/CE |
| Services ou produits virtuels, même situation | TVA à 0 %, autoliquidation | Autoliquidation : TVA due par le preneur (article 196 de la directive 2006/112/CE) |
| Biens et services dans un même panier | TVA à 0 % | Les deux mentions |
| VIES est indisponible | Applique la TVA, accepte la commande et la marque « vérification en attente ». Revérifie le numéro jusqu'à six fois en quatre jours environ et ajoute une note à la commande si VIES le confirme ensuite. Les montants de la commande ne sont jamais modifiés automatiquement. | — |
| Numéro de TVA invalide, ou d'un autre pays que l'adresse | Applique la TVA. Un numéro invalide affiche un message clair, ou la commande est acceptée avec TVA, selon votre réglage. | — |
| Client hors de l'UE | Les règles du numéro de TVA ne s'appliquent pas. Vos réglages de taxes WooCommerce décident. | — |
Les mentions sont intégrées dans les 24 langues officielles de l'UE et enregistrées dans la langue de la commande. Les produits virtuels comptent comme des services ; un filtre permet de changer cela.
Preuves enregistrées dans chaque commande avec un numéro de TVA
Numéro de TVA et son pays
Résultat VIES et numéro de consultation
Date et heure de la vérification
La décision et son motif
Groupe du client au moment de la commande
Lisibles par les plugins de facturation dans les données de commande
Fonctionne avec Cartnorm Omnibus
La mention Omnibus du prix le plus bas sur 30 jours est une règle de protection des consommateurs. Avec les deux plugins actifs, les membres d'un groupe B2B ne voient pas cette mention, et la logique de prix barrés d'Omnibus ne touche pas les prix de groupe. Pour les particuliers, rien ne change.
À propos de Cartnorm Omnibus →Ce n'est pas un conseil fiscal. Cartnorm B2B applique les règles générales de l'UE pour les ventes entre entreprises (articles 138 et 196 de la directive 2006/112/CE). Les cas particuliers comme les opérations triangulaires, les biens qui ne sont pas expédiés vers un autre État membre, les régimes particuliers ou les règles nationales ne sont pas couverts. Vérifiez avec votre conseiller fiscal comment ces règles s'appliquent à votre entreprise.
Ce sur quoi vous pouvez compter
Les clients ne choisissent jamais leur groupe
Seul le personnel de la boutique peut placer un client dans un groupe. Un groupe n'est jamais repris d'un formulaire d'inscription, de commande ou de compte.
Les prix masqués restent masqués
Quand les prix sont masqués pour un visiteur, ils sont aussi retirés des données produit de la Store API et des données structurées (JSON-LD) : impossible de les lire dans le code source.
Sûr avec les caches de pages
Les pages des clients B2B ne sont jamais enregistrées par les caches de pages. Prise en charge intégrée de WP Rocket, LiteSpeed Cache, W3 Total Cache, WP Super Cache et FlyingPress, plus un autotest.
Rapide avec de gros paniers
Aucune requête en base de données par ligne de panier. Dans notre test, un panier de 300 lignes dans un groupe B2B a été calculé en 30–40 ms environ.
Désinstallation propre
Supprimer le plugin efface ses réglages, groupes, prix, devis et demandes. Les commandes et leurs preuves de TVA restent, car elles font partie de vos registres.
Seul VIES est contacté
Les numéros de TVA sont vérifiés auprès du service VIES de la Commission européenne. Aucune autre donnée ne quitte votre boutique, et le plugin ne contacte pas cartnorm.com.
Configuré en quatre étapes
1
Installez et saisissez votre numéro de TVA
Dans WooCommerce › Réglages › B2B. Votre numéro de TVA est envoyé à VIES comme demandeur : chaque vérification renvoie ainsi un numéro de consultation.
2
Créez un groupe
Par exemple « Grossiste » : prix HT ou TTC, une remise sur tous les produits, des remises par catégorie et un minimum de commande.
3
Ajoutez prix et règles aux produits
Prix de groupe et prix par quantité dans l'éditeur de produit, quantités minimales et conditionnements dans l'onglet « Inventaire ».
4
Choisissez comment les clients rejoignent le groupe
Attribuez-les dans Comptes › Modifier, ou laissez-les postuler sur la page d'inscription, avec validation manuelle ou automatique.
Version 0.3.0 WordPress 6.4+ PHP 7.4+ WooCommerce 8.0+ Testé jusqu'à WordPress 7.1 et WooCommerce 11.2 Lire la documentation →
Tout ce que contient le plugin gratuit
Ouvrez un thème pour voir le détail.
Groupes de clients et prix
- Particuliers intégrés : les visiteurs et les clients sans groupe voient vos prix habituels
- Jusqu'à 2 groupes B2B, chacun avec des prix TTC ou HT
- Prix fixe par groupe pour chaque produit et chaque variation
- Remises par catégorie (sous-catégories comprises) et remise sur tous les produits
- Prix par quantité par produit et par groupe, affichés en tableau sur la fiche produit
- Un prix de groupe n'est jamais supérieur au prix normal ou soldé actuel
- Les commandes créées dans l'administration reçoivent les prix de groupe du client
Prix HT, TTC et à l'unité de mesure
- Mention « HT » après les prix des groupes HT ; la TVA est toujours calculée normalement
- Avec Germanized : le prix à l'unité suit le prix de groupe, et la mention de TVA suit l'affichage HT ou TTC
- Sans Germanized ni German Market : un prix à l'unité simple et optionnel, comme « 7,00 € / 1 kg »
- Les particuliers voient toujours vos réglages WooCommerce
Numéro de TVA et VIES
- Champ numéro de TVA dans le paiement en blocs, le paiement classique, Mon compte et le profil utilisateur
- Contrôle du format pour les 27 États membres et l'Irlande du Nord (XI)
- Vérification en direct dans VIES avec numéro de consultation ; résultats en cache (7 jours pour les numéros valides)
- 0 % seulement pour un numéro de TVA valide d'un autre pays de l'UE que celui de votre boutique
- L'adresse de facturation ou de livraison décide, selon votre choix
- VIES indisponible : TVA appliquée, commande acceptée, numéro revérifié automatiquement
Mentions légales et preuves
- Mentions distinctes pour les biens (art. 138) et les services (art. 196) ; les paniers mixtes reçoivent les deux
- Intégrées dans les 24 langues officielles de l'UE
- Enregistrées dans la langue de la commande (WPML, Polylang ou langue de la boutique)
- Affichées sur la page de remerciement, dans Mon compte, dans les e-mails et dans l'écran de commande de l'administration
- Encadré des preuves de TVA dans chaque commande
Règles de commande
- Montant minimum de commande par groupe, comparé comme le groupe voit les prix
- Nombre minimum d'articles par groupe
- Minimum, maximum et conditionnement par produit et variation, pour chaque groupe
- Les champs de quantité ne proposent que des quantités valides, dans le panier classique et le bloc panier
- Messages clairs comme « ajoutez encore 23,50 € » ; le paiement est bloqué sur le serveur tant que les règles ne sont pas respectées
Demande de devis
- « Ajouter au devis » à côté ou à la place d'« Ajouter au panier », par groupe, pour les particuliers et les visiteurs
- Masquage des prix en option (« Connectez-vous pour voir les prix », « Prix sur demande »)
- Page de devis avec quantités, société, numéro de TVA et message, avec protection anti-spam
- Réponse dans WooCommerce › Devis avec un prix par ligne et une date de validité
- Lien d'acceptation signé qui expire ; l'acceptation crée une commande « en attente de paiement » avec les mêmes règles de TVA que le paiement
- E-mails pour les devis nouveaux, envoyés et expirés
Inscription des revendeurs
- Page d'inscription avec société, contact, pays, numéro de TVA et consentement
- Le numéro de TVA est vérifié dans VIES
- Validation manuelle, ou automatique quand VIES confirme le numéro de TVA
- Les candidats restent des particuliers jusqu'à leur validation
- Les clients existants peuvent postuler depuis Mon compte
- Nonce, champ piège (honeypot) et limite de requêtes contre le spam
Modes de boutique et cache
- Hybride (par défaut) : les particuliers voient vos prix habituels, les groupes les leurs
- B2B uniquement : seuls les clients professionnels validés voient les prix et peuvent acheter
- En option, tout le catalogue réservé aux clients validés
- Les prix masqués sont retirés de la Store API et du JSON-LD
- Pages privées non mises en cache pour les clients B2B et cookie de groupe signé pour les caches
- Tableau d'état et autotest
Compatibilité
- Blocs panier et commande de WooCommerce, HPOS
- Cartnorm Omnibus
- Germanized (prix à l'unité et mentions de TVA)
- German Market : au mieux, pas encore testé
- WPML et WooCommerce Multilingual
- WP Rocket, LiteSpeed Cache, W3 Total Cache, WP Super Cache, FlyingPress
Données, traductions et développeurs
- La décision de TVA complète est enregistrée dans les métadonnées de la commande pour les plugins de facturation
- Filtres et actions pour les prix, la TVA, les règles de commande, les devis, l'inscription et le cache
- Traductions : allemand (Allemagne, Autriche), polonais, français (France, Belgique), italien, espagnol, néerlandais (Pays-Bas, Belgique)
- Désinstallation propre ; les commandes et les preuves de TVA sont conservées
Une comparaison honnête
Ce que nous avons trouvé dans la documentation publique, les pages produit et les fils de support des principaux plugins de vente en gros pour WooCommerce. Là où ils font plus, nous le disons.
| Ce qu'il faut vérifier | Cartnorm B2B (gratuit) | Plugins de gros typiques |
|---|---|---|
| Prix de groupe, prix par quantité, devis, inscription des revendeurs | Oui | Oui, en général |
| Étendue des extras B2B (commerciaux, sous-comptes, connecteurs ERP …) | Centré sur l'essentiel | Plus large |
| Vérification VIES avec numéro de consultation dans la version gratuite | Oui | Variable, à vérifier avant l'achat |
| Mentions de facture distinctes pour les biens (art. 138) et les services (art. 196) | Oui, en 24 langues | Variable, à vérifier avant l'achat |
| Prix à l'unité recalculé à partir du prix de groupe | Oui (Germanized ou intégré) | Absent d'au moins un plugin majeur |
| Cache des pages pour les clients B2B connectés | Sécurisé automatiquement | Certains éditeurs conseillent de désactiver le cache |
| Prix masqués aussi retirés de la Store API et du JSON-LD | Oui | Variable, à vérifier avant l'achat |
| Page de tarifs | EUR, HT, sans prix barrés | Souvent en USD ; certains affichent des prix barrés « avant » |
Vérifié en octobre 2026. « Typique » résume ce que nous avons vu pour plusieurs plugins majeurs ; ce n'est pas un jugement sur un produit précis. Les plugins évoluent : vérifiez la version actuelle avant de décider. Une erreur ? Écrivez-nous, nous la corrigerons.
Gratuit et Pro
Tout ce qui rend une boutique correcte et sûre est gratuit. Pro s'adresse aux boutiques qui ont besoin de plus d'échelle et de moins de travail manuel.
| Ce que vous obtenez | Gratuit | Pro Bientôt |
|---|---|---|
| Groupes de clients | 2 + particuliers | Illimités |
| Prix par groupe, catégorie, produit et quantité | Oui | Oui |
| Prix par client et grilles tarifaires CSV | — | Oui |
| Affichage HT ou TTC par groupe, prix à l'unité | Oui | Oui |
| Champ numéro de TVA, vérification VIES, TVA à 0 %, mentions en 24 langues, preuves dans les commandes | Oui | Oui |
| Revérification automatique des numéros de TVA des clients validés | — | Oui |
| Règles de commande : montant minimum, quantités minimales et maximales, conditionnements | Oui | Oui |
| Demande de devis, lien d'acceptation, commande créée depuis le devis | Oui | Oui |
| Devis PDF avec lien de paiement et relances | — | Oui |
| Inscription des revendeurs avec validation manuelle ou automatique | Oui | Oui |
| Paiement sur facture avec délai de paiement et plafond de crédit | — | Oui |
| État récapitulatif des ventes intracommunautaires en export CSV et DATEV | — | Oui |
| Modes de boutique, sécurité du cache, prix masqués dans la Store API et le JSON-LD | Oui | Oui |
| Import depuis Wholesale Suite et B2BKing | — | Oui |
Tarifs Pro
Chaque formule contient toutes les fonctions Pro. Vous choisissez seulement le nombre de sites. Prix HT, facturés annuellement.
Cartnorm B2B Pro est en développement et pas encore en vente. Voici les prix qu'il aura. Vous voulez savoir quand il sera prêt ? Nous vous enverrons un seul e-mail.
Une boutique
1 site
99 € / an
Environ 8,25 € par mois, facturé annuellement
Bientôt — me prévenirAucun paiement maintenant. Un seul e-mail au lancement.
Petite agence
5 sites
179 € / an
35,80 € par site
Bientôt — me prévenirAucun paiement maintenant. Un seul e-mail au lancement.
Agence
20 sites
299 € / an
14,95 € par site
Bientôt — me prévenirAucun paiement maintenant. Un seul e-mail au lancement.
Chaque formule comprend
Tout le plugin gratuit
Groupes de clients illimités
Prix par client et grilles tarifaires CSV
Revérification automatique des numéros de TVA
Devis PDF avec lien de paiement et relances
Paiement sur facture avec délai et plafond de crédit
État récapitulatif UE (CSV, DATEV)
Import depuis Wholesale Suite et B2BKing
Prix HT. Essai de 14 jours (carte ou PayPal requis), satisfait ou remboursé pendant 30 jours. Cartnorm B2B Pro est vendu exclusivement aux professionnels. Les paiements sont gérés par Freemius en tant que Merchant of Record.
Essai et remboursement
L'essai de 14 jours demande une carte ou PayPal et ne coûte rien si vous annulez avant la fin. Après un paiement, vous avez 30 jours pour demander le remboursement intégral, sans justification.
Renouvellement
Pro se renouvelle une fois par an au même prix jusqu'à ce que vous annuliez, à tout moment, dans l'espace client. Sans renouvellement, le plugin gratuit continue de fonctionner avec tout ce qui figure dans la colonne « Gratuit » ; les fonctions Pro et les mises à jour s'arrêtent.
TVA et factures
Freemius, Inc. vend Cartnorm B2B Pro en son nom propre, en tant que revendeur et Merchant of Record. Il calcule la TVA de votre pays au paiement et vous envoie une facture.
Questions
Mes clients particuliers voient-ils une différence ?
Non. Les visiteurs et les clients sans groupe sont des « particuliers » et voient exactement les prix que WooCommerce affiche sans le plugin.
Un client peut-il se placer lui-même dans un groupe revendeur ?
Non. Seul le personnel autorisé à gérer WooCommerce ou à modifier les utilisateurs peut changer le groupe d'un client. Le plugin ne reprend jamais un groupe depuis un formulaire d'inscription, de commande ou de compte.
Quand la TVA est-elle à 0 % ?
Seulement si le numéro de TVA est valide dans VIES et que le client se trouve dans un autre pays de l'UE que votre boutique. Les clients de votre pays paient toujours la TVA. Les biens reçoivent la mention de livraison intracommunautaire, les services celle d'autoliquidation.
Que se passe-t-il si VIES est indisponible ?
Le client peut commander quand même. La TVA est appliquée, la commande est marquée « vérification en attente » et le numéro est revérifié automatiquement. Si VIES le confirme ensuite, vous recevez une note de commande pour émettre une facture rectificative.
Puis-je vendre aux particuliers et aux professionnels dans une même boutique ?
Oui, c'est le mode hybride, activé par défaut. Les particuliers et les visiteurs voient vos prix TTC habituels ; les groupes B2B validés voient leurs propres prix, en HT si vous le souhaitez.
Quand puis-je afficher uniquement des prix HT (« B2B uniquement ») ?
Seulement si les particuliers sont effectivement exclus de l'achat : chaque client s'inscrit comme entreprise et vous vérifiez le compte (numéro de TVA, données de la société) avant de le valider. Une mention ou une case « Je suis un professionnel » ne suffit pas, et les particuliers qui peuvent encore commander doivent voir des prix TTC. Utilisez le mode « B2B uniquement » avec validation manuelle, ou validation automatique par VIES. Ceci n'est pas un conseil juridique ; consultez votre avocat ou votre conseiller fiscal.
Un particulier peut-il voir une page en cache avec des prix HT ?
Pas depuis les caches de pages WordPress : les pages des clients B2B sont envoyées en privé et sans stockage, et WP Rocket, LiteSpeed Cache, W3 Total Cache, WP Super Cache et FlyingPress reçoivent l'instruction de ne pas les mettre en cache. Les caches extérieurs à WordPress (hébergeur, Varnish, nginx, Cloudflare) ne peuvent pas être configurés par un plugin ; la documentation donne les règles à ajouter. Lancez l'autotest après chaque changement de cache.
Est-ce compatible avec Cartnorm Omnibus ?
Oui. Les particuliers voient toujours le prix le plus bas sur 30 jours ; les membres des groupes B2B non, car c'est une règle de protection des consommateurs, et Omnibus ne réécrit pas leurs prix de groupe.
Est-ce compatible avec Germanized et German Market ?
Avec Germanized, les prix à l'unité et les mentions de TVA suivent le prix de groupe et l'affichage. German Market n'a pas encore été testé, car nous n'avions pas accès à son code source : les prix de groupe fonctionnent normalement, et les prix à l'unité calculés automatiquement par German Market suivent le prix de groupe.
Que se passe-t-il si je désactive ou supprime le plugin ?
Désactivé : tout le monde revoit vos prix produits habituels ; vos données produit ne sont pas modifiées. Supprimé : réglages, groupes, prix de groupe, règles de quantité, devis, demandes et résultats VIES en cache sont effacés. Les commandes et leurs preuves de TVA sont conservées.
La version gratuite est-elle limitée dans le temps ?
Non. Tout ce qui figure dans la colonne « Gratuit » est gratuit, sans limite de durée. Le plugin ne mentionne Pro que dans une ligne masquable, au bon endroit, et dans son propre onglet « Pro ». Aucune bannière.
Est-ce un conseil fiscal ?
Non. Cartnorm B2B applique les règles générales de l'UE pour les ventes entre entreprises (articles 138 et 196 de la directive 2006/112/CE). Les cas particuliers comme les opérations triangulaires ou les régimes particuliers ne sont pas couverts, et vous restez responsable de vos factures et déclarations. Vérifiez avec votre conseiller fiscal comment ces règles s'appliquent à votre entreprise.
Quand pourrai-je l'utiliser ?
Le plugin gratuit arrive d'abord sur WordPress.org, Pro ensuite. Nous ne donnons pas de dates que nous ne pouvons pas tenir. Écrivez-nous et vous recevrez un e-mail par lancement.
Prêt pour votre premier client professionnel ?
Le plugin gratuit arrive sur WordPress.org. Écrivez-nous et nous vous préviendrons le jour du lancement. En attendant, la documentation montre exactement comment il fonctionne.