Wat elke regel zegt
Alle vier zijn fataal in het Schematron van EN 16931 (validation-1.3.17):
- UBL-SR-48
- "Invoice lines shall have one and only one classified tax category." Een UBL-syntaxisregel: één regel, één categorie.
- BR-CO-04
- "Each Invoice line (BG-25) shall be categorized with an Invoiced item VAT category code (BT-151)." De andere kant: geen regel zonder categorie.
- BR-25
- "Each Invoice line (BG-25) shall contain the Item name (BT-153)." Elke regel met een naam.
- BR-16
- "An Invoice shall have at least one Invoice line (BG-25)" Minstens één regel.

De melding van Odoo
Odoo wacht niet op de validator. Vóór het genereren van de UBL loopt het de regels langs en, als een regel niet precies één belasting heeft, stopt het met: "Each invoice line shall have one and only one tax." Dat gebeurt in alle vier versies, met een nuance:
- Odoo 17: telt de belastingen van de regel zonder die met een vast bedrag, zoals de ecotaksen; er moet er één overblijven.
- Odoo 18, 19 en 20: telt de belastingcategorieën die op de regel van het bestand worden geschreven; er moet er één zijn.
In dezelfde stap controleert het BR-25: een regel zonder product en zonder omschrijving stopt met "Each invoice line should have a product or a label."
De gevallen die het veroorzaken
| Geval in Odoo | Wat te doen |
|---|---|
| Regel zonder belasting, bijvoorbeeld een doorbelaste onkost | Zet er de juiste belasting op, ook als die 0 % of vrijgesteld is. |
| Twee btw-belastingen op dezelfde regel | Houd er één over: zijn het twee verschillende tarieven, splits dan de regel. |
| Btw plus een toeslag of inhouding op de regel | Controleer of die tweede belasting in de e-factuur als belasting moet staan of op een andere manier; het juiste antwoord hangt af van je land. |
| Tekstregel zonder product of omschrijving | Schrijf de omschrijving of maak er een notitie van. |
Secties en notities van Odoo tellen niet mee als regels, dus die veroorzaken de melding niet.
Met onze module XRechnung en ZUGFeRD
De module bouwt de XML met eigen code en voert de controle van Odoo niet uit: een regel zonder belasting of met twee komt zoals hij is in het bestand terecht. We hebben het gecontroleerd met de validator van KoSIT:
- Regel zonder belasting: die gaat zonder btw-categorie de deur uit. In XRechnung UBL geeft dat UBL-SR-48, BR-CO-04 en BR-Z-08; in XRechnung CII, het standaardformaat van de module, BR-CO-04, BR-Z-01 en BR-Z-08.
- Regel met twee belastingen: in UBL wordt alleen de eerste belasting met percentage geschreven, maar het totaal met btw draagt beide, en BR-CO-15 slaat aan. In CII gaan beide op de regel en klopt het totaal aan btw niet met de uitsplitsing, en BR-CO-14 slaat aan.
- Regel met een belasting van 0 %: in UBL gaat hij als Z en KoSIT accepteert hem. In CII gaat hij als S, en KoSIT geeft BR-S-05, plus BR-Z-01 en BR-Z-08.
Controleer de belastingen van elke regel voordat je genereert.

In Odoo 18, 19 en 20 wordt, met het abonnement op FlexigoTech Cloud, elke XRechnung en elke ZUGFeRD EN 16931 gevalideerd met de regels van KoSIT, en de mislukte regels blijven staan onder Validation Errors. In Odoo 17 valideert de gepubliceerde versie niet: die bestanden gaan zonder waarschuwing de deur uit.
Stappen
- Lees de melding: die vertelt of het om de belasting of om de naam van de regel gaat.
- Open de factuur in concept en controleer de kolom met belastingen regel voor regel.
- Corrigeer, boek en genereer het bestand opnieuw.
Lees verder
Gecontroleerd in de broncode van de module (versie 17.0 en 20.0) en in de gelinkte bronnen
Bronnen
- Broncode van de module: flexigo_germany_xrechnung 20.0 (446f2f68): lib/generators/ubl_generator.py
- Broncode van de module: flexigo_germany_xrechnung 20.0 (446f2f68): lib/generators/cii_generator.py
- Broncode van de module: flexigo_germany_xrechnung 20.0 (446f2f68): models/res_company.py
- github.com/odoo/odoo/blob/6f00fdadb875342de2d14a179f25431f93cd63c9/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/4d2d4b5895db70596863df941d9a1f0beeb117f8/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/6f00fdadb875342de2d14a179f25431f93cd63c9/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/4d2d4b5895db70596863df941d9a1f0beeb117f8/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/account_edi_ubl_
- Broncode van de module: flexigo_germany_xrechnung 20.0 (446f2f68): models/xrechnung_cloud.py
- Broncode van de module: flexigo_germany_xrechnung 17.0 (ad05de8f): __manifest__.py
- github.com/ConnectingEurope/eInvoicing-EN16931/releases/tag/validation-1.3.17
