BT-99Document level charge amountBT-108Sum of charges on document level
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:LegalMonetaryTotalTest (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:SpecifiedTradeSettlementHeaderMonetarySummationTest (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.
To samo sprawdzenie przez API:
curl -F file=@invoice.xml https://einvoicechecker.com/v1/validatePowiązane reguły
BR-CO-13Kwota bez VAT (BT-109) nie zgadza się z wyliczeniemBR-36Każda opłata na poziomie dokumentu musi mieć kwotę opłatyBR-AE-08W zestawieniu VAT z kategorią „Odwrotne obciążenie”…BR-AF-08Dla każdej odrębnej stawki VAT w kategorii „IGIC”,…BR-AG-08Dla każdej odrębnej stawki VAT w kategorii „IPSI”,…BR-DEC-05Maksymalna liczba miejsc dziesiętnych dla kwoty opłaty na poziomie dokumentu to 2BR-DEC-11Maksymalna liczba miejsc dziesiętnych dla sumy opłat na poziomie dokumentu to 2BR-E-08W zestawieniu VAT z kategorią „Zwolnione z VAT”…
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.