Konto
Polski

PEPPOL-EN16931-R120: Kwota netto pozycji nie równa się iloczynowi ilości i ceny

Reguła Peppol BIS Billing 3.0 · Błąd · UBL, CII

StandardPeppol BIS Billing 3.0 (OpenPeppol)WagaBłąd: faktura zostaje odrzuconaSkładniaUBL, CIIDotyczyFaktury i noty kredytowe przesyłane siecią Peppol (UBL) oraz, ponieważ XRechnung zawiera reguły Peppol, każda XRechnung.

Oficjalna treść reguły

[PEPPOL-EN16931-R120] Invoice line net amount MUST equal (Invoiced quantity * (Item net price/item price base quantity) + Sum of invoice line charge amount - sum of invoice line allowance amount

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

Dlaczego pojawia się ten błąd

Peppol weryfikuje arytmetykę każdej pozycji: kwota netto pozycji (BT-131) musi być równa ilości zafakturowanej (BT-129) razy cena netto (BT-146) podzielona przez ilość bazową ceny (BT-149, domyślnie 1), plus opłaty pozycji minus rabaty pozycji, z tolerancją 0,02. Reguła odczytuje cbc:LineExtensionAmount, cbc:InvoicedQuantity, cac:Price/cbc:PriceAmount, cac:Price/cbc:BaseQuantity i kwoty cac:AllowanceCharge pozycji (UBL) lub ram:LineTotalAmount, ram:BilledQuantity, ram:NetPriceProductTradePrice/ram:ChargeAmount, ram:BasisQuantity i ram:SpecifiedTradeAllowanceCharge (CII). Typowe przyczyny: eksport ceny brutto zamiast netto, cena za 100 sztuk bez ilości bazowej, rabaty pozycji już odjęte od ceny i odjęte ponownie lub różnica zaokrągleń przekraczająca dwa centy.

Jak to naprawić

Wzór: BT-131 = round(BT-129 x (BT-146 / BT-149) + Σ opłat pozycji - Σ rabatów pozycji, 2). Eksportuj cenę jednostkową netto w cbc:PriceAmount; jeśli cena dotyczy 10 lub 100 sztuk, ustaw odpowiednio cac:Price/cbc:BaseQuantity z tym samym unitCode co ilość. Modeluj rabat pozycji albo w cenie (rabat na poziomie ceny), albo jako cac:AllowanceCharge na poziomie pozycji, nigdy w obu miejscach. Obliczaj cbc:LineExtensionAmount z wyeksportowanych wartości, aby odchylenie nie przekraczało 0,02.

Przykład (poprawny)

<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">250</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="EUR">31.25</cbc:LineExtensionAmount>
  ...
  <cac:Price><cbc:PriceAmount currencyID="EUR">12.50</cbc:PriceAmount><cbc:BaseQuantity unitCode="C62">100</cbc:BaseQuantity></cac:Price>
</cac:InvoiceLine>

Co sprawdza walidator

Sprawdzany element (kontekst):

UBL

cac:InvoiceLine | cac:CreditNoteLine

Test (XPath):

u:slack($lineExtensionAmount, ($quantity * ($priceAmount div $baseQuantity)) + $chargesTotal - $allowancesTotal, 0.02)

CII

ram:IncludedSupplyChainTradeLineItem

Test (XPath):

u:slack($lineExtensionAmount, ($quantity * ($priceAmount div $baseQuantity)) + $chargesTotal - $allowancesTotal, 0.02)

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 PEPPOL-EN16931-R120?

PEPPOL-EN16931-R120 to reguła peppol bis billing 3.0: Invoice line net amount MUST equal (Invoiced quantity * (Item net price/item price base quantity) + Sum of invoice line charge amount - sum of invoice line allowance amount

Czy moja faktura zostanie odrzucona z powodu PEPPOL-EN16931-R120?

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

Jakich formatów dotyczy PEPPOL-EN16931-R120?

Faktury i noty kredytowe przesyłane siecią Peppol (UBL) oraz, ponieważ XRechnung zawiera reguły Peppol, każda XRechnung. Składnia: UBL i CII.

Źródło: Peppol BIS Billing 3.0.20 (November 2025). Katalog wygenerowany z oficjalnych zestawów reguł dnia 2026-10-15.