Konto
Polski

PEPPOL-EN16931-R040: Kwota rabatu lub opłaty różni się od iloczynu podstawy i procentu

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-R040] Allowance/charge amount must equal base amount * percentage/100 if base amount and percentage exists

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

Dlaczego pojawia się ten błąd

Gdy rabat lub opłata (narzut) podaje zarówno kwotę bazową, jak i procent, kwota musi być równa podstawa x procent / 100, z tolerancją 0,02. Reguła porównuje cbc:Amount z cbc:BaseAmount i cbc:MultiplierFactorNumeric w cac:AllowanceCharge na poziomie dokumentu i pozycji (UBL) lub ram:ActualAmount z ram:BasisAmount i ram:CalculationPercent w ram:SpecifiedTradeAllowanceCharge (CII). Błąd pojawia się, gdy procent zapisano jako ułamek (0.10 zamiast 10), gdy kwota bazowa odnosi się do innej podstawy niż ta, od której obliczono kwotę, lub gdy kwotę zaokrąglono inaczej.

Jak to naprawić

Wzór: Amount = round(BaseAmount x MultiplierFactorNumeric / 100, 2). Zapisz procent jako liczbę procent (10 dla 10 %). Ustaw BaseAmount na kwotę, od której faktycznie naliczono rabat (zwykle suma objętych pozycji), i oblicz z niej Amount. Jeśli nie możesz podać spójnej podstawy, pomiń zarówno cbc:BaseAmount, jak i cbc:MultiplierFactorNumeric i podaj tylko cbc:Amount, co jest zawsze dozwolone.

Przykład (poprawny)

<cac:AllowanceCharge>
  <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
  <cbc:AllowanceChargeReason>Discount</cbc:AllowanceChargeReason>
  <cbc:MultiplierFactorNumeric>10</cbc:MultiplierFactorNumeric>
  <cbc:Amount currencyID="EUR">25.00</cbc:Amount>
  <cbc:BaseAmount currencyID="EUR">250.00</cbc:BaseAmount>
  <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>

Co sprawdza walidator

Sprawdzany element (kontekst):

UBL

ubl-invoice:Invoice/cac:AllowanceCharge | ubl-invoice:Invoice/cac:InvoiceLine/cac:AllowanceCharge | ubl-creditnote:CreditNote/cac:AllowanceCharge | ubl-creditnote:CreditNote/cac:CreditNoteLine/cac:AllowanceCharge

Test (XPath):

not(cbc:MultiplierFactorNumeric and cbc:BaseAmount) or u:slack(if (cbc:Amount) then
            cbc:Amount
          else
            0, (xs:decimal(cbc:BaseAmount) * xs:decimal(cbc:MultiplierFactorNumeric)) div 100, 0.02)

CII

ram:SpecifiedTradeAllowanceCharge

Test (XPath):

not(ram:CalculationPercent and ram:BasisAmount) or u:slack(if (ram:ActualAmount) then
                        ram:ActualAmount
                    else
                        0, (xs:decimal(ram:BasisAmount) * xs:decimal(ram:CalculationPercent)) div 100, 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-R040?

PEPPOL-EN16931-R040 to reguła peppol bis billing 3.0: Allowance/charge amount must equal base amount * percentage/100 if base amount and percentage exists

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

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

Jakich formatów dotyczy PEPPOL-EN16931-R040?

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.