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

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