Vai al contenuto principale
EN 16931 · righe

Errore UBL-SR-48: una riga della fattura con due imposte o senza nessuna

Nella fattura elettronica europea ogni riga riporta una categoria IVA, e una sola. In Odoo una riga può avere più imposte o nessuna, quindi il conflitto è frequente: è UBL-SR-48 nel file, e Odoo lo blocca prima di generarlo con il proprio messaggio. Nello stesso gruppo ci sono BR-CO-04, BR-25 e BR-16.

FlexigoTech · Responsabile: Víctor Gómez · Aggiornato il 4 novembre 2026

In breve

Versioni
Odoo 17, 18, 19 e 20
Verificato
nel codice del modulo, versione 17.0 e 20.0 · nelle fonti collegate in fondo
Lettura
3 min

Cosa dice ogni regola

Sono tutte e quattro fatali nello Schematron di EN 16931 (validation-1.3.17):

UBL-SR-48
“Invoice lines shall have one and only one classified tax category.” È una regola della sintassi UBL: una riga, una categoria.
BR-CO-04
“Each Invoice line (BG-25) shall be categorized with an Invoiced item VAT category code (BT-151).” L'altra faccia: nessuna riga senza categoria.
BR-25
“Each Invoice line (BG-25) shall contain the Item name (BT-153).” Ogni riga con un nome.
BR-16
“An Invoice shall have at least one Invoice line (BG-25)” Almeno una riga.
Scheda della regola UBL-SR-48 di EN 16931
Una categoria IVA per riga (BT-151), con BR-CO-04, BR-25 e BR-16.

Il messaggio di Odoo

Odoo non aspetta il validatore. Prima di generare l'UBL scorre le righe e, se una non ha esattamente un'imposta, si ferma con: «Each invoice line shall have one and only one tax.» Succede in tutte e quattro le versioni, con una differenza:

  • Odoo 17: conta le imposte della riga escludendo quelle a importo fisso, come le ecotasse; ne deve restare una.
  • Odoo 18, 19 e 20: conta le categorie d'imposta che verranno scritte nella riga del file; ce ne deve essere una.

Nello stesso passaggio controlla BR-25: una riga senza prodotto né descrizione si ferma con «Each invoice line should have a product or a label.»

I casi che lo provocano

Caso in OdooCosa fare
Riga senza imposta, per esempio una spesa riaddebitataAssegnale l'imposta corretta, anche se è al 0 % o esente.
Due imposte IVA sulla stessa rigaLasciane una: se sono due aliquote diverse, dividi la riga.
IVA più un sovrapprezzo o una ritenuta sulla rigaVerifica se quella seconda imposta deve comparire nella fattura elettronica come imposta o in un altro modo; la risposta giusta dipende dal tuo Paese.
Riga di testo senza prodotto né descrizioneScrivi la descrizione o trasformala in nota.

Le sezioni e le note di Odoo non contano come righe, quindi non provocano il messaggio.

Con il nostro modulo XRechnung e ZUGFeRD

Il modulo genera l'XML con il proprio codice e non esegue il controllo di Odoo: una riga senza imposta o con due arriva al file così com'è. Lo abbiamo verificato con il validatore di KoSIT:

  • Riga senza imposta: esce senza categoria IVA. In XRechnung UBL dà UBL-SR-48, BR-CO-04 e BR-Z-08; in XRechnung CII, il formato predefinito del modulo, BR-CO-04, BR-Z-01 e BR-Z-08.
  • Riga con due imposte: in UBL viene scritta solo la prima con percentuale, ma il totale con IVA riporta entrambe e scatta BR-CO-15. In CII vanno entrambe sulla riga e l'IVA totale non quadra con il riepilogo, e scatta BR-CO-14.
  • Riga con un'imposta al 0 %: in UBL esce come Z e KoSIT la accetta. In CII esce come S, e KoSIT segnala BR-S-05, oltre a BR-Z-01 e BR-Z-08.

Controlla le imposte di ogni riga prima di generare.

Fattura di Odoo 20 con la scheda XRechnung / ZUGFeRD del modulo
Esito della validazione e Ready to send sulla fattura. Schermata di Odoo 20 con dati dimostrativi; il rapporto nella schermata è di prova.

In Odoo 18, 19 e 20, con l'abbonamento a FlexigoTech Cloud, ogni XRechnung e ogni ZUGFeRD EN 16931 viene validato con le regole di KoSIT e le regole che falliscono restano in Validation Errors. In Odoo 17 la versione pubblicata non valida: questi file escono senza alcun avviso.

Passaggi

  1. Leggi il messaggio: ti dice se il problema è l'imposta o il nome della riga.
  2. Apri la fattura in bozza e controlla la colonna delle imposte riga per riga.
  3. Correggi, convalida e genera di nuovo il file.

Continua a leggere

Errori BR-E-10, BR-AE-10, BR-IC-10 e BR-G-10: il motivo di esenzione IVABR-E-10, BR-AE-10, BR-IC-10, BR-G-10 e BR-O-10 richiedono il motivo di esenzione; BR-S-10 e BR-Z-10 lo vietano. Come lo decide Odoo 17, 18, 19 e 20 e dove si modifica.Errore BR-CL-23: l'unità di misura della riga non è un codice UN/ECEBR-CL-23 richiede codici UN/ECE per l'unità di ogni riga, BR-23 che ci sia e Peppol R130 che coincida con quella del prezzo. Da dove la prende Odoo 17, 18, 19 e 20.Errore BR-CO-15 nella fattura elettronica: il totale con IVA non è imponibile più IVABR-CO-15, BR-CO-14, BR-CO-16 e BR-CO-17 verificano che i totali della fattura elettronica quadrino. Cosa somma ciascuna e quali falliscono per un centesimo.
Verificato nel codice del modulo (versione 17.0 e 20.0) e nelle fonti collegate

Fonti