Salta al contingut principal
EN 16931 · línies

Error UBL-SR-48: una línia de la factura amb dos impostos o sense cap

A la factura electrònica europea cada línia porta una categoria d'IVA, i només una. A Odoo una línia pot tenir diversos impostos o cap, així que el conflicte és freqüent: és UBL-SR-48 al fitxer, i Odoo l'atura abans de generar-lo amb el seu propi avís. Al mateix grup hi ha BR-CO-04, BR-25 i BR-16.

FlexigoTech · Responsable: Víctor Gómez · Actualitzat el 4 de novembre de 2026

L'essencial

Versions
Odoo 17, 18, 19 i 20
Comprovat
al codi del mòdul, versió 17.0 i 20.0 · a les fonts enllaçades al final
Lectura
3 min

Què diu cada regla

Les quatre són fatals al Schematron de EN 16931 (validation-1.3.17):

UBL-SR-48
«Invoice lines shall have one and only one classified tax category.» És una regla de la sintaxi UBL: una línia, una categoria.
BR-CO-04
«Each Invoice line (BG-25) shall be categorized with an Invoiced item VAT category code (BT-151).» L'altra cara: cap línia sense categoria.
BR-25
«Each Invoice line (BG-25) shall contain the Item name (BT-153).» Cada línia amb nom.
BR-16
«An Invoice shall have at least one Invoice line (BG-25)» Almenys una línia.
Fitxa de la regla UBL-SR-48 de EN 16931
Una categoria d'IVA per línia (BT-151), amb BR-CO-04, BR-25 i BR-16.

L'avís d'Odoo

Odoo no espera el validador. Abans de generar l'UBL recorre les línies i, si una no té exactament un impost, s'atura amb: «Each invoice line shall have one and only one tax.» Passa en les quatre versions, amb una matisació:

  • Odoo 17: compta els impostos de la línia deixant fora els d'import fix, com les ecotaxes; n'ha de quedar un.
  • Odoo 18, 19 i 20: compta les categories d'impost que s'escriuran a la línia del fitxer; n'ha d'haver una.

En el mateix pas comprova BR-25: una línia sense producte ni descripció s'atura amb «Each invoice line should have a product or a label.»

Els casos que ho provoquen

Cas a OdooQuè fer
Línia sense impost, per exemple una despesa refacturadaPosa-li l'impost que correspongui, també si és del 0 % o exempt.
Dos impostos d'IVA a la mateixa líniaDeixa'n un: si són dos tipus diferents, parteix la línia en dues.
IVA més un recàrrec o retenció a la líniaRevisa si aquest segon impost ha d'anar a la factura electrònica com a impost o d'una altra manera; el correcte depèn del teu país.
Línia de text sense producte ni descripcióEscriu la descripció o converteix-la en nota.

Les seccions i notes d'Odoo no compten com a línies, així que no provoquen l'avís.

Amb el nostre mòdul XRechnung i ZUGFeRD

El mòdul genera el XML amb el seu propi codi i no fa la comprovació d'Odoo: una línia sense impost o amb dos arriba al fitxer tal com és. Ho hem comprovat amb el validador de KoSIT:

  • Línia sense impost: surt sense categoria d'IVA. A XRechnung UBL dona UBL-SR-48, BR-CO-04 i BR-Z-08; a XRechnung CII, el format per defecte del mòdul, BR-CO-04, BR-Z-01 i BR-Z-08.
  • Línia amb dos impostos: a UBL només s'escriu el primer amb percentatge, però el total amb IVA porta els dos, i salta BR-CO-15. A CII hi van els dos a la línia i l'IVA total no quadra amb el desglossament, i salta BR-CO-14.
  • Línia amb un impost del 0 %: a UBL surt com a Z i KoSIT l'accepta. A CII surt com a S, i KoSIT dona BR-S-05, a més de BR-Z-01 i BR-Z-08.

Revisa els impostos de cada línia abans de generar.

Factura d'Odoo 20 amb la pestanya XRechnung / ZUGFeRD del mòdul
Resultat de la validació i Ready to send a la factura. Captura d'Odoo 20 amb dades de demostració; l'informe de la captura és de prova.

A Odoo 18, 19 i 20, amb la subscripció a FlexigoTech Cloud, cada XRechnung i cada ZUGFeRD EN 16931 es valida amb les regles de KoSIT i les regles que fallin queden a Validation Errors. A Odoo 17 la versió publicada no valida: aquests fitxers surten sense avís.

Passos

  1. Llegeix l'avís: diu si és l'impost o el nom de la línia.
  2. Obre la factura en esborrany i revisa la columna d'impostos línia a línia.
  3. Corregeix, publica i genera el fitxer de nou.

Continua llegint

Errors BR-E-10, BR-AE-10, BR-IC-10 i BR-G-10: el motiu d'exempció de l'IVABR-E-10, BR-AE-10, BR-IC-10, BR-G-10 i BR-O-10 demanen el motiu d'exempció; BR-S-10 i BR-Z-10 el prohibeixen. Com ho decideix Odoo 17, 18, 19 i 20 i on es canvia.Error BR-CL-23: la unitat de mesura de la línia no és un codi UN/ECEBR-CL-23 exigeix codis UN/ECE per a la unitat de cada línia, BR-23 que n'hi hagi una i PEPPOL-EN16931-R130 que coincideixi amb la del preu. D'on la treu Odoo.Error BR-CO-15 a la factura electrònica: el total amb IVA no és base més IVABR-CO-15, BR-CO-14, BR-CO-16 i BR-CO-17 comproven que els totals de la factura electrònica quadrin. Què suma cadascuna i quines fallen per un cèntim.
Comprovat al codi del mòdul (versió 17.0 i 20.0) i a les fonts enllaçades

Fonts