Konto
Polski

BR-CO-12: Błędna suma opłat na poziomie dokumentu (BT-108)

Reguła podstawowa EN 16931 · Błąd · UBL, CII

StandardEN 16931-1 (europejski model semantyczny e-faktury)WagaBłąd: faktura zostaje odrzuconaSkładniaUBL, CIIPojęcia biznesowe
  • BT-99 Document level charge amount
  • BT-108 Sum of charges on document level
DotyczyKażda faktura EN 16931: XRechnung, ZUGFeRD 2.x / Factur-X (profile EN 16931, EXTENDED, XRECHNUNG), Peppol BIS Billing 3.0 oraz krajowe CIUS.

Oficjalna treść reguły

[BR-CO-12] Sum of charges on document level (BT-108) = Σ Document level charge amount (BT-99).

Tekst normatywny jest w języku angielskim i cytowany bez zmian.

Dlaczego pojawia się ten błąd

BT-108 musi być równe sumie kwot wszystkich opłat (narzutów) na poziomie dokumentu (BT-99). Reguła porównuje cac:LegalMonetaryTotal/cbc:ChargeTotalAmount z sumą cbc:Amount wszystkich /Invoice/cac:AllowanceCharge z cbc:ChargeIndicator true (UBL) lub ram:ChargeTotalAmount z sumą ram:ActualAmount nagłówkowych ram:SpecifiedTradeAllowanceCharge ze wskaźnikiem true (CII). Typowe przyczyny to koszty wysyłki lub pakowania ujęte jako pozycje faktury przy jednoczesnym wypełnieniu ChargeTotalAmount albo opłaty na poziomie pozycji liczone na poziomie dokumentu.

Jak to naprawić

Wzór: BT-108 = Σ BT-99 (tylko opłaty na poziomie dokumentu), zaokrąglone do 2 miejsc po przecinku. W UBL ustaw cbc:ChargeTotalAmount w cac:LegalMonetaryTotal; w CII ustaw ram:ChargeTotalAmount w podsumowaniu kwot nagłówka. Jeśli występują opłaty, suma musi być obecna; jeśli ich nie ma, pomiń element lub wpisz 0.00. Wybierz jeden sposób modelowania: opłata za transport jest albo opłatą na poziomie dokumentu (liczoną tutaj), albo pozycją faktury (liczoną w BT-106), nigdy jednym i drugim.

Przykład (poprawny)

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>true</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReason>Freight</cbc:AllowanceChargeReason>
  <cbc:Amount currencyID="EUR">5.90</cbc:Amount>
  <cac:TaxCategory><cbc:ID>S</cbc:ID><cbc:Percent>19</cbc:Percent><cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme></cac:TaxCategory>
</cac:AllowanceCharge>
<cac:LegalMonetaryTotal>...<cbc:ChargeTotalAmount currencyID="EUR">5.90</cbc:ChargeTotalAmount>...</cac:LegalMonetaryTotal>

Co sprawdza walidator

Sprawdzany element (kontekst):

UBL

cac:LegalMonetaryTotal

Test (XPath):

xs:decimal(cbc:ChargeTotalAmount) = (round(sum(../cac:AllowanceCharge[cbc:ChargeIndicator=true()]/xs:decimal(cbc:Amount)) * 10 * 10) div 100) or (not(cbc:ChargeTotalAmount) and not(../cac:AllowanceCharge[cbc:ChargeIndicator=true()]))

CII

//ram:SpecifiedTradeSettlementHeaderMonetarySummation

Test (XPath):

(not(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true()])and not (ram:ChargeTotalAmount)) or ram:ChargeTotalAmount = (round(sum(/rsm:CrossIndustryInvoice/rsm:SupplyChainTradeTransaction/ram:ApplicableHeaderTradeSettlement/ram:SpecifiedTradeAllowanceCharge[ram:ChargeIndicator/udt:Indicator=true()]/ram:ActualAmount)* 10 * 10 ) div 100)

Popraw automatycznie

Ten błąd można poprawić automatycznie: po potwierdzeniu walidator przeliczy sumy i VAT z kwot pozycji.

Popraw fakturę →

To samo sprawdzenie przez API:

curl -F file=@invoice.xml https://einvoicechecker.com/v1/validate

Powiązane reguły

Najczęstsze pytania

Co oznacza BR-CO-12?

BR-CO-12 to reguła podstawowa en 16931: Sum of charges on document level (BT-108) = Σ Document level charge amount (BT-99).

Czy moja faktura zostanie odrzucona z powodu BR-CO-12?

Tak. BR-CO-12 ma status „krytyczny”; walidatory (KSeF, punkty dostępowe Peppol, KoSIT) odrzucają fakturę do czasu poprawienia błędu.

Jakich formatów dotyczy BR-CO-12?

Każda faktura EN 16931: XRechnung, ZUGFeRD 2.x / Factur-X (profile EN 16931, EXTENDED, XRECHNUNG), Peppol BIS Billing 3.0 oraz krajowe CIUS. Składnia: UBL i CII.

Źródło: EN 16931-1:2017 schematron (CEN TC434, via Peppol BIS 3.0.20). Katalog wygenerowany z oficjalnych zestawów reguł dnia 2026-10-15.