# BR-27 Le prix net de l’article ne doit pas être négatif

Le prix net de l’article (BT-146) ne doit pas être négatif ; même en cas de remise, le prix net reste positif ou nul.

## Description du problème

> **ERREUR**: Règle métier de la norme EN 16931 (CEN)

## Contexte et importance

Il s’agit d’une règle de base de la norme EN 16931 qui contrôle une valeur, et non la présence d’un champ. En pratique, l’erreur survient lorsqu’un rabais, un retour ou une correction est saisi comme prix unitaire négatif. La norme EN 16931 impose un prix net positif ou nul : une remise se déclare comme remise de ligne (BG-27), un retour de marchandise par une quantité facturée négative (BT-129) et l’annulation d’une facture par un avoir (code 381).

## Solution

Fixez cac:Price/cbc:PriceAmount (CII : ram:NetPriceProductTradePrice/ram:ChargeAmount) à une valeur positive ou nulle. Déclarez une remise comme remise de ligne (BG-27). Pour un retour ou une régularisation, utilisez une quantité facturée négative (BT-129) avec un prix positif, ou émettez un avoir.

- [Valider le XML](/fr/xrechnung-validator?source=resource&rule=BR-27)
- [Convertir la facture](/fr/pdf-to-xrechnung?source=resource&rule=BR-27)

## Exemples valides

- BT-146 = 12.50 — prix net positif ou nul accepté

## Exemples invalides

- BT-146 = -5.00 — prix net négatif rejeté

## Exemples de code

### XML valide
```
<cac:Price>
  <cbc:PriceAmount currencyID="EUR">12.50</cbc:PriceAmount>
</cac:Price>
```

### XML invalide
```
<cac:Price>
  <cbc:PriceAmount currencyID="EUR">-5.00</cbc:PriceAmount>
</cac:Price>
```

## Champs concernés

- [BT-146 Prix net de l’article](/resources/xrechnung/bt-146-item-net-price)

## Règles associées

- [BR-28](/resources/kosit-validator-errors/br-28-item-gross-price-not-negative)

## Outils de validation

- [Validateur KoSIT officiel](https://github.com/itplr-kosit/validator): Exécutez le validateur officiel du KoSIT avec la configuration XRechnung pour contrôler les règles EN 16931 et XRechnung.
- [Convertir un PDF en XRechnung](/pdf-to-xrechnung): Repérez les erreurs de validation pendant la conversion et vérifiez chaque correction.

## Ressources associées

- [Spécification officielle](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/)
- [Suite de tests](https://github.com/itplr-kosit/xrechnung-testsuite)
- [Toutes les erreurs de validation](/resources/kosit-validator-errors): Vue d’ensemble des règles de validation EN 16931, XRechnung et Peppol expliquées ici.
