Naar hoofdinhoud
EN 16931 · btw-categorieën

Fouten BR-E-10, BR-AE-10, BR-IC-10 en BR-G-10: de btw-vrijstellingsreden

Elke btw-uitsplitsing in een e-factuur krijgt een categorie: S voor het algemene tarief, E voor vrijgesteld, AE voor verlegging, K voor intracommunautaire levering, G voor export, O voor buiten het toepassingsgebied, Z voor nultarief. Vijf van die categorieën vereisen een reden waarom er geen btw is, en twee verbieden die. Het is regel nummer 10 van elke familie, en hij faalt wanneer de categorie niet overeenkomt met de Odoo-belasting.

FlexigoTech · Verantwoordelijk: Víctor Gómez · Bijgewerkt op 4 november 2026

In het kort

Versies
Odoo 17, 18, 19 en 20
Gecontroleerd
in de broncode van de module, versie 17.0 en 20.0 · in de bronnen onderaan
Leestijd
4 min

De zeven regels, met de tekst van het EN 16931 Schematron (validation-1.3.17). Alle zijn fataal:

RegelCategorieTekst
BR-E-10E, vrijgesteldA VAT breakdown (BG-23) with VAT Category code (BT-118) "Exempt from VAT" shall have a VAT exemption reason code (BT-121) or a VAT exemption reason text (BT-120).
BR-AE-10AE, verleggingA VAT breakdown (BG-23) with VAT Category code (BT-118) "Reverse charge" shall have a VAT exemption reason code (BT-121), meaning "Reverse charge" or the VAT exemption reason text (BT-120) "Reverse charge" (or the equivalent standard text in another language).
BR-IC-10K, intracommunautairA VAT breakdown (BG-23) with the VAT Category code (BT-118) "Intra-community supply" shall have a VAT exemption reason code (BT-121), meaning "Intra-community supply" or the VAT exemption reason text (BT-120) "Intra-community supply" (or the equivalent standard text in another language).
BR-G-10G, exportA VAT breakdown (BG-23) with the VAT Category code (BT-118) "Export outside the EU" shall have a VAT exemption reason code (BT-121), meaning "Export outside the EU" or the VAT exemption reason text (BT-120) "Export outside the EU" (or the equivalent standard text in another language).
BR-O-10O, buiten toepassingsgebiedA VAT breakdown (BG-23) with VAT Category code (BT-118) " Not subject to VAT" shall have a VAT exemption reason code (BT-121), meaning " Not subject to VAT" or a VAT exemption reason text (BT-120) " Not subject to VAT" (or the equivalent standard text in another language).
BR-S-10S, algemeenA VAT breakdown (BG-23) with VAT Category code (BT-118) "Standard rate" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).
BR-Z-10Z, nultariefA VAT breakdown (BG-23) with VAT Category code (BT-118) "Zero rated" shall not have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120).

De reden kan als code (BT-121, uit de VATEX-lijst) of als tekst (BT-120). Voor E volstaat een van beide; voor AE, K, G en O moeten de code of de tekst precies dat betekenen: "Reverse charge", "Intra-community supply"… De overige regels van elke familie (BR-E-08, BR-AE-08 en de rest) gaan over bedragen; hier gaat het alleen om de reden.

Kaart met de vrijstellingsregels van EN 16931
Vijf categorieën vereisen een reden (E, AE, K, G, O) en twee verbieden die (S, Z).

Hoe Odoo de categorie bepaalt

