Overslaan naar inhoud

Leeggoed en PEPPOL: een uitdaging die Odoo steeds beter aanpakt

Statiegeld correct op je elektronische factuur: waar de Odoo-standaard al volstaat en waar je moet bijsturen
27 februari 2026 in
Leeggoed en PEPPOL: een uitdaging die Odoo steeds beter aanpakt
Abstractive BV, Vincent Baggerman
In het kort. Odoo ondersteunt leeggoed in PEPPOL-facturen elke versie beter. Sinds Odoo 17 komt statiegeld automatisch op een aparte factuurregel, en in Odoo 19 stel je de btw-categorie en vrijstellingsreden zelf in. De specifieke Belgische leeggoedtekst zit nog niet standaard in Odoo, en bij complexere scenario's heb je extra modules nodig.

Sinds 1 januari 2026 versturen Belgische bedrijven hun facturen verplicht elektronisch via PEPPOL, het beveiligde netwerk voor e-facturatie. Drankenhandels, brouwerijen en groothandels botsen daarbij op een verrassend probleem: statiegeld op bakken, flessen en kratten correct op de elektronische factuur krijgen. Wat op papier prima werkt, wordt bij PEPPOL-facturen soms afgekeurd.

In dit artikel lees je hoe de leeggoedondersteuning in Odoo versie na versie evolueerde, wanneer de standaard volstaat en wanneer je extra hulp nodig hebt. Nog niet vertrouwd met de verplichting zelf? Lees dan eerst waarom elektronische facturatie via PEPPOL verplicht is sinds 1 januari 2026.

Wat zegt de PEPPOL-standaard?

De PEPPOL BIS Billing 3.0-standaard is helder over leeggoed (vidange/empties/consignes):

  • Statiegeld hoort op een aparte factuurregel, gescheiden van de handelsgoederen
  • Die regel krijgt btw-categorie "E" (Exempt) met 0% btw
  • Er moet een vrijstellingsreden bij staan (in de standaard heet dat veld BT-120)
  • De btw-totalen moeten per categorie exact kloppen: de som van alle E-regels moet overeenkomen met het E-subtotaal, en hetzelfde voor S-regels

De Belgische PEPPOL-werkgroep heeft dit verder uitgewerkt in een specifiek scenario voor consumer empties. Die schrijft voor dat de productnaam op leeggoedregels de vaste tekst Leeggoed/Vidange/Empties moet bevatten, en dat de vrijstellingsreden in de btw-totalen een concrete vermelding moet zijn zoals Leeggoed/Vidange/Empties (Saldo consumer empties).

Klinkt eenvoudig. Maar statiegeld komt zelden alleen: de combinatie met accijnzen, recyclagebijdragen en btw maakt het in de praktijk een stuk complexer.

Hoe evolueerde de ondersteuning doorheen de Odoo-versies?

Odoo zette de afgelopen versies flinke stappen in de ondersteuning van leeggoed op PEPPOL-facturen. Elke versie bouwt voort op de vorige:

Functionaliteit v16 v17 v18 v19
Leeggoed als aparte factuurregel nee ja ja ja
Btw-categorie E op leeggoedregels nee ja ja ja
Berekend statiegeld (code-type) nee nee ja ja
Configureerbare btw-categorie per belasting nee nee nee ja
Configureerbare vrijstellingsreden (VATEX-code) nee nee nee ja
Belgische vrijstellingsreden voor leeggoed nee nee nee nee*

* In Odoo 19 is de vrijstellingsreden configureerbaar, maar de Belgische leeggoedtekst moet je zelf invullen. Er bestaat nog geen officiële VATEX-code specifiek voor consumer empties.

Odoo 16: de basis

In Odoo 16 lag de focus van de PEPPOL-module op het correct exporteren van standaardfacturen. Vaste belastingen zoals RECUPEL en BEBAT werden al ondersteund als toeslagen op de factuurregel, maar een specifieke behandeling voor leeggoed was er nog niet. Statiegeld werd behandeld als elke andere vaste belasting.

Odoo 17: de doorbraak

Met versie 17 kwam een belangrijke verbetering. Het development team voegde de methode _split_fixed_taxes toe, die vaste belastingen slim opsplitst:

  • Recyclagebijdragen (RECUPEL, AUVIBEL, BEBAT) blijven een toeslag op de factuurregel
  • Leeggoed wordt automatisch een aparte factuurregel met btw-categorie E

Het verschil zit in de instelling include_base_amount op de belastingcode. Staat die aan, dan telt het bedrag mee in de btw-berekening en behandelt Odoo het als recyclagebijdrage (toeslag). Staat die uit, dan valt het buiten de btw-berekening en wordt het leeggoed (aparte factuurregel met categorie E). De bijhorende tests bevestigen dit met een belasting genaamd "Vidange".

De vrijstellingsreden die Odoo 17 meestuurt in de XML is echter de generieke Engelse tekst "Exempt from tax" (broncode). De Belgische PEPPOL-specificatie verwacht hier "Leeggoed/Vidange/Empties (Saldo consumer empties)". Technisch geldig, maar niet conform de Belgische aanbeveling.

Odoo 18: bredere herkenning

Odoo 18 bracht een nieuwe exportarchitectuur en breidde de leeggoedherkenning uit. De verbeterde methode herkent nu ook berekend statiegeld: belastingen die met een formule werken in plaats van met een vast bedrag per stuk. Dat is belangrijk voor drankenleveranciers met complexere statiegeldberekeningen op basis van productconfiguratie.

Daarnaast kwamen er duidelijke helper-methoden die het onderscheid maken tussen recyclagebijdragen, accijnzen en leeggoed. De vrijstellingsreden blijft ook hier "Exempt from tax".

