Erori BR-S-08 si BR-S-09 e-Factura: calcul TVA gresit la cota standard
Erorile BR-S-08 si BR-S-09 apar cand baza de impozitare sau suma TVA la cota standard nu corespund cu liniile de factura. Afla cum le corectezi.
Erorile BR-S-08 si BR-S-09 sunt returnate de ANAF cand sectiunea de detaliere TVA din XML contine valori inconsistente cu liniile de factura sau cu cota declarata. Mesajele oficiale sunt:
- "For each VAT breakdown where the VAT category code is 'Standard rated' (S), the VAT category taxable amount (BT-116) shall equal the sum of Invoice line net amounts (BT-131) minus allowances (BT-92) plus charges (BT-99) where the VAT category codes equal the given VAT category code."
- "The VAT category tax amount (BT-117) in a VAT breakdown where the VAT category code is 'Standard rated' (S) shall equal the VAT category taxable amount (BT-116) times the VAT category rate (BT-119), expressed as a percentage divided by 100, rounded to two decimals."
In termeni simpli: BR-S-08 verifica baza de impozitare, iar BR-S-09 verifica suma TVA calculata pe baza ei.
Ce inseamna erorile BR-S-08 si BR-S-09
In orice factura electronica, TVA-ul trebuie detaliat pe cote intr-un bloc separat numit TaxSubtotal. Pentru fiecare cota TVA utilizata in factura exista un astfel de bloc. Erorile BR-S-08 si BR-S-09 se refera exclusiv la blocul cu codul de categorie TVA S, adica cota standard.
Campurile implicate sunt:
- BT-116 (TaxableAmount): baza de impozitare pentru cota respectiva, adica suma valorilor nete ale liniilor cu acea cota, dupa aplicarea reducerilor si taxelor de la nivel de document
- BT-117 (TaxAmount): suma TVA pentru cota respectiva
- BT-119 (Percent): procentul cotei TVA (de exemplu 19, 9 sau 5)
BR-S-08 impune: BT-116 = suma BT-131 (linii cu cota S) - reduceri document cu cota S + taxe document cu cota S
BR-S-09 impune: BT-117 = rotunjit(BT-116 * BT-119 / 100, 2 zecimale)
Cotele TVA valabile in Romania in 2026 sunt: 21% cota standard, 11% cota redusa (alimente, carti, hoteluri, medicamente, restaurant si catering) si 9% cota tranzitorie pentru locuinte noi pana la 31 iulie 2026, conform Legii 141/2025. Cotele anterioare 19%/9%/5% au fost aplicabile pana la 31 iulie 2025. Fiecare cota are propriul bloc TaxSubtotal cu codul de categorie corespunzator. Exemplele numerice de mai jos folosesc 19% in scop ilustrativ; logica matematica BR-S-08/09 este aceeasi pentru orice cota.
De ce apar aceste erori
Exista mai multe scenarii frecvente:
- Rotunjire la nivel intermediar. Sistemul calculeaza TVA-ul pe fiecare linie si insumeaza TVA-ul liniilor in loc sa calculeze TVA pe baza totala. De exemplu, pentru 100 de linii de 1 RON cu TVA 19%, TVA pe linie este 0.19 RON, suma este 19.00 RON, ceea ce este corect in acest caz. Dar pentru 3 linii de 33.333 RON, TVA pe linie este 6.333 RON rotunjit la 6.33 RON, suma este 18.99 RON, insa BT-117 corect este round(99.999 * 19 / 100, 2) = 19.00 RON. Diferenta de 0.01 RON cauzeaza BR-S-09.
- Cota TVA gresita in TaxSubtotal. Factura are linii cu TVA 9% (produse alimentare, servicii de cazare), dar in blocul TaxSubtotal codul de categorie este S cu Percent 19. ANAF vede discrepanta si returneaza eroarea.
- BT-116 calculat independent de linii. Unele sisteme calculeaza baza de impozitare direct din totalul facturii in loc sa insumeze liniile cu cota respectiva. La facturi cu reduceri sau taxe de document, cele doua valori pot diferi.
- Mai multe cote TVA in aceeasi factura, un singur bloc TaxSubtotal. Daca factura are linii cu TVA 19% si linii cu TVA 9%, trebuie doua blocuri TaxSubtotal separate. Daca exista un singur bloc, valorile nu vor corespunde cu liniile filtrate dupa cota.
- Reducere de document (BT-92) neinclusa in calcul. O reducere aplicata la nivel de document scade din BT-116. Daca sistemul ignora aceasta reducere la calculul bazei de impozitare, BR-S-08 va aparea.
Exemplu XML
Situatie: o factura cu doua linii. Linia 1: 500 RON, TVA 19%. Linia 2: 200 RON, TVA 9%. Reducere de document de 50 RON la cota 19%.
Baza pentru cota 19%: 500 - 50 = 450 RON. TVA la 19%: round(450 * 19 / 100, 2) = 85.50 RON.
Baza pentru cota 9%: 200 RON. TVA la 9%: round(200 * 9 / 100, 2) = 18.00 RON.
<!-- INCORECT: reducerea de document nu este scazuta din BT-116,
si BT-117 este calculat din baza incorecta -->
<cac:TaxTotal>
<cbc:TaxAmount currencyID="RON">109.00</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="RON">500.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="RON">95.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="RON">200.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="RON">18.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>9</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal><!-- CORECT: BT-116 include scazamantul reducerii de document,
BT-117 este calculat din BT-116 corect,
blocul cu 9% are codul de categorie S cu Percent 9 -->
<cac:TaxTotal>
<cbc:TaxAmount currencyID="RON">103.50</cbc:TaxAmount>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="RON">450.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="RON">85.50</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>19</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
<cac:TaxSubtotal>
<cbc:TaxableAmount currencyID="RON">200.00</cbc:TaxableAmount>
<cbc:TaxAmount currencyID="RON">18.00</cbc:TaxAmount>
<cac:TaxCategory>
<cbc:ID>S</cbc:ID>
<cbc:Percent>9</cbc:Percent>
<cac:TaxScheme>
<cbc:ID>VAT</cbc:ID>
</cac:TaxScheme>
</cac:TaxCategory>
</cac:TaxSubtotal>
</cac:TaxTotal>Cum le rezolvi
- Identifica toate cotele TVA distincte din factura. Fiecare cota unica (19%, 9%, 5%) trebuie sa aiba un bloc TaxSubtotal separat. Verifica daca numarul de blocuri TaxSubtotal din XML corespunde cu numarul de cote distincte din linii.
- Calculeaza BT-116 corect pentru fiecare cota. Pentru cota S cu 19%, BT-116 = suma valorilor nete (BT-131) ale liniilor cu TVA 19%, minus reducerile de document (BT-92) cu cota 19%, plus taxele de document (BT-99) cu cota 19%.
- Calculeaza BT-117 din BT-116, nu din linii individuale. Formula corecta este:
BT-117 = round(BT-116 * BT-119 / 100, 2). Nu insumai TVA-ul calculat pe fiecare linie in parte. - Verifica procentul BT-119. Asigura-te ca valoarea din campul Percent corespunde cotei aplicata liniilor din factura. O greseala frecventa: produse alimentare (cota 9%) intr-un bloc TaxSubtotal cu Percent 19.
- Actualizeaza TaxAmount global din TaxTotal sa fie suma tuturor valorilor BT-117 din toate blocurile TaxSubtotal.
- Retransmite factura la ANAF si verifica raspunsul.
Regula de baza pentru rotunjire: calculeaza intai baza totala BT-116, apoi aplica procentul si rotunjeste la final. Nu rotunzi niciodata la nivel de linie si nu insumai rezultatele rotunjite.
Previne erorile cu Billyou
Billyou calculeaza automat sumele TVA per cota respectand algoritmul corect: BT-116 este suma liniilor filtrate dupa cota, iar BT-117 este rezultatul formulei round(BT-116 * BT-119 / 100, 2). Erorile BR-S-08 si BR-S-09 nu pot aparea in facturile generate prin Billyou.
Billyou suporta toate cotele TVA din Romania (21% standard, 11% redusa, 9% tranzitorie pentru locuinte noi pana la 31 iulie 2026, plus regimuri de exceptie). Fiecare cota genereaza automat un bloc TaxSubtotal separat cu valorile corecte.
Poti incepe gratuit la app.billyou.ro/register.
Daca construiesti o integrare, API-ul Billyou returneaza un raspuns cu cod 422 si detalii la nivel de camp cand calculul TVA este incorect, inainte ca factura sa ajunga la ANAF. Poti corecta eroarea in sistemul tau fara sa astepti raspunsul ANAF.
Articole conexe: Eroare BR-CO-10: suma liniilor nu coincide cu totalul net, Eroare BR-AE-10: taxare inversa fara cod de scutire.
Intrebari frecvente
Pot aparea BR-S-08 si BR-S-09 separat?
Da, dar rar. BR-S-08 apare cand BT-116 este calculat gresit fata de linii. BR-S-09 apare cand BT-117 nu corespunde cu formula BT-116 * BT-119 / 100. Daca BT-116 este gresit, atunci si BT-117 calculat pe baza lui va fi probabil gresit, deci ambele erori apar simultan.
Cum calculez corect TVA pentru o factura cu mai multe cote?
Grupeaza liniile dupa cota TVA. Pentru fiecare grup, insumeaza valorile nete ale liniilor si obtii BT-116. Aplica formula BT-117 = round(BT-116 * procent / 100, 2). Creeaza un bloc TaxSubtotal pentru fiecare grup. Nu amesteca liniile cu cote diferite intr-un singur bloc.
Ce cota TVA se aplica serviciilor de restaurant in Romania?
Serviciile de restaurant si catering beneficiaza de cota redusa (11% din 1 august 2025 conform Legii 141/2025; anterior 9% intre 2023 si iulie 2025). Daca folosesti o cota gresita pentru aceste servicii, BT-117 va fi calculat pe o baza gresita si vei primi eroarea BR-S-09. Verifica intotdeauna cota corecta pentru categoria de produse sau servicii facturate.
Ce inseamna rotunjire la doua zecimale si de ce conteaza?
Rotunjirea bancherilor sau rotunjirea matematica standard (0.5 se rotunjeste in sus) sunt ambele acceptate, cu conditia sa fie aplicate consistent. Problema apare cand sistemul rotunjeste la nivel de linie si insumeaza rezultatele, in loc sa calculeze TVA pe baza totala si sa rotunjeasca o singura data la final.