Depuis le 1er janvier 2026, les entreprises belges envoient obligatoirement leurs factures par voie électronique via PEPPOL, le réseau sécurisé pour la facturation électronique. Les négoces de boissons, les brasseries et les grossistes se heurtent alors à un problème surprenant : faire figurer correctement la consigne sur les bacs, les bouteilles et les casiers sur la facture électronique. Ce qui fonctionne parfaitement sur papier est parfois rejeté dans les factures PEPPOL.
Dans cet article, vous lisez comment la prise en charge des vidanges dans Odoo a évolué version après version, quand le standard suffit et quand vous avez besoin d'aide supplémentaire. Vous ne connaissez pas encore l'obligation elle-même ? Lisez d'abord pourquoi la facturation électronique via PEPPOL est obligatoire depuis le 1er janvier 2026.
Que dit la norme PEPPOL ?
La norme PEPPOL BIS Billing 3.0 est claire sur les vidanges (vidange/empties/consignes) :
- La consigne doit figurer sur une ligne de facture distincte, séparée des marchandises
- Cette ligne reçoit la catégorie de TVA "E" (Exempt) avec 0 % de TVA
- Un motif d'exonération doit l'accompagner (dans la norme, ce champ s'appelle BT-120)
- Les totaux de TVA doivent être exacts par catégorie : la somme de toutes les lignes E doit correspondre au sous-total E, et de même pour les lignes S
Le groupe de travail belge PEPPOL a détaillé cela dans un scénario spécifique pour les consumer empties. Celui-ci prescrit que le nom du produit sur les lignes de vidanges doit contenir le texte fixe Leeggoed/Vidange/Empties, et que le motif d'exonération dans les totaux de TVA doit être une mention concrète telle que Leeggoed/Vidange/Empties (Saldo consumer empties).
Cela semble simple. Mais la consigne vient rarement seule : la combinaison avec les accises, les cotisations de recyclage et la TVA rend le tout nettement plus complexe dans la pratique.
Comment la prise en charge a-t-elle évolué au fil des versions d'Odoo ?
Ces dernières versions, Odoo a fait de grands pas dans la prise en charge des vidanges sur les factures PEPPOL. Chaque version s'appuie sur la précédente :
| Fonctionnalité | v16 | v17 | v18 | v19 |
|---|---|---|---|---|
| Vidanges sur une ligne de facture distincte | non | oui | oui | oui |
| Catégorie de TVA E sur les lignes de vidanges | non | oui | oui | oui |
| Consigne calculée (type code) | non | non | oui | oui |
| Catégorie de TVA configurable par taxe | non | non | non | oui |
| Motif d'exonération configurable (code VATEX) | non | non | non | oui |
| Motif d'exonération belge pour les vidanges | non | non | non | non* |
* Dans Odoo 19, le motif d'exonération est configurable, mais vous devez saisir vous-même le texte belge pour les vidanges. Il n'existe pas encore de code VATEX officiel spécifique aux consumer empties.
Odoo 16 : les bases
Dans Odoo 16, le module PEPPOL se concentrait sur l'export correct des factures standard. Les taxes fixes comme RECUPEL et BEBAT étaient déjà prises en charge comme suppléments sur la ligne de facture, mais un traitement spécifique pour les vidanges n'existait pas encore. La consigne était traitée comme n'importe quelle autre taxe fixe.
Odoo 17 : la percée
La version 17 a apporté une amélioration importante. L'équipe de développement a ajouté la méthode _split_fixed_taxes au module, qui répartit intelligemment les taxes fixes :
- Les cotisations de recyclage (RECUPEL, AUVIBEL, BEBAT) restent un supplément sur la ligne de facture
- Les vidanges deviennent automatiquement une ligne de facture distincte avec la catégorie de TVA E
La différence réside dans le paramètre include_base_amount sur le code de taxe. S'il est activé, le montant compte dans le calcul de la TVA et Odoo le traite comme une cotisation de recyclage (supplément). S'il est désactivé, il tombe en dehors du calcul de la TVA et devient une vidange (ligne de facture distincte avec la catégorie E). Les tests correspondants le confirment avec une taxe nommée "Vidange".
Le motif d'exonération qu'Odoo 17 envoie dans le XML est toutefois le texte anglais générique "Exempt from tax" (code source). La spécification belge PEPPOL attend ici "Leeggoed/Vidange/Empties (Saldo consumer empties)". Techniquement valide, mais pas conforme à la recommandation belge.
Odoo 18 : une reconnaissance plus large
Odoo 18 a apporté une nouvelle architecture d'export et a élargi la reconnaissance des vidanges. La méthode améliorée reconnaît maintenant aussi la consigne calculée : des taxes qui fonctionnent avec une formule au lieu d'un montant fixe par pièce. C'est important pour les fournisseurs de boissons avec des calculs de consigne plus complexes basés sur la configuration du produit.
En outre, des méthodes utilitaires claires sont apparues, qui font la distinction entre les cotisations de recyclage, les accises et les vidanges. Ici aussi, le motif d'exonération reste "Exempt from tax".
Odoo 19 : configuration complète
Odoo 19 va encore plus loin avec un champ de catégorie de TVA configurable directement sur le code de taxe. Vous définissez maintenant explicitement par taxe quelle catégorie PEPPOL (S, E, AE, K, G, ...) doit être utilisée. Plus aucune devinette de la part du système.
Il en va de même pour le motif d'exonération: une liste déroulante avec tous les codes VATEX officiels, les codes standard européens qui indiquent la raison d'une exonération de TVA. Dans les versions précédentes, on trouvait ici le texte fixe "Exempt from tax". Odoo 19 ne contient toutefois pas de code VATEX spécifique pour les vidanges, parce que celui-ci n'existe pas encore au niveau européen. Vous devez donc toujours configurer manuellement le texte belge pour les vidanges.
Quand le standard suffit-il ?
Pour beaucoup d'entreprises, Odoo 18 ou 19 standard fonctionne très bien. Si vous remplissez ces conditions, vous n'avez probablement pas besoin de modules supplémentaires :
- Votre consigne est configurée comme une taxe fixe (fixed tax) par pièce
- L'option
include_base_amountest désactivée sur votre taxe de consigne - Vous ne travaillez pas avec des accises incluses dans le prix sur les mêmes produits
- Vous facturez dans des scénarios relativement simples, sans combinaisons complexes
Vous voulez vérifier plus largement si vous êtes prêt pour la facturation électronique ? Sur notre page de conseils PEPPOL nous listons les principaux points d'attention.
Quand avez-vous besoin de plus ?
Dans la pratique, nous voyons que les entreprises du secteur des boissons tombent souvent juste en dehors de ce standard. Quelques situations fréquentes :
Versions d'Odoo plus anciennes
Vous tournez encore sous Odoo 16 ? Alors la prise en charge des vidanges pour PEPPOL n'est pas encore dans le standard. Sur la version 17, cela fonctionne pour les montants fixes, mais pas pour la consigne calculée. Vous envisagez une mise à niveau ? Lisez alors ce qu'implique une migration vers une nouvelle version d'Odoo.
Calculs de consigne complexes
Des bacs de 24 bouteilles, des bouteilles de retour à un autre tarif que les neuves, des combinaisons de casiers et de bouteilles : ce type de calcul utilise souvent une taxe basée sur une formule. Le traitement correct de ces cas n'est disponible qu'à partir d'Odoo 18.
Taxes incluses dans le prix
Pour les boissons, des accises ou des cotisations de recyclage sont souvent intégrées dans le prix de vente. En combinaison avec des lignes de vidanges, cela peut mener à des écarts d'arrondi dans les totaux de TVA. La validation PEPPOL est stricte : un cent de différence et votre facture est rejetée.
Motif d'exonération et nom du produit
Dans Odoo 17 et 18, le motif d'exonération sur les lignes de vidanges est le texte anglais générique "Exempt from tax". La spécification belge PEPPOL attend ici une mention trilingue plus précise : "Leeggoed/Vidange/Empties (Saldo consumer empties)". Ce n'est que dans Odoo 19 que le motif d'exonération est librement configurable, mais le texte belge pour les vidanges ne figure pas par défaut dans la liste déroulante.
En outre, la spécification attend le nom de produit fixe "Leeggoed/Vidange/Empties" sur les lignes de vidanges. Odoo reprend ici le nom du code de taxe, ce qui s'écarte de cette convention.
Comment abordons-nous cela ?
Nous avons développé des modules Odoo spécifiques qui fonctionnent par-dessus l'export PEPPOL standard. Le principe de départ : votre façon de travailler dans Odoo ne change pas. Votre comptabilité, vos codes de taxes, vos factures pdf : tout reste identique. Les modules adaptent uniquement l'export XML pour que :
- Les vidanges apparaissent comme des lignes de facture distinctes avec la catégorie de TVA E et le motif d'exonération corrects
- Le nom du produit sur les lignes de vidanges contient automatiquement le texte trilingue prescrit
- Les totaux de TVA s'additionnent correctement, même avec des combinaisons complexes de consignes, d'accises et de remises
- Cela fonctionne sur toutes les versions d'Odoo, quelle que soit la prise en charge standard
Nous nous appuyons pour cela autant que possible sur l'architecture propre d'Odoo. Les liens vers le code source dans cet article montrent que nous connaissons le standard à fond. Nous complétons ainsi précisément là où c'est nécessaire, sans dupliquer le standard. Cette philosophie, le standard autant que possible et du développement sur mesure uniquement là où c'est rentable, nous l'appliquons à toute votre comptabilité. Vous en apprenez plus sur la comptabilité avec Odoo.
Cela ne concerne-t-il que les fournisseurs de boissons ?
Non. Nous rencontrons le problème le plus souvent chez les négoces de boissons et les brasseries, mais il concerne tous ceux qui travaillent avec des consignes : bouteilles de gaz, consigne sur les palettes, emballages réutilisables dans l'industrie alimentaire. Partout où vous envoyez quelque chose que le client peut rapporter.
Des erreurs de validation avec les vidanges ?
Vous reconnaissez des problèmes lors de l'envoi de factures électroniques avec consigne ? Ou voulez-vous être sûr que tout est correct avant que cela n'arrive chez vos clients ? Planifiez un entretien de découverte sans engagement.
La consigne correcte sur votre facture PEPPOL ?
Trente minutes, des réponses concrètes à votre situation.
Planifier un entretien de découverte