BT-112Invoice total amount with VATBT-113Paid amountBT-114Rounding amountBT-115Amount due for payment
Oficjalna treść reguły
[BR-CO-16] Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).
Tekst normatywny jest w języku angielskim i cytowany bez zmian.
Dlaczego pojawia się ten błąd
Kwota do zapłaty (BT-115) musi być równa kwocie z VAT (BT-112) pomniejszonej o kwotę zapłaconą (BT-113) i powiększonej o kwotę zaokrąglenia (BT-114). Reguła sprawdza cac:LegalMonetaryTotal/cbc:PayableAmount względem cbc:TaxInclusiveAmount, cbc:PrepaidAmount i cbc:PayableRoundingAmount (UBL) lub ram:DuePayableAmount względem ram:GrandTotalAmount, ram:TotalPrepaidAmount i ram:RoundingAmount (CII). Zwykle błąd występuje, gdy oprogramowanie po płatności częściowej wpisuje pozostałe saldo, nie wpisując jednocześnie kwoty przedpłaty, albo stosuje niewłaściwy znak kwoty zaokrąglenia.
Jak to naprawić
Wzór: BT-115 = BT-112 - BT-113 + BT-114, zaokrąglone do 2 miejsc po przecinku; brakujące BT-113 lub BT-114 liczy się jako 0. Jeśli otrzymano przedpłatę, wpisz ją jako wartość dodatnią w cbc:PrepaidAmount / ram:TotalPrepaidAmount i odpowiednio zmniejsz cbc:PayableAmount / ram:DuePayableAmount. Używaj cbc:PayableRoundingAmount / ram:RoundingAmount wyłącznie do zaokrągleń gotówkowych, ze znakiem korekty (np. -0.02 lub 0.03). W przypadku faktury zapłaconej w całości PrepaidAmount jest równe TaxInclusiveAmount, a PayableAmount wynosi 0.00.
Przykład (poprawny)
<cac:LegalMonetaryTotal>
<cbc:LineExtensionAmount currencyID="EUR">200.00</cbc:LineExtensionAmount>
<cbc:TaxExclusiveAmount currencyID="EUR">200.00</cbc:TaxExclusiveAmount>
<cbc:TaxInclusiveAmount currencyID="EUR">238.00</cbc:TaxInclusiveAmount>
<cbc:PrepaidAmount currencyID="EUR">100.00</cbc:PrepaidAmount>
<cbc:PayableAmount currencyID="EUR">138.00</cbc:PayableAmount>
</cac:LegalMonetaryTotal>
Co sprawdza walidator
Sprawdzany element (kontekst):
UBL
cac:LegalMonetaryTotalTest (XPath):
(exists(cbc:PrepaidAmount) and not(exists(cbc:PayableRoundingAmount)) and (xs:decimal(cbc:PayableAmount) = (round((xs:decimal(cbc:TaxInclusiveAmount) - xs:decimal(cbc:PrepaidAmount)) * 10 * 10) div 100))) or (not(exists(cbc:PrepaidAmount)) and not(exists(cbc:PayableRoundingAmount)) and xs:decimal(cbc:PayableAmount) = xs:decimal(cbc:TaxInclusiveAmount)) or (exists(cbc:PrepaidAmount) and exists(cbc:PayableRoundingAmount) and ((round((xs:decimal(cbc:PayableAmount) - xs:decimal(cbc:PayableRoundingAmount)) * 10 * 10) div 100) = (round((xs:decimal(cbc:TaxInclusiveAmount) - xs:decimal(cbc:PrepaidAmount)) * 10 * 10) div 100))) or (not(exists(cbc:PrepaidAmount)) and exists(cbc:PayableRoundingAmount) and ((round((xs:decimal(cbc:PayableAmount) - xs:decimal(cbc:PayableRoundingAmount)) * 10 * 10) div 100) = xs:decimal(cbc:TaxInclusiveAmount)))CII
//ram:SpecifiedTradeSettlementHeaderMonetarySummationTest (XPath):
(xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount) + xs:decimal(ram:RoundingAmount)) or ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) + xs:decimal(ram:RoundingAmount)) and not (xs:decimal(ram:TotalPrepaidAmount))) or ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount) - xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount))) or ((xs:decimal(ram:DuePayableAmount) = xs:decimal(ram:GrandTotalAmount)) and not (xs:decimal(ram:TotalPrepaidAmount)) and not (xs:decimal(ram:RoundingAmount)))
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-15Kwota brutto (BT-112) nie jest sumą kwoty netto i VATBR-CO-25Kwota do zapłaty bez terminu płatności lub warunków płatnościBR-14Faktura musi zawierać łączną kwotę z VATBR-15Faktura musi zawierać kwotę do zapłatyBR-DEC-14Maksymalna liczba miejsc dziesiętnych dla łącznej kwoty z VAT to 2BR-DEC-16Maksymalna liczba miejsc dziesiętnych dla kwoty zapłaconej to 2BR-DEC-17Maksymalna liczba miejsc dziesiętnych dla kwoty zaokrąglenia to 2BR-DEC-18Maksymalna liczba miejsc dziesiętnych dla kwoty do zapłaty to 2
Najczęstsze pytania
Co oznacza BR-CO-16?
BR-CO-16 to reguła podstawowa en 16931: Amount due for payment (BT-115) = Invoice total amount with VAT (BT-112) -Paid amount (BT-113) +Rounding amount (BT-114).
Czy moja faktura zostanie odrzucona z powodu BR-CO-16?
Tak. BR-CO-16 ma status „krytyczny”; walidatory (KSeF, punkty dostępowe Peppol, KoSIT) odrzucają fakturę do czasu poprawienia błędu.
Jakich formatów dotyczy BR-CO-16?
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.