
Empêcher les coupons de faire vendre sous le coût produit dans WooCommerce
Contrôlez la marge après code promo avec les coûts natifs WooCommerce : observation d’abord, puis blocage testé en validation classique et Blocks.
Pour empêcher la vente à perte dans WooCommerce, commencez par contrôler ce que rapporte chaque ligne produit après les remises. Le total du panier peut masquer un produit vendu sous son coût. JeyTech Below Cost Guard Free compare la recette produit hors taxes aux coûts natifs et à une marge minimale facultative. Ce seuil technique ne certifie pas le respect du seuil légal de revente à perte.
Commencez en observation : les constats sont enregistrés et le paiement reste possible. Activez le blocage après avoir vérifié les coûts et vos combinaisons de codes promo.
Ce que couvre le seuil de marge
Free lit les coûts des marchandises natifs WooCommerce (COGS) des produits simples et variations. Il contrôle les coupons natifs en pourcentage, à montant fixe par produit ou par panier, après leur répartition par WooCommerce. Les coupons cumulés sont vérifiés à travers les totaux obtenus. L’extension ne réduit pas un code promo et n’augmente pas un prix pour faire passer le panier.
Les restrictions natives des coupons comprennent le minimum de commande et les exclusions de produits ; elles ne calculent pas ce seuil de coût et de marge par ligne. La documentation des COGS natifs explique leur activation et la saisie des coûts. Les captures sont en anglais ; les libellés anglais ci-dessous servent de repères.
1. Activer les coûts natifs et renseigner le catalogue
Sur une préproduction, installez Free 1.0.0 avec WordPress 6.7+, WooCommerce 10.3+ et PHP 7.4+. Ouvrez WooCommerce → Réglages → Avancé → Fonctionnalités, activez Cost of Goods Sold et enregistrez.
Modifiez un produit simple dans Produits → Tous les produits → Données produit → Général. Saisissez un Cost of Goods natif positif hors taxes par unité, par exemple 80 €, puis enregistrez. Un produit variable peut fournir un coût par défaut sur le parent et un coût propre à chaque variation. Vérifiez le coût effectif de toutes les variations vendues.
L’extension ne lit pas les champs de coût arbitraires d’autres extensions. Un coût absent ou nul constitue un défaut de couverture, y compris pour un produit dont le coût d’acquisition est volontairement nul.
Résultat attendu : chaque produit du test possède un coût natif positif utilisable dans la devise de la boutique.
2. Observer avant de bloquer
Ouvrez WooCommerce → Réglages → Avancé → Below Cost Guard. Gardez Mode → Observe and log, sélectionné par défaut, et réglez Minimum product margin (%) sur 20 pour cet exemple. Enregistrez.
La marge est une part du chiffre d’affaires, pas une majoration du coût :
recette produit HT requise = coût unitaire × quantité ÷ (1 − marge / 100)
Un coût de 80 € avec 20 % de marge exige 100 € après remises, hors taxes, pour une unité. À 0 %, le seuil correspond au coût produit. La marge peut aller de 0 à 99 %.
Soumettez une commande de test dont la ligne produit remisée vaut 99 € HT. Ouvrez WooCommerce → État → Journaux, source jeytech-below-cost-guard, puis vérifiez les ID de produit, le mode et les diagnostics.
Résultat attendu : l’observation consigne la ligne à 99 € sous son seuil de 100 €, tout en permettant le paiement avec votre moyen de test.

Cette capture montre déjà le blocage et une marge de 0 %. Utilisez Observe and log et 20 % pour suivre l’étape d’observation.
3. Tester le seuil en validation classique et Blocks
Sur la préproduction, sélectionnez Mode → Block checkout payment et enregistrez. Soumettez une validation classique, puis une validation Checkout Blocks, avec un moyen de paiement de test. Préparez prix et coupons natifs pour obtenir les totaux de ligne produit HT suivants, sans vous baser sur le total du panier :
| Coût et marge | Recette finale de ligne | Résultat attendu du contrôle |
|---|---|---|
| 80 €, 20 %, quantité 1 | 100 € | Seuil respecté. |
| 80 €, 20 %, quantité 1 | 99,99 € | Paiement refusé. |
| 80 €, 20 %, quantité 2 | 200 € | Seuil respecté. |
| Coût absent ou nul | Tout montant | Paiement refusé. |
Recommencez avec les coupons fixes par produit, en pourcentage et fixes par panier, puis avec un cumul autorisé. Ajoutez un second produit rentable : il ne doit pas compenser la première ligne déficitaire. Les autres contrôles WooCommerce peuvent toujours refuser un panier qui respecte la marge.
Le serveur valide le panier et contrôle la commande finale avant le traitement standard du paiement. Le client voit une erreur neutre, sans vos coûts ni vos marges. Lors d’un refus final d’une commande impayée, les réservations temporaires de stock et de coupons sont libérées. Une commande impayée peut rester dans la liste pour examen et nouvel essai ; l’extension ne l’annule pas automatiquement et ne rembourse pas les commandes payées.
Résultat attendu : les deux parcours refusent le paiement sous le seuil et laissent passer les montants suffisants, sous réserve des contrôles habituels.
4. Comprendre les refus stricts et tester votre parcours réel
En observation, examinez les constats avant d’activer le blocage en production. Le blocage refuse aussi les COGS désactivés, une devise de commande différente de celle de la boutique et les remises sous forme de frais négatifs impossibles à répartir sur les lignes. Corrigez les causes puis rejouez les tests concernés avant de changer le mode en production.
Vérifiez votre thème, vos passerelles et vos extensions promotionnelles en préproduction. La validation native du paiement d’une commande existante est incluse ; les montants modifiés après les contrôles pris en charge demandent une validation séparée. Aucune compatibilité générale n’est promise pour les lots, abonnements, acomptes, coûts tiers ou conversions de devises.
Résultat attendu : les produits correctement renseignés peuvent passer, les coûts inconnus sont identifiés et votre parcours réel est testé avant le blocage en production.
Ce qu’ajoute Pro
Below Cost Guard Pro ajoute des marges par produit, variation et catégorie, une réserve de coût fixe par unité vendue, ainsi qu’un journal marchand borné exportable en CSV. La marge globale Free reste un minimum : une règle Pro inférieure ne l’abaisse pas. La réserve reste une estimation, sans lecture des vrais frais de paiement ou de livraison.
Gardez Free actif et consultez le guide d’installation Below Cost Guard Pro pour les priorités, les exemples de réserve et les limites du journal.
Un seuil produit ne garantit ni bénéfice ni conformité
Les recettes de livraison et les frais positifs ne compensent pas une ligne déficitaire. Free ne rapproche pas les coûts réels de livraison, les frais de paiement, la publicité, les frais de fonctionnement ou les remboursements.
En France, le seuil légal de revente à perte repose sur un prix d’achat effectif comportant des ajustements et des exceptions. Un coût COGS n’est pas automatiquement ce seuil. L’extension ne certifie pas la conformité à l’article L442-5 du Code de commerce.
À lire ensuite : Afficher le prix au kilo ou au litre pour la comparaison des conditionnements, ou auditer les prix de référence des promotions pour un autre contrôle des prix.