Peppol-foutcodes

PEPPOL-EN16931-R046 / R044: korting op de prijs klopt niet

Foutcode PEPPOL-EN16931-R046 / PEPPOL-EN16931-R044 betekent: de nettoprijs is niet gelijk aan de brutoprijs min de korting (R046), of er staat een toeslag op prijsniveau (R044).

Regelset: Peppol BIS Billing 3.0 · Ernst: fout (fatal): een Access Point weigert de factuur · Gecontroleerd met de officiële regels van mei 2026

Wat betekent PEPPOL-EN16931-R046 / PEPPOL-EN16931-R044?

De validator toont deze melding (in het Engels, zoals in de officiële regels):

[PEPPOL-EN16931-R046]-Item net price MUST equal (Gross price - Allowance amount) when gross price is provided.
[PEPPOL-EN16931-R044]-Charge on price level is NOT allowed. Only value 'false' allowed.

Een korting op de eenheidsprijs staat in UBL in cac:Price/cac:AllowanceCharge. De brutoprijs (BT-148) staat in cbc:BaseAmount, de korting per eenheid (BT-147) in cbc:Amount en de nettoprijs (BT-146) in cbc:PriceAmount. PEPPOL-EN16931-R046 controleert dat de nettoprijs gelijk is aan de brutoprijs min de korting. PEPPOL-EN16931-R044 zegt bovendien dat op prijsniveau alleen een korting mag staan, geen toeslag: cbc:ChargeIndicator is daar altijd false.

Veelvoorkomende oorzaken

  • Het pakket zet een kortingspercentage om naar een bedrag en rondt dat anders af dan de nettoprijs.
  • De korting wordt in cbc:Amount voor de hele lijn vermeld in plaats van per eenheid.
  • Een toeslag, zoals een milieubijdrage, staat als ChargeIndicator true op prijsniveau.

Zo los je het op als verzender

  1. Vermeld in cbc:Amount de korting per eenheid, niet voor de hele lijn.
  2. Zorg dat cbc:PriceAmount precies gelijk is aan cbc:BaseAmount min cbc:Amount.
  3. Zet toeslagen niet op prijsniveau, maar als toeslag op lijnniveau of op documentniveau. Valideer opnieuw.

Je ontving een factuur met deze fout?

Een factuur met deze fout is niet conform. Vraag de leverancier om een gecorrigeerde factuur en pas de XML niet zelf aan.

Voorbeeld in de XML

❌ Fout

<cac:Price>
  <cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
    <cbc:Amount currencyID="EUR">25.00</cbc:Amount>
    <cbc:BaseAmount currencyID="EUR">120.00</cbc:BaseAmount>
  </cac:AllowanceCharge>
</cac:Price>
<!-- 120.00 - 25.00 = 95.00, niet 100.00 -->

✅ Juist

<cac:Price>
  <cbc:PriceAmount currencyID="EUR">100.00</cbc:PriceAmount>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
    <cbc:Amount currencyID="EUR">20.00</cbc:Amount>
    <cbc:BaseAmount currencyID="EUR">120.00</cbc:BaseAmount>
  </cac:AllowanceCharge>
</cac:Price>

Beide fragmenten komen uit een volledige testfactuur die we met onze validator hebben gecontroleerd: de foute versie geeft precies deze melding, de juiste versie geen enkele fout.

Goed om te weten

Een korting op prijsniveau is informatief: het lijnbedrag wordt berekend met de nettoprijs. Een korting die het lijnbedrag zelf verlaagt, hoort als cac:AllowanceCharge direct onder de factuurlijn.

Controleer je factuur

Plak of sleep je XML in de gratis validator. Je ziet meteen of deze fout (nog) voorkomt, met een link naar de uitleg bij elke melding.

Officiële regel

De volledige regel met de technische test (Schematron) staat in de officiële Peppol-documentatie:

Verwante foutcodes

  • PEPPOL-EN16931-R120: Het nettobedrag van een factuurlijn is niet gelijk aan hoeveelheid × eenheidsprijs, plus toeslagen en min kortingen op die lijn.
  • BR-CO-10: Het totaal van de factuurlijnen onderaan de factuur is niet gelijk aan de som van de lijnbedragen.

Veelgestelde vragen over PEPPOL-EN16931-R046 / PEPPOL-EN16931-R044

Moet ik de brutoprijs vermelden?

Nee, de brutoprijs en de korting op prijsniveau zijn optioneel. Vermeld je ze wel, dan moeten ze kloppen met de nettoprijs.

Waar zet ik een toeslag op een product?

Als toeslag op de factuurlijn (cac:InvoiceLine/cac:AllowanceCharge met ChargeIndicator true), of als aparte factuurlijn.

← Alle Peppol-foutcodes