Peppol & e-facturatie
Peppol: reden zonder btw
Controleer bij een Peppol-factuur een btw-vrijstellingsreden op haar eigen plaats in de btw-uitsplitsing. Een zin in de algemene factuurnotitie is een ander veld. Houd vervolgens drie vragen apart: is het redenveld aanwezig, past een ingevulde code in de gebruikte lijst en is de gekozen btw-behandeling inhoudelijk juist?
Zoek de categorie en reden in dezelfde groep. Lees code en tekst afzonderlijk terug en bewaar een regelmelding bij de exportversie. Ons fictieve voorbeeld laat zien dat een aanwezige code nog geen geldige lijstwaarde is. De controle kiest geen vrijstelling voor een echte levering.
Begin bij de btw-uitsplitsing, niet bij de notitie
De officiële TaxCategory binnen de btw-uitsplitsing staat onder cac:TaxTotal / cac:TaxSubtotal. In deze groep staan de categoriecode en de velden voor de reden. De bovenliggende structuur bepaalt welke gegevens je bekijkt.
Vergelijk daarvoor ook de categorie en bedragen bij de juiste btw-groep. Een aangetroffen tarief of bedrag vertelt op zichzelf nog niet waar de reden is opgenomen. Neem bij meerdere groepen de betreffende categorie mee in je notitie.
Een algemene factuurnotitie of regelnotitie heeft een eigen functie. Onze werkwijze is om in een viewer eerst de btw-groep te laten aanwijzen en pas daarna de bijbehorende tekst. Zo wordt een zichtbare opmerking niet stilzwijgend als een ander gestructureerd veld behandeld.
Lees code en tekst als twee afzonderlijke velden
TaxExemptionReasonCode, BT-121 is de gecodeerde reden. TaxExemptionReason, BT-120 bevat de tekstuele reden waarom geen btw wordt berekend of waarom een bedrag is vrijgesteld. De syntax noemt voor ieder van deze velden afzonderlijk 0..1.
Die cardinaliteit is geen algemene vrijstelling van verdere regels. Een veld kan in de structuur optioneel zijn, terwijl een regel het voor een bepaalde categorie verlangt. Laat in de export zien of je een code-element, een tekstelement of alleen een opmerking elders hebt gevonden. Een pdf-label “reden” is daarvoor minder precies dan de werkelijke veldplaats.
Schrijf op je eigen blad documentnummer, exportversie, categorie, codewaarde en redenstekst. Laat een niet gevonden waarde zichtbaar open. Vul niet zelf een wettelijke grond in omdat het pakket een invoervak leeg toont.
Controleer de voorwaarde voor de gekozen categorie
BR-E-10 verlangt bij categorie E, “Exempt from VAT”, een reden als code óf als tekst in de btw-uitsplitsing. De gepubliceerde test kijkt naar het bestaan van deze elementen binnen de betreffende TaxCategory met btw-schema VAT. Een algemene documentnotitie wordt in die test niet als redenveld gelezen.
Houd die aanwezigheidstoets beperkt. Zij controleert niet of een vrij geformuleerde tekst de feitelijke levering juist omschrijft. Ook een aanwezig code-element moet nog langs de eigen codelijstcontrole. Een schermafbeelding met een ingevuld vak beantwoordt niet al deze vragen.
Laat de inhoudelijke btw-keuze eerst onderbouwen door degene die de factuur fiscaal beoordeelt. Wij nemen categorie E in de oefening uitsluitend als gegeven aan. Deze tekst behandelt geen Nederlandse vrijstellingsgrond, KOR-toepassing of beoordeling van een echte activiteit.
Eigen proef VR2810: vier onvolledige exports
We maken vier eigen XML-fragmenten met telkens één btw-groep: categorie E en schema VAT. Bedragen, partijen en andere verplichte factuuronderdelen ontbreken. De oefentekst is “OEFEN: reden nog inhoudelijk vast te stellen”. Zij is bewust geen bruikbare fiscale motivering voor een echte factuur.
| Variant | Wat staat op welke plek? |
|---|---|
| A · alleen notitie | Oefentekst in de documentnotitie; geen redenveld in de btw-groep. |
| B · redenstekst | Dezelfde oefentekst staat nu in TaxExemptionReason binnen de groep. |
| C · eigen code | TaxExemptionReasonCode bevat de verzonnen waarde OEFEN-CODE. |
| D · documentatiecode | TaxExemptionReasonCode bevat VATEX-EU-132, als leesvoorbeeld uit de officiële lijst. |
We lezen de vier fragmenten uit met een namespacebewuste parser en vergelijken de uitkomst met een apart vastgelegde matrix. In A ontbreekt het onderzochte redenveld. In B, C en D is een redenveld aanwezig: drie van de vier varianten. De tekstplaats maakt dus verschil tussen A en B, ook al zijn de woorden gelijk.
Er staan twee codewaarden in de fragmenten. Van die twee komt alleen de documentaire waarde in de geraadpleegde lijst voor; OEFEN-CODE ontbreekt. Dat is een beperkte vergelijking van vier zelfgemaakte fragmenten. We hebben geen XSD- of Schematron-validator op een volledige factuur uitgevoerd en geen bericht verzonden.
Een gevulde code is nog geen passende lijstwaarde
BR-CL-22 controleert het gebruik van waarden uit VATEX. In onze proef verklaart dit waarom de aanwezigheid van OEFEN-CODE bij C geen voldoende eindcontrole is. Bewaar de oorspronkelijke code en de melding; vervang haar niet willekeurig door de eerste code die een lijstcontrole passeert.
De officiële VATEX-lijst omschrijft VATEX-EU-132 als een verwijzing naar artikel 132 van Richtlijn 2006/112/EG, voor bepaalde activiteiten van algemeen belang. Wij gebruiken alleen deze lijstvermelding als documentatievoorbeeld. We hebben de richtlijnvoorwaarden of de toepassing op een organisatie niet beoordeeld.
Ook D bewijst daarom geen recht op vrijstelling. Vraag welke inhoudelijke grond voor de eigen levering geldt en welke ondersteunde code of tekst daarbij hoort. Houd het fiscale antwoord bij het dossier, apart van het resultaat van een technische aanwezigheid- of lijstcontrole.
Neem een reden niet automatisch over naar categorie Z
BR-Z-10 zegt juist dat een btw-uitsplitsing met categorie Z, “Zero rated”, geen reden-code of redenstekst bevat. De regels voor E en Z zijn dus niet uitwisselbaar. “Er staat geen btw-bedrag” is geen voldoende aanwijzing om zelf één categorie te kiezen.
Kopieer bij een ander factuurconcept daarom niet alleen de tekstinstelling. Laat categorie en inhoudelijke behandeling samen controleren. In VR2810 veranderen we E niet in Z en onderzoeken we geen andere btw-categorieën of landuitzonderingen. Een extra tekst toevoegen kan een onjuiste categoriekeuze niet herstellen.
Bewaar veldplaats, regelmelding en nieuwe export samen
Een concrete leveranciersvraag over A luidt: “Waar komt onze vastgestelde reden terecht in de TaxCategory van de btw-uitsplitsing?” Bij C komt daar de vraag bij welke broninstelling OEFEN-CODE oplevert. Vermeld de bekeken versie en het betrokken veld, zodat de leverancier het verschil kan terugvinden.
Laat een verklaarde bronfout via het pakket herstellen en open de opvolgende export. Controleer de gewijzigde groep en de velden die gelijk moesten blijven. Vraag daarnaast het volledige validatierapport voor die versie en de inhoudelijke btw-beoordeling. Onze veldvergelijking vervangt geen van beide.
Officiële bronnen en proefgrenzen
Acht officiële OpenPeppol-pagina's rechtstreeks gecontroleerd op 28 oktober 2026. De gebruikte productiedocumentatie toont May 2026 Release. Testdocumentatie voor een latere release is niet gebruikt. Van VATEX zijn de kop, het veldgebruik en de volledige vermelding VATEX-EU-132 gelezen; andere vrijstellingsgronden zijn niet volledig onderzocht. VR2810 is een eigen fictieve proef, zonder werkelijk pakket, volledige factuurvalidatie, fiscale kwalificatie of verzending.
- OpenPeppol: actuele productiedocumentatie en releaselabel
- OpenPeppol: TaxCategory in de btw-uitsplitsing
- OpenPeppol: reden-code BT-121
- OpenPeppol: redenstekst BT-120
- BR-E-10: aanwezigheid van een reden bij categorie E
- BR-Z-10: geen redenvelden bij categorie Z
- BR-CL-22: controle van de VATEX-lijst
- VATEX: documentatiecode VATEX-EU-132