Hier verschillen de versies:

  • Odoo 17 en 18: standaard heeft de belasting geen categorieveld en leidt Odoo die af: voor een Spaanse klant met een postcode die begint met 35 of 38 (Canarische Eilanden), L, en met 51 of 52 (Ceuta en Melilla), M; E als de belasting 0% is en verkoper en klant in hetzelfde land zitten; AE bij de Belgische verlegging van medecontractant of bij de zelffactuur met een verleggingsbelasting; met btw-nummer van de verkoper en een belasting van 0%, K als beide in de EER zitten en G als slechts één dat doet; anders S als de belasting een percentage heeft en E als die 0% is. De standaardmodule account_edi_ubl_cii_tax_extension (Tax extension for UBL/CII), die niet automatisch wordt geïnstalleerd, voegt aan de belasting Tax Category Code en Tax Exemption Reason Code toe: zodra de categorie is ingesteld, gebruikt Odoo die in plaats van af te leiden.
  • Odoo 19: elke belasting heeft Tax Category Code (AE, E, S, Z, G, O, K, L, M, B) en Tax Exemption Reason Code, met de VATEX-lijst.
  • Odoo 20: dezelfde twee velden plus Tax Exemption Reason, een vrije tekst.
  • In alle vier de versies: als een categorie E zonder reden blijft, schrijft Odoo de tekst "Exempt from tax", die voldoet aan BR-E-10.

De gebruikelijke valkuil van Odoo 17 en 18 zonder die module is een belasting van 0% voor een dienst buiten het toepassingsgebied van de btw, die het afleiden nooit als O markeert, of een binnenlandse verkoop met verlegging: de categorie wijkt af van wat je accountant verwacht.

Met onze XRechnung- en ZUGFeRD-module

De generator van de gepubliceerde module kent maar twee categorieën, S en Z. In XRechnung UBL schrijft hij S wanneer de belasting een percentage heeft en Z wanneer die 0% is. In XRechnung CII, het standaardformaat, gaat elke regel als S uit, ook bij een belasting van 0%, en de KoSIT-validator wijst die af met BR-S-05 (dat hebben we gecontroleerd). Een factuur met verlegging, intracommunautair, export of vrijgesteld gaat niet uit als AE, K, G of E. In Odoo 18, 19 en 20 valideert de module met het abonnement op FlexigoTech Cloud het resultaat met de KoSIT-regels en zet hij elke falende regel onder Validation Errors. Voor die facturen is vandaag de eigen export van Odoo degene die de categorieën kent. In Odoo 17 valideert de gepubliceerde versie niet.

Auditlogboek van de XRechnung-module in Odoo 20
Uitgaande verzendingen met hun formaat en het validatieresultaat, één mislukt. Schermafbeelding van Odoo 20 met demogegevens; de resultaten zijn testresultaten.

Hoe je het oplost

  1. Zoek de categorie op in de btw-uitsplitsing van de XML (BT-118) en vergelijk die met de werkelijke transactie.
  2. Open in Odoo 19 en 20 de belasting en stel de Tax Category Code in en, bij E, AE, K, G of O, de Tax Exemption Reason Code.
  3. Installeer in Odoo 17 en 18 account_edi_ubl_cii_tax_extension en stel per belasting de categorie in en, als die categorie er een vereist, de reden. Zonder die module controleer je het land van de klant, de postcode, het btw-nummer en de fiscale positie: daaruit leidt Odoo de categorie af.
  4. Een vrijstellingsreden op een regel tegen het algemene tarief geeft BR-S-10: verwijder die uit de belasting.
  5. Genereer het bestand opnieuw.

Lees verder

Fout BR-CO-15 in de e-factuur: het totaal met btw is niet netto plus btwBR-CO-15, BR-CO-14, BR-CO-16 en BR-CO-17 controleren of de totalen van de e-factuur kloppen. Wat elk optelt en welke er op één cent misgaan.Fout BR-CO-09: het btw-nummer van de verkoper of de klant heeft geen landcodeBR-CO-09 weigert een btw-nummer zonder landcode; BR-CO-26, BR-S-02, BR-AE-02 en BR-IC-02 eisen dat van de verkoper of de klant. De melding van Odoo en hoe je het invult.Fout UBL-SR-48: een factuurregel met twee belastingen of geenUBL-SR-48 en BR-CO-04 eisen op elke regel van de e-factuur één btw-categorie, en maar één. De melding van Odoo 17, 18, 19 en 20, samen met BR-25 en BR-16.
Gecontroleerd in de broncode van de module (versie 17.0 en 20.0) en in de gelinkte bronnen

Bronnen