Eroare BR-O-10 e-Factura: cod motivatie lipsa pentru categoria O
Eroarea BR-O-10 apare cand lipseste codul sau textul motivului de scutire pentru categoria TVA O. Afla ce campuri sunt obligatorii si cum le adaugi.
Eroarea BR-O-10 este returnata de ANAF cu mesajul: "A VAT breakdown (BT-118) with the VAT category code (BT-118) 'Not subject to VAT' shall have a VAT exemption reason code (BT-121) or VAT exemption reason text (BT-120)." Eroarea face parte din standardul EN 16931 si este validata prin profilul CIUS-RO. Apare exclusiv in facturile care folosesc categoria de TVA "O".
Ce inseamna eroarea BR-O-10
Regula BR-O-10 impune ca orice element TaxCategory cu codul "O" (Not subject to VAT) sa contina cel putin unul dintre urmatoarele doua campuri:
- BT-121 (TaxCategory / TaxExemptionReasonCode): un cod din lista VATEX care identifica motivul scutirii. Pentru entitati neplatitoare de TVA, valoarea corecta este
vatex-eu-o. - BT-120 (TaxCategory / TaxExemptionReason): un text liber care descrie motivul scutirii. Valoarea acceptata este
Not subject to VAT.
Standardul permite sa folosesti oricare dintre ele sau ambele. In practica, recomandarea este sa incluzi ambele campuri pentru compatibilitate maxima.
Lista VATEX (VAT Exemption Reason Code) este definita de CEN (Comitetul European de Standardizare) in cadrul standardului EN 16931. Codul vatex-eu-o corespunde explicit situatiei "Not subject to VAT", adica entitatile care nu se afla in sfera de aplicare a TVA.
Structura XML relevanta in UBL 2.1 este in elementul TaxCategory din cadrul TaxSubtotal:
<cac:TaxCategory>
<cbc:ID>O</cbc:ID>
<cbc:TaxExemptionReasonCode>vatex-eu-o</cbc:TaxExemptionReasonCode>
<cbc:TaxExemptionReason>Not subject to VAT</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>De ce apare aceasta eroare
Cauza este simpla: majoritatea software-urilor de facturare nu completeaza campurile BT-120 si BT-121. Acestea sunt campuri suplimentare fata de minimul tehnic necesar pentru a construi un XML valid din punct de vedere sintactic, dar sunt obligatorii conform regulilor de business din CIUS-RO.
Scenarii frecvente:
- Exportul din ERP omite campurile de motivatie. Sistemele ERP genereaza TaxCategory cu ID-ul "O" si valorile monetare corecte, dar nu includ TaxExemptionReasonCode si TaxExemptionReason deoarece nu sunt campuri obligatorii in schema XSD a UBL 2.1. Validarea CIUS-RO adauga aceasta cerinta peste schema de baza.
- Implementari care urmaresc doar schema XSD. Un dezvoltator care genereaza XML dupa schema UBL 2.1 de baza va produce un fisier valid sintactic, dar care nu trece validarea CIUS-RO. Regulile CIUS-RO sunt un strat suplimentar de business rules peste schema de baza.
- Migrarea de la sisteme vechi. Sisteme construite inainte de implementarea E-Factura in Romania nu cunosteau aceste cerinte si nu au fost actualizate.
Aceasta eroare este distincta de BR-O-08 si BR-O-09, care se refera la valorile monetare din grupul de TVA. BR-O-10 apare chiar daca valorile monetare sunt corecte.
Exemplu XML
<!-- INCORECT: categoria O fara campuri de motivatie -->
<cac:TaxTotal>
<cbc:TaxAmount currencyID="RON">0.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="RON">1200.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="RON">0.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>O</cbc:ID>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal><!-- CORECT varianta 1: cu codul VATEX -->
<cac:TaxTotal>
<cbc:TaxAmount currencyID="RON">0.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="RON">1200.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="RON">0.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>O</cbc:ID>
<cbc:TaxExemptionReasonCode>vatex-eu-o</cbc:TaxExemptionReasonCode>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal><!-- CORECT varianta 2: cu text motivatie -->
<cac:TaxTotal>
<cbc:TaxAmount currencyID="RON">0.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="RON">1200.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="RON">0.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>O</cbc:ID>
<cbc:TaxExemptionReason>Not subject to VAT</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal><!-- RECOMANDAT: ambele campuri pentru compatibilitate maxima -->
<cac:TaxCategory>
<cbc:ID>O</cbc:ID>
<cbc:TaxExemptionReasonCode>vatex-eu-o</cbc:TaxExemptionReasonCode>
<cbc:TaxExemptionReason>Not subject to VAT</cbc:TaxExemptionReason>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>Cum o rezolvi pas cu pas
- Deschide fisierul XML si localizeaza elementul TaxCategory cu ID-ul "O".
- Verifica daca exista TaxExemptionReasonCode sau TaxExemptionReason in interiorul elementului TaxCategory. Daca ambele lipsesc, ai gasit cauza erorii BR-O-10.
- Adauga cel putin unul dintre urmatoarele inainte de elementul TaxScheme:
<cbc:TaxExemptionReasonCode>vatex-eu-o</cbc:TaxExemptionReasonCode><cbc:TaxExemptionReason>Not subject to VAT</cbc:TaxExemptionReason>
- Verifica si campurile monetare (BT-116 si BT-117) pentru a evita erorile BR-O-08 si BR-O-09 in acelasi timp.
- Retransmite factura la ANAF si verifica raspunsul.
Daca generezi XML programatic, adauga logica de completare a acestor campuri ori de cate ori codul categoriei de TVA este "O". Verificarea este simpla: if (taxCategoryCode === "O") { includeExemptionReason = true; }.
Previne eroarea cu Billyou
Billyou completeaza automat campurile TaxExemptionReasonCode si TaxExemptionReason pentru toate facturile cu categoria "O". Nu trebuie sa cunosti lista VATEX sau ce valori sunt acceptate de ANAF.
Billyou valideaza automat fiecare factura inainte de trimitere la ANAF. Daca exista o eroare in structura XML, Billyou o corecteaza automat sau te notifica inainte sa fie respinsa. Nu vei mai vedea aceasta eroare.
Poti incepe gratuit la app.billyou.ro/register.
Daca construiesti o integrare, API-ul Billyou include automat codul vatex-eu-o in toate facturile pentru entitati neplatitoare de TVA. Sandbox-ul de testare este disponibil pentru validare inainte de productie.
Intrebari frecvente
Ce este lista VATEX si unde o gasesc?
VATEX (VAT Exemption Reason Code) este o lista de coduri definita de CEN in cadrul standardului EN 16931. Codul relevant pentru neplatitorii de TVA este vatex-eu-o. Lista completa este disponibila pe site-ul CEN si in documentatia tehnica a standardului EN 16931.
Este obligatoriu sa folosesc codul vatex-eu-o sau pot pune alt text?
Pentru campul BT-121 (TaxExemptionReasonCode), trebuie sa folosesti un cod din lista VATEX. Codul corect pentru neplatitorii de TVA este vatex-eu-o. Pentru campul BT-120 (TaxExemptionReason), textul este liber, dar "Not subject to VAT" este valoarea standard recunoscuta.
Pot aparea BR-O-10 si BR-O-08 sau BR-O-09 impreuna?
Da. Daca XML-ul tau are categoria "O" fara campuri de motivatie si cu BT-117 nenul, vei primi toate trei erorile in acelasi raspuns. Rezolva-le simultan: seteaza BT-117 la 0, verifica BT-116 in RON si adauga campurile de motivatie.
Eroarea BR-O-10 afecteaza si liniile individuale din factura sau doar TaxTotal?
Eroarea se refera la TaxCategory din TaxSubtotal, adica la grupul de TVA de la nivel de factura, nu la liniile individuale. In UBL 2.1, campurile de motivatie se pun o singura data in TaxSubtotal, nu se repeta pe fiecare linie.
Articole conexe: Erori BR-O-08 si BR-O-09: valori monetare gresite pentru categoria O, Eroare BR-CO-10: suma liniilor nu coincide cu totalul net.