# PEPPOL-EN16931-R046 Nettoprijs van het artikel moet gelijk zijn aan de brutoprijs van het artikel min de prijskorting

Volgens Peppol-regel PEPPOL-EN16931-R046 moet, wanneer een brutoprijs van het artikel in BT-148 en een prijskorting in BT-147 zijn vermeld, de nettoprijs van het artikel in BT-146 exact voldoen aan: nettoprijs van het artikel = brutoprijs van het artikel − prijskorting.

## Probleembeschrijving

> **FOUT**: Regel van Peppol BIS Billing 3.0 (OpenPeppol)

## Context en betekenis

Afwijkingen tussen brutoprijs, prijskorting en nettoprijs activeren PEPPOL-EN16931-R046. Omdat de controle geen afrondingsmarge kent, faalt al een nettoprijs die op 2 decimalen is afgerond terwijl brutoprijs en korting 4 decimalen hebben. De fout ontstaat ook als een korting in cbc:Amount wordt geëxporteerd maar de nettoprijs gelijk blijft aan de brutoprijs.

## Oplossing

Zorg dat in uw ERP de netto-eenheidsprijs exact wordt berekend als de bruto-eenheidsprijs min de eenheidskorting. Zorg in UBL 2.1 binnen <cac:Price> dat <cbc:PriceAmount> exact gelijk is aan <cac:AllowanceCharge><cbc:BaseAmount> min <cbc:Amount>. De regel geldt alleen als cbc:BaseAmount (brutoprijs) aanwezig is en rekent zonder afrondingsmarge.

- [XML valideren](/nl/xrechnung-validator?source=resource&rule=PEPPOL-EN16931-R046)
- [Factuur converteren](/nl/pdf-to-xrechnung?source=resource&rule=PEPPOL-EN16931-R046)

## Geldige voorbeelden

- Brutoprijs BT-148 = 100,00 EUR, prijskorting BT-147 = 20,00 EUR, nettoprijs BT-146 = 80,00 EUR
- Brutoprijs BT-148 = 50,00 EUR, prijskorting BT-147 = 5,00 EUR, nettoprijs BT-146 = 45,00 EUR

## Ongeldige voorbeelden

- Brutoprijs 100,00 EUR min korting 20,00 EUR geëxporteerd met nettoprijs = 85,00 EUR (rekenverschil)
- Prijskorting vermeld als 10,00 EUR maar nettoprijs is gelijk aan brutoprijs zonder aftrek

## Codevoorbeelden

### Geldig XML
```
<cac:Price>
  <cbc:PriceAmount currencyID="EUR">80.00</cbc:PriceAmount>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
    <cbc:Amount currencyID="EUR">20.00</cbc:Amount>
    <cbc:BaseAmount currencyID="EUR">100.00</cbc:BaseAmount>
  </cac:AllowanceCharge>
</cac:Price>
```

### Ongeldig XML
```
<cac:Price>
  <cbc:PriceAmount currencyID="EUR">85.00</cbc:PriceAmount>
  <cac:AllowanceCharge>
    <cbc:ChargeIndicator>false</cbc:ChargeIndicator>
    <cbc:Amount currencyID="EUR">20.00</cbc:Amount>
    <cbc:BaseAmount currencyID="EUR">100.00</cbc:BaseAmount>
  </cac:AllowanceCharge>
</cac:Price>
```

## Betrokken velden

- [BT-146 Nettoprijs van het artikel](/resources/xrechnung/bt-146-item-net-price)
- [BT-148 Brutoprijs van het artikel](/resources/xrechnung/bt-148-item-gross-price)
- [BT-147 Prijskorting op het artikel](/resources/xrechnung/bt-147-item-price-discount)
- [BG-29 Prijsdetails](/resources/xrechnung/bt-146-item-net-price)

## Gerelateerde regels

- [BR-24](/resources/kosit-validator-errors/br-24-invoice-line-net-amount-must-be-present)
- [PEPPOL-EN16931-R120](/resources/kosit-validator-errors/peppol-en16931-r120-line-net-amount-formula)

## Validatietools

- [Officiële KoSIT-validator](https://github.com/itplr-kosit/validator): Draai de officiële KoSIT-validator met de XRechnung-configuratie om EN 16931- en XRechnung-regels te controleren.
- [PDF naar XRechnung converteren](/pdf-to-xrechnung): Vind validatiefouten tijdens de conversie en controleer elke correctie.

## Gerelateerde bronnen

- [Officiële specificatie](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-peppol/)
- [Testsuite](https://github.com/itplr-kosit/xrechnung-testsuite)
- [Alle validatiefouten](/resources/kosit-validator-errors): Overzicht van de hier uitgelegde validatieregels uit EN 16931, XRechnung en Peppol.
