# BR-47 Le code de catégorie de TVA doit être présent dans chaque ventilation de TVA

En vertu de la règle EN 16931 BR-47, chaque groupe de ventilation de TVA (BG-23) doit indiquer dans BT-118 (TaxCategory ID) un code de catégorie de TVA issu du sous-ensemble UNTDID 5305 autorisé par la norme (BR-CL-17 en UBL / BR-CL-18 en CII), notamment : « S » pour le taux normal (y compris les taux réduits, le taux figurant dans BT-119), « Z » pour le taux zéro, « E » pour l’exonération, « AE » pour l’autoliquidation, « K » pour la livraison intracommunautaire, « G » pour l’exportation hors UE, « O » pour les opérations hors champ de la TVA, « L » et « M » pour les îles Canaries (IGIC) et Ceuta/Melilla (IPSI), « B » pour le paiement scindé (Italie uniquement). Chaque ventilation regroupe la base imposable (BT-116) et le montant de TVA (BT-117) d’une catégorie et d’un taux.

## Description du problème

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

> **Où BR-47 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-47 : 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. Sans BT-118 dans BG-23, ni le destinataire ni l’administration fiscale ne peuvent rattacher la base imposable et le montant de TVA à une catégorie, et les règles par catégorie (BR-S, BR-AE, BR-E…) ne peuvent pas s’appliquer. L’erreur survient souvent lorsqu’un export n’écrit que le pourcentage dans cac:TaxCategory. Un code hors de la liste autorisée, comme « AA » pour un taux réduit, ne déclenche pas BR-47 mais échoue sur BR-CL-17 (UBL) ou BR-CL-18 (CII).

## Solution

Dans la configuration fiscale de votre ERP, assurez-vous que chaque ventilation de TVA dans TaxTotal comporte le code de catégorie fiscale. En UBL 2.1, renseignez <cac:TaxSubtotal><cac:TaxCategory><cbc:ID>S</cbc:ID><cbc:Percent>19.00</cbc:Percent><cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme></cac:TaxCategory></cac:TaxSubtotal> sous <cac:TaxTotal>. En CII, renseignez <ram:CategoryCode> sous <ram:ApplicableHeaderTradeSettlement><ram:ApplicableTradeTax>.

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

## Exemples valides

- Ventilation de TVA BG-23 avec BT-118 = « S » (taux normal de TVA à 19 %)
- Ventilation de TVA BG-23 avec BT-118 = « AE » (opération en autoliquidation)

## Exemples invalides

- cac:TaxSubtotal déclare la base et le montant de taxe mais omet cbc:ID dans cac:TaxCategory
- ram:ApplicableTradeTax (CII) avec ram:TypeCode VAT, ram:BasisAmount et ram:CalculatedAmount mais sans ram:CategoryCode

## Exemples de code

### XML valide
```
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="EUR">19.00</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="EUR">100.00</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="EUR">19.00</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:ID>S</cbc:ID>
      <cbc:Percent>19.00</cbc:Percent>
      <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
    </cac:TaxCategory>
  </cac:TaxSubtotal>
</cac:TaxTotal>
```

### XML invalide
```
<cac:TaxTotal>
  <cbc:TaxAmount currencyID="EUR">19.00</cbc:TaxAmount>
  <cac:TaxSubtotal>
    <cbc:TaxableAmount currencyID="EUR">100.00</cbc:TaxableAmount>
    <cbc:TaxAmount currencyID="EUR">19.00</cbc:TaxAmount>
    <cac:TaxCategory>
      <cbc:Percent>19.00</cbc:Percent>
      <cac:TaxScheme><cbc:ID>VAT</cbc:ID></cac:TaxScheme>
    </cac:TaxCategory>
  </cac:TaxSubtotal>
</cac:TaxTotal>
```

## Champs concernés

- [BT-118 Code de catégorie de TVA](/resources/xrechnung/bt-118-vat-category-code)
- [BG-23 Ventilation de TVA](/resources/xrechnung/bt-116-vat-category-taxable-amount)
- [BT-116 Montant imposable par catégorie de TVA](/resources/xrechnung/bt-116-vat-category-taxable-amount)
- [BT-117 Montant de taxe par catégorie de TVA](/resources/xrechnung/bt-117-vat-category-tax-amount)

## Règles associées

- [BR-CO-17](/resources/kosit-validator-errors/br-co-17-vat-category-tax-amount-must-match-base-times-rate)
- [BR-48](/resources/kosit-validator-errors/br-48-vat-breakdown-category-rate-required)
- [BR-CL-17](/resources/kosit-validator-errors/br-cl-17-uncl5305-document-tax-category)
- [BR-CL-18](/resources/kosit-validator-errors/br-cl-18-uncl5305-line-tax-category)

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