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

Gemäß Peppol-Regel PEPPOL-EN16931-R046 muss der Artikelnettopreis in BT-146 (PriceAmount), wenn auf einer Rechnungsposition ein Artikelbruttopreis in BT-148 (GrossPrice) und ein Preisnachlass in BT-147 (PriceAllowance) angegeben sind, exakt der arithmetischen Gleichung entsprechen: Artikelnettopreis = Artikelbruttopreis - Preisnachlass. Validierungs-Engines erzwingen eine präzise Rundungsgleichheit, um Rundungsdifferenzen zwischen den ERP-Systemen auszuschließen.

## Problembeschreibung

Gemäß Peppol-Regel PEPPOL-EN16931-R046 muss der Artikelnettopreis in BT-146 (PriceAmount), wenn auf einer Rechnungsposition ein Artikelbruttopreis in BT-148 (GrossPrice) und ein Preisnachlass in BT-147 (PriceAllowance) angegeben sind, exakt der arithmetischen Gleichung entsprechen: Artikelnettopreis = Artikelbruttopreis - Preisnachlass. Validierungs-Engines erzwingen eine präzise Rundungsgleichheit, um Rundungsdifferenzen zwischen den ERP-Systemen auszuschließen.

> **FEHLER**: XRechnung 3.0

## Kontext und Bedeutung

Abweichungen zwischen Bruttopreis, Preisnachlass und Nettopreis lösen PEPPOL-EN16931-R046 aus. Preisnachlassberechnungen müssen mathematisch exakt sein.

## Lösung

Stellen Sie in der Preisberechnung Ihres ERP-Systems sicher, dass der Einzelnettopreis exakt als Bruttolistenpreis abzüglich des Einzelpreisnachlasses berechnet wird. In UBL 2.1 unter <cac:Price> muss <cbc:PriceAmount> der Differenz aus Bruttopreis und <cac:AllowanceCharge><cbc:Amount> entsprechen. In UN/CEFACT CII muss <ram:NetPriceProductTradePrice><ram:ChargeAmount> gleich Brutto-ChargeAmount minus Nachlassbetrag sein.

- validate
- convert

## 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>
  <!-- 100.00 - 20.00 must equal 80.00, not 85.00 -->
  <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)

## 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://erechnungsvalidator.service-bw.de/): Überprüfen Sie Ihre XRechnung-Dateien gegen alle BR-DE-Regeln.
- [PDF zu XRechnung konvertieren](/pdf-to-xrechnung): Validierungsfehler beim Konvertieren erkennen, prüfen und gezielt beheben.

## Verwandte Ressourcen

- [Offizielle Spezifikation](https://xeinkauf.de/xrechnung/)
- [Testsuite](https://github.com/itplr-kosit/xrechnung-testsuite)
- [Vollständige Fehlerliste](/resources/kosit-validator-errors): Übersicht aller deutschen XRechnung-Validierungsregeln.
