# BR-23 Le code d’unité de mesure de la quantité facturée doit être spécifié

Selon la règle EN 16931 BR-23, chaque quantité facturée dans BT-129 doit comporter un code d’unité de mesure dans BT-130 (@unitCode). Le code doit être issu des recommandations CEE-ONU 20 ou 21 (ex. « H87 » pour pièce, « C62 » pour unité, « KGM » pour kilogramme, « HUR » pour heure). Sans attribut unitCode, l’unité de la quantité facturée reste indéterminée.

## Description du problème

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

> **Où BR-23 est contrôlée**
>
> Un validateur contrôle une facture électronique par étapes. D’abord, le fichier doit être un XML bien formé conforme au schéma UBL ou CII (XSD). Viennent ensuite les règles métier de l’EN 16931 : règles de base BR, calculs BR-CO, listes de codes BR-CL, décimales BR-DEC et règles par catégorie de TVA comme BR-S. Puis les règles nationales ou de réseau sélectionnées par BT-24 : BR-DE pour XRechnung, PEPPOL-EN16931 pour Peppol BIS Billing. Le rapport liste chaque règle en échec : une erreur signifie rejet, des avertissements seuls signifient toujours acceptation. BR-23 : règle de base EN 16931, étape « Règles EN 16931 ».

## Contexte et importance

Il s’agit d’une règle de base de la norme EN 16931. Une quantité sans attribut unitCode enfreint BR-23 ; un attribut avec un code vide ou inconnu enfreint plutôt la règle de liste de codes BR-CL-23. BR-23 apparaît surtout lorsque l’export n’a aucune correspondance d’unités et écrit la quantité seule, tandis qu’une unité ERP comme « pce » recopiée dans unitCode déclenche BR-CL-23.

## Solution

Dans votre ERP, vérifiez que chaque quantité facturée comporte un code d’unité CEE-ONU valide. En UBL 2.1, renseignez l’attribut unitCode : <cbc:InvoicedQuantity unitCode="H87">10.00</cbc:InvoicedQuantity>. En CII, renseignez l’attribut unitCode : <ram:BilledQuantity unitCode="H87">10.00</ram:BilledQuantity>.

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

## Exemples valides

- Ligne de facture avec BT-129 = 10 et BT-130 = « H87 » (10 pièces)
- Ligne de facture avec BT-129 = 40.5 et BT-130 = « HUR » (40,5 heures)

## Exemples invalides

- cac:InvoiceLine contient une quantité numérique mais omet l’attribut unitCode (<cbc:InvoicedQuantity>10</cbc:InvoicedQuantity>)
- Une ligne d’avoir avec <cbc:CreditedQuantity>2</cbc:CreditedQuantity> sans attribut unitCode ; un unitCode vide ou inconnu déclenche plutôt la règle de liste de codes BR-CL-23

## Exemples de code

### XML valide
```
<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:InvoicedQuantity unitCode="H87">10</cbc:InvoicedQuantity>
</cac:InvoiceLine>
```

### XML invalide
```
<cac:InvoiceLine>
  <cbc:ID>1</cbc:ID>
  <cbc:InvoicedQuantity>10</cbc:InvoicedQuantity>
</cac:InvoiceLine>
```

## Champs concernés

- [BT-130 Code unité de mesure de la quantité facturée](/resources/xrechnung/bt-130-invoice-line-quantity-unit-of-measure-code)
- [BT-129 Quantité facturée](/resources/xrechnung/bt-129-invoice-line-quantity)
- [BG-25 Ligne de facture](/resources/xrechnung/bt-126-invoice-line-identifier)

## Règles associées

- [BR-22](/resources/kosit-validator-errors/br-22-invoice-line-quantity-must-be-present)
- [BR-CL-23](/resources/kosit-validator-errors/br-cl-23-unece-rec20-unit-code)

## 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.