Odoo 19: volledige configuratie

Odoo 19 gaat een stap verder met een configureerbaar btw-categorieveld rechtstreeks op de belastingcode. Je stelt nu per belasting expliciet in welke PEPPOL-categorie (S, E, AE, K, G, ...) gebruikt moet worden. Geen giswerk door het systeem meer.

Hetzelfde geldt voor de vrijstellingsreden: een keuzelijst met alle officiële VATEX-codes, de Europese standaardcodes die de reden van een btw-vrijstelling aanduiden. In eerdere versies stond hier de vaste tekst "Exempt from tax". Odoo 19 bevat echter geen specifieke VATEX-code voor leeggoed, omdat die op Europees niveau nog niet bestaat. De Belgische leeggoedtekst moet je dus nog steeds handmatig configureren.

Wanneer volstaat de standaard?

Voor veel bedrijven werkt standaard Odoo 18 of 19 prima. Voldoe je aan deze voorwaarden, dan heb je waarschijnlijk geen extra modules nodig:

  • Je statiegeld is geconfigureerd als een vaste belasting (fixed tax) per stuk
  • De optie include_base_amount staat uit op je statiegeldbelasting
  • Je werkt niet met prijsinclusieve accijnzen op dezelfde producten
  • Je factureert in relatief eenvoudige scenario's zonder complexe combinaties

Wil je breder controleren of je klaar bent voor elektronische facturatie? Op onze pagina met PEPPOL-tips zetten we de belangrijkste aandachtspunten op een rij.

Wanneer heb je meer nodig?

In de praktijk zien we dat bedrijven in de drankenbranche vaak net buiten deze standaard vallen. Enkele veelvoorkomende situaties:

Oudere Odoo-versies

Draai je nog op Odoo 16? Dan zit leeggoedondersteuning voor PEPPOL nog niet in de standaard. Op versie 17 werkt het voor vaste bedragen, maar niet voor berekend statiegeld. Overweeg je een upgrade? Lees dan wat er komt kijken bij een migratie naar een nieuwe Odoo-versie.

Complexe statiegeldberekeningen

Bakken met 24 flessen, retourflessen met een ander tarief dan nieuwe, combinaties van kratten en flessen: dit soort berekeningen gebruikt vaak een formule-gebaseerde belasting. De correcte afhandeling daarvan is pas beschikbaar vanaf Odoo 18.

Prijsinclusieve heffingen

Bij dranken zitten er vaak accijnzen of recyclagebijdragen verwerkt in de verkoopprijs. In combinatie met leeggoedregels kan dat leiden tot afrondingsverschillen in de btw-totalen. De PEPPOL-validatie is streng: één cent verschil en je factuur wordt afgekeurd.

Vrijstellingsreden en productnaam

In Odoo 17 en 18 is de vrijstellingsreden op leeggoedregels de generieke Engelse tekst "Exempt from tax". De Belgische PEPPOL-specificatie verwacht hier een specifiekere drietalige vermelding: "Leeggoed/Vidange/Empties (Saldo consumer empties)". Pas in Odoo 19 is de vrijstellingsreden vrij configureerbaar, maar de Belgische leeggoedtekst zit niet standaard in de keuzelijst.

Daarnaast verwacht de specificatie de vaste productnaam "Leeggoed/Vidange/Empties" op leeggoedregels. Odoo neemt hier de naam van de belastingcode over, wat afwijkt van die conventie.

Hoe pakken wij dit aan?

Wij ontwikkelden specifieke Odoo-modules die bovenop de standaard PEPPOL-export werken. Het uitgangspunt: je werkwijze in Odoo verandert niet. Je boekhouding, je belastingcodes, je pdf-facturen: alles blijft hetzelfde. De modules passen enkel de XML-export aan zodat:

  • Leeggoed als aparte factuurregels verschijnt met de correcte btw-categorie E en vrijstellingsreden
  • De productnaam op leeggoedregels automatisch de voorgeschreven drietalige tekst bevat
  • De btw-totalen correct optellen, ook bij complexe combinaties van statiegeld, accijnzen en kortingen
  • Het werkt op alle Odoo-versies, ongeacht de standaard ondersteuning

We bouwen daarbij zoveel mogelijk voort op Odoo's eigen architectuur. De broncode-links in dit artikel tonen dat we de standaard grondig kennen. Zo vullen we precies aan waar het nodig is, zonder de standaard te dupliceren. Die filosofie, zo veel mogelijk standaard en maatwerk alleen waar het rendeert, trekken we door in heel je boekhouding. Meer daarover lees je op boekhouden met Odoo.

Speelt dit alleen bij drankenleveranciers?

Nee. We komen het probleem het vaakst tegen bij drankenhandels en brouwerijen, maar het speelt bij iedereen die met deposito's werkt: gasflessen, palletstatiegeld, herbruikbare verpakkingen in de voedingsindustrie. Overal waar je iets meestuurt dat de klant kan terugbrengen.

Validatiefouten met leeggoed?

Herken je problemen bij het versturen van elektronische facturen met statiegeld? Of wil je zeker zijn dat alles correct is voordat het bij je klanten terechtkomt? Plan een vrijblijvend kennismakingsgesprek: geen salespitch, wel concrete antwoorden op jouw situatie.

Statiegeld correct op je PEPPOL-factuur?

Dertig minuten, concrete antwoorden op jouw situatie.

Plan een kennismakingsgesprek
Insights
Migreren naar een nieuwe Odoo-versie: wat komt erbij kijken?
Waarom regelmatig upgraden loont, wie wat doet en hoe wij elke migratie in twee overzichtelijke fases aanpakken.