Salta al contingut principal
EN 16931 · categories d'IVA

Errors BR-E-10, BR-AE-10, BR-IC-10 i BR-G-10: el motiu d'exempció de l'IVA

Cada desglossament d'IVA d'una factura electrònica porta una categoria: S per al tipus general, E per a exempta, AE per a inversió del subjecte passiu, K per a lliurament intracomunitari, G per a exportació, O per a fora de l'àmbit, Z per a tipus zero. Cinc d'aquestes categories exigeixen dir per què no hi ha IVA i dues ho prohibeixen. És la regla número 10 de cada família, i falla quan la categoria no casa amb l'impost d'Odoo.

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
5 min

Les set regles, amb el text del Schematron de EN 16931 (validation-1.3.17). Totes són fatals:

ReglaCategoriaText
BR-E-10E, exemptaA 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, inversióA 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, intracomunitàriaA 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, exportacióA 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, fora de l'àmbitA 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, generalA 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, tipus zeroA 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).

El motiu pot anar com a codi (BT-121, de la llista VATEX) o com a text (BT-120). Per a E n'hi ha prou amb qualsevol dels dos; per a AE, K, G i O, el codi o el text han de significar justament allò: «Reverse charge», «Intra-community supply»… Les regles de les altres famílies (BR-E-08, BR-AE-08 i següents) són les d'imports; aquí només hi va el motiu.

Targeta de les regles de motiu d'exempció de EN 16931
Cinc categories demanen motiu (E, AE, K, G, O) i dues el prohibeixen (S, Z).

Com decideix Odoo la categoria

Aquí és on les versions es separen:

  • Odoo 17 i 18: de sèrie, l'impost no porta camp de categoria i Odoo la dedueix: a un client espanyol amb codi postal que comença per 35 o 38 (Canàries), L, i per 51 o 52 (Ceuta i Melilla), M; E si l'impost és del 0 % i venedor i client són del mateix país; AE en l'autoliquidació de cocontractant belga o en l'autofactura amb impost d'inversió; amb NIF del venedor i impost al 0 %, K si els dos són de l'EEE i G si només ho és un; a la resta, S si l'impost té percentatge i E si és del 0 %. El mòdul estàndard account_edi_ubl_cii_tax_extension (Tax extension for UBL/CII), que no s'instal·la sol, afegeix a l'impost Tax Category Code i Tax Exemption Reason Code: amb la categoria posada, Odoo usa aquesta en lloc de deduir-la.
  • Odoo 19: cada impost té Tax Category Code (AE, E, S, Z, G, O, K, L, M, B) i Tax Exemption Reason Code, amb la llista VATEX.
  • Odoo 20: els mateixos dos camps i, a més, Tax Exemption Reason, un text lliure.
  • En les quatre versions: si una categoria E es queda sense motiu, Odoo escriu el text «Exempt from tax», que compleix BR-E-10.

La trampa típica d'Odoo 17 i 18 sense aquest mòdul és un impost del 0 % per a un servei fora de l'àmbit de l'IVA, que la deducció mai marca com O, o una venda nacional amb inversió del subjecte passiu: la categoria surt diferent de la que esperaria el teu assessor.

Amb el nostre mòdul XRechnung i ZUGFeRD

El generador del mòdul publicat només coneix dues categories, S i Z. En XRechnung UBL escriu S quan l'impost té percentatge i Z quan és del 0 %. En XRechnung CII, el seu format per defecte, cada línia surt com a S, també amb un impost del 0 %, i el validador de KoSIT la rebutja amb BR-S-05 (ho hem comprovat). Una factura amb inversió del subjecte passiu, intracomunitària, d'exportació o exempta no surt amb AE, K, G ni E. A Odoo 18, 19 i 20, amb la subscripció a FlexigoTech Cloud, el mòdul valida el resultat amb les regles de KoSIT i deixa a Validation Errors qualsevol regla que falli. Per a aquestes factures, avui, l'exportació d'Odoo és la que coneix les categories. A Odoo 17, la versió publicada no valida.

Registre d'auditoria del mòdul XRechnung a Odoo 20
Enviaments amb el seu format i el resultat de la validació, un fallit. Captura d'Odoo 20 amb dades de demostració; els resultats són de prova.

Com arreglar-ho

  1. Identifica la categoria que surt al desglossament del XML (BT-118) i compara-la amb l'operació real.
  2. A Odoo 19 i 20, obre l'impost i posa'n el Tax Category Code i, si és E, AE, K, G o O, el Tax Exemption Reason Code.
  3. A Odoo 17 i 18, instal·la account_edi_ubl_cii_tax_extension i posa a cada impost la seva categoria i, si aquesta categoria el demana, el seu motiu. Sense aquest mòdul, revisa el país del client, el seu codi postal, el seu NIF i la posició fiscal: són les dades de les quals Odoo dedueix la categoria.
  4. Un motiu d'exempció en una línia al tipus general provoca BR-S-10: lleva'l de l'impost.
  5. Genera el fitxer de nou.

Continua llegint

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.Error BR-CO-09: el NIF-IVA del venedor o del client no du el prefix del paísBR-CO-09 rebutja un NIF-IVA sense el prefix del país; BR-CO-26, BR-S-02, BR-AE-02 i BR-IC-02 demanen el del venedor o el del client. L'avís d'Odoo i com escriure'l.Error UBL-SR-48: una línia de la factura amb dos impostos o sense capUBL-SR-48 i BR-CO-04 exigeixen una categoria d'IVA, i només una, a cada línia de la factura electrònica. L'avís d'Odoo 17, 18, 19 i 20, juntament amb BR-25 i BR-16.
Comprovat al codi del mòdul (versió 17.0 i 20.0) i a les fonts enllaçades

Fonts