Przejdź do głównej treści
EN 16931 · kategorie VAT

Błędy BR-E-10, BR-AE-10, BR-IC-10 i BR-G-10: powód zwolnienia z VAT

Każde zestawienie VAT w e-fakturze ma kategorię: S dla stawki podstawowej, E dla zwolnienia, AE dla odwrotnego obciążenia, K dla dostawy wewnątrzwspólnotowej, G dla eksportu, O dla poza zakresem, Z dla stawki zerowej. Pięć z tych kategorii wymaga podania, dlaczego nie ma VAT, a dwie tego zakazują. To reguła numer 10 w każdej rodzinie i kończy się błędem, gdy kategoria nie zgadza się z podatkiem w Odoo.

FlexigoTech · Odpowiada: Víctor Gómez · Aktualizacja: 4 listopada 2026

Najważniejsze

Wersje
Odoo 17, 18, 19 i 20
Sprawdzone
w kodzie źródłowym modułu, wersja 17.0 i 20.0 · w źródłach podanych na końcu
Czas czytania
4 min

Siedem reguł, z tekstem Schematron EN 16931 (validation-1.3.17). Wszystkie są krytyczne:

RegułaKategoriaTekst
BR-E-10E, zwolnionaA 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, odwrotne obciążenieA 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, wewnątrzwspólnotowaA 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, eksportA 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, poza zakresemA 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, podstawowaA 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, stawka zerowaA 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).

Powód może być podany jako kod (BT-121, z listy VATEX) albo jako tekst (BT-120). Dla E wystarczy jedno z nich; dla AE, K, G i O kod lub tekst musi oznaczać dokładnie to: „Reverse charge”, „Intra-community supply”… Pozostałe reguły każdej rodziny (BR-E-08, BR-AE-08 i kolejne) dotyczą kwot; ta strona dotyczy wyłącznie powodu.

Karta reguł powodu zwolnienia EN 16931
Pięć kategorii wymaga powodu (E, AE, K, G, O), dwie go zabraniają (S, Z).

Jak Odoo ustala kategorię

Tu wersje się rozchodzą:

  • Odoo 17 i 18: domyślnie podatek nie ma pola kategorii, a Odoo ją wnioskuje: dla hiszpańskiego klienta z kodem pocztowym zaczynającym się od 35 lub 38 (Wyspy Kanaryjskie), L, a od 51 lub 52 (Ceuta i Melilla), M; E, jeśli podatek wynosi 0 %, a sprzedawca i klient są z tego samego kraju; AE przy belgijskim odwrotnym obciążeniu współwykonawcy lub w samofakturze z podatkiem odwrotnego obciążenia; przy numerze VAT sprzedawcy i podatku 0 % K, jeśli oboje są w EOG, a G, jeśli tylko jedno z nich; w pozostałych przypadkach S, jeśli podatek ma stawkę, i E, jeśli wynosi 0 %. Standardowy moduł account_edi_ubl_cii_tax_extension (Tax extension for UBL/CII), który nie instaluje się automatycznie, dodaje do podatku Tax Category Code i Tax Exemption Reason Code: gdy kategoria jest ustawiona, Odoo używa jej zamiast wnioskować.
  • Odoo 19: każdy podatek ma Tax Category Code (AE, E, S, Z, G, O, K, L, M, B) oraz Tax Exemption Reason Code, z listą VATEX.
  • Odoo 20: te same dwa pola oraz Tax Exemption Reason, tekst dowolny.
  • We wszystkich czterech wersjach: jeśli kategoria E nie ma powodu, Odoo wpisuje tekst „Exempt from tax”, który spełnia BR-E-10.

Typowa pułapka w Odoo 17 i 18 bez tego modułu to podatek 0 % na usługę poza zakresem VAT, którego wnioskowanie nigdy nie oznaczy jako O, albo krajowa sprzedaż z odwrotnym obciążeniem: kategoria wychodzi inna, niż oczekuje Twój księgowy.

Z naszym modułem XRechnung i ZUGFeRD

Generator opublikowanego modułu zna tylko dwie kategorie, S i Z. W XRechnung UBL zapisuje S, gdy podatek ma procent, a Z, gdy wynosi 0 %. W XRechnung CII, czyli domyślnym formacie, każda linia wychodzi jako S, także przy podatku 0 %, a walidator KoSIT odrzuca ją błędem BR-S-05 (sprawdziliśmy to). Faktura z odwrotnym obciążeniem, wewnątrzwspólnotowa, eksportowa lub zwolniona nie wychodzi jako AE, K, G ani E. W Odoo 18, 19 i 20, przy subskrypcji FlexigoTech Cloud, moduł waliduje wynik regułami KoSIT i zostawia każdą nieudaną regułę w Validation Errors. Dla takich faktur dziś eksport samego Odoo zna kategorie. W Odoo 17 opublikowana wersja nie przechodzi walidacji.

Rejestr audytu modułu XRechnung w Odoo 20
Wysyłki z formatem i wynikiem walidacji, jedna nieudana. Zrzut ekranu Odoo 20 z danymi demonstracyjnymi; wyniki są testowe.

Jak to naprawić

  1. Znajdź kategorię w zestawieniu VAT w XML (BT-118) i porównaj ją z rzeczywistą transakcją.
  2. W Odoo 19 i 20 otwórz podatek i ustaw jego Tax Category Code, a dla E, AE, K, G lub O także Tax Exemption Reason Code.
  3. W Odoo 17 i 18 zainstaluj account_edi_ubl_cii_tax_extension i ustaw w każdym podatku jego kategorię oraz, jeśli kategoria tego wymaga, powód. Bez tego modułu sprawdź kraj klienta, kod pocztowy, numer VAT i obszar podatkowy: z tych danych Odoo wnioskuje kategorię.
  4. Powód zwolnienia na linii ze stawką podstawową powoduje BR-S-10: usuń go z podatku.
  5. Wygeneruj plik ponownie.

Czytaj dalej

Błąd BR-CO-15 w e-fakturze: wartość brutto nie jest netto plus VATBR-CO-15, BR-CO-14, BR-CO-16 i BR-CO-17 sprawdzają, czy sumy e-faktury się zgadzają. Co sumuje każda z nich i które zawodzą przez jeden grosz.Błąd BR-CO-09: numer VAT sprzedawcy lub nabywcy nie ma prefiksu krajuBR-CO-09 odrzuca numer VAT bez prefiksu kraju; BR-CO-26, BR-S-02, BR-AE-02 i BR-IC-02 wymagają numeru sprzedawcy lub nabywcy. Komunikat Odoo i jak go poprawić.Błąd UBL-SR-48: wiersz faktury z dwoma podatkami albo bez żadnegoUBL-SR-48 i BR-CO-04 wymagają jednej, i tylko jednej, kategorii VAT w każdym wierszu faktury elektronicznej. Komunikat Odoo 17, 18, 19 i 20 oraz BR-25 i BR-16.
Sprawdzone w kodzie źródłowym modułu (wersja 17.0 i 20.0) i w podlinkowanych źródłach

Źródła