# PEPPOL-EN16931-R046 Artikelnettopreis muss dem Artikelbruttopreis abzüglich des Preisnachlasses entsprechen

Gemäß Peppol-Regel PEPPOL-EN16931-R046 muss der Artikelnettopreis in BT-146 (cbc:PriceAmount), wenn auf einer Rechnungsposition ein Artikelbruttopreis in BT-148 (cbc:BaseAmount) und ein Preisnachlass in BT-147 (cbc:Amount) angegeben sind, exakt der Gleichung entsprechen: Nettopreis = Bruttopreis − Preisnachlass. Die Regel greift nur, wenn der Bruttopreis vorhanden ist, und vergleicht exakte Dezimalwerte ohne Rundungstoleranz.

## Problembeschreibung

> **FEHLER**: Regel von Peppol BIS Billing 3.0 (OpenPeppol)

> **Wo PEPPOL-EN16931-R046 geprüft wird**
>
> Ein Validator prüft eine E-Rechnung in Stufen. Zuerst muss die Datei wohlgeformtes XML sein und zum UBL- oder CII-Schema (XSD) passen. Dann laufen die Geschäftsregeln der EN 16931: BR-Kernregeln, BR-CO-Berechnungen, BR-CL-Codelisten, BR-DEC-Nachkommastellen und Regeln je Umsatzsteuerkategorie wie BR-S. Danach folgen die nationalen oder Netzwerk-Regeln, die BT-24 auswählt: BR-DE für XRechnung, PEPPOL-EN16931 für Peppol BIS Billing. Der Bericht nennt jede verletzte Regel: Ein Fehler bedeutet Ablehnung, nur Warnungen bedeuten weiterhin Annahme. PEPPOL-EN16931-R046: Regel von Peppol BIS Billing, gemeldet in der Stufe „Nationale Regeln (CIUS)“.

## Kontext und Bedeutung

Abweichungen zwischen Bruttopreis, Preisnachlass und Nettopreis lösen PEPPOL-EN16931-R046 aus. Da die Prüfung keine Rundungstoleranz kennt, scheitert bereits ein auf 2 Nachkommastellen gerundeter Nettopreis, wenn Bruttopreis und Nachlass 4 Nachkommastellen haben. Der Fehler tritt auch auf, wenn ein Nachlass in cbc:Amount exportiert wird, der Nettopreis aber weiter dem Bruttopreis entspricht.

## Lösung

Berechnen Sie in der Preisfindung Ihres ERP-Systems den Einzelnettopreis vor dem Export als Bruttoeinzelpreis abzüglich des Einzelpreisnachlasses, mit derselben Dezimalgenauigkeit für alle drei Werte. In UBL 2.1 muss innerhalb von <cac:Price> <cbc:PriceAmount> exakt <cac:AllowanceCharge><cbc:BaseAmount> minus <cbc:Amount> entsprechen. Geben Sie keinen Bruttopreis an, lassen Sie cbc:BaseAmount weg; R046 wird dann nicht geprüft.

- [XML validieren](/de/xrechnung-validator?source=resource&rule=PEPPOL-EN16931-R046)
- [Rechnung konvertieren](/de/pdf-to-xrechnung?source=resource&rule=PEPPOL-EN16931-R046)

## Gültige Beispiele

- Bruttopreis BT-148 = 100.00 EUR, Preisnachlass BT-147 = 20.00 EUR, Nettopreis BT-146 = 80.00 EUR
- Bruttopreis BT-148 = 50.00 EUR, Preisnachlass BT-147 = 5.00 EUR, Nettopreis BT-146 = 45.00 EUR

## Ungültige Beispiele

- Bruttopreis 100.00 EUR abzüglich Nachlass 20.00 EUR exportiert mit Nettopreis = 85.00 EUR (Rechenfehler)
- Preisnachlass als 10.00 EUR deklariert, aber Nettopreis entspricht dem Bruttopreis ohne Abzug

## Code-Beispiele

### Gültiges 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>
```

### Ungültiges 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>
```

## Betroffene Felder

- [BT-146 Artikelnettopreis](/resources/xrechnung/bt-146-item-net-price)
- [BT-148 Artikelbruttopreis](/resources/xrechnung/bt-148-item-gross-price)
- [BT-147 Artikelpreisnachlass](/resources/xrechnung/bt-147-item-price-discount)
- [BG-29 Preisdetails](/resources/xrechnung/bt-146-item-net-price)

## Verwandte Regeln

- [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)

## Validierungstools

- [Offizieller KoSIT Validator](https://github.com/itplr-kosit/validator): Führen Sie den offiziellen KoSIT-Validator mit der XRechnung-Konfiguration aus, um EN-16931- und XRechnung-Regeln zu prüfen.
- [PDF zu XRechnung konvertieren](/pdf-to-xrechnung): Validierungsfehler beim Konvertieren erkennen, prüfen und gezielt beheben.

## Verwandte Ressourcen

- [Offizielle Spezifikation](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-peppol/)
- [Testsuite](https://github.com/itplr-kosit/xrechnung-testsuite)
- [Alle Validierungsfehler](/resources/kosit-validator-errors): Übersicht der hier erklärten Validierungsregeln aus EN 16931, XRechnung und Peppol.
