# BR-51 Le numéro de carte de paiement (PAN) doit être masqué

Conformément aux normes de sécurité des paiements par carte, la facture ne doit jamais inclure un numéro de carte complet (BT-87) ; selon le PCI Security Standards Council, au maximum les 6 premiers et les 4 derniers chiffres peuvent figurer sur la facture.

## Description du problème

> **AVERTISSEMENT**: 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 dont la gravité dépend de la syntaxe : avertissement en UBL, erreur bloquante en CII. Il protège les données de carte : une facture circule entre plusieurs systèmes et ne doit jamais exposer un numéro de carte exploitable. Le message apparaît quand l’ERP exporte le numéro complet ou un numéro masqué de plus de 10 caractères, même si les chiffres du milieu sont remplacés par des astérisques.

## Solution

Dans cac:CardAccount/cbc:PrimaryAccountNumberID (CII : ram:ApplicableTradeSettlementFinancialCard/ram:ID), n’indiquez que les derniers chiffres de la carte, par exemple les 4 derniers, sans caractères de masquage : le Schematron signale tout numéro de plus de 10 caractères, y compris un numéro masqué de 16 caractères.

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

## Exemples valides

- BT-87 = 1881 (4 derniers chiffres uniquement)

## Exemples invalides

- BT-87 = 4012888888881881 (numéro complet exposé)
- BT-87 = 401288******1881 (masqué, mais 16 caractères, soit plus de 10)

## Exemples de code

### XML valide
```
<cac:PaymentMeans>
  <cbc:PaymentMeansCode>48</cbc:PaymentMeansCode>
  <cac:CardAccount>
    <cbc:PrimaryAccountNumberID>1881</cbc:PrimaryAccountNumberID>
    <cbc:NetworkID>VISA</cbc:NetworkID>
  </cac:CardAccount>
</cac:PaymentMeans>
```

### XML invalide
```
<cac:PaymentMeans>
  <cbc:PaymentMeansCode>48</cbc:PaymentMeansCode>
  <cac:CardAccount>
    <cbc:PrimaryAccountNumberID>401288******1881</cbc:PrimaryAccountNumberID>
    <cbc:NetworkID>VISA</cbc:NetworkID>
  </cac:CardAccount>
</cac:PaymentMeans>
```

## Champs concernés

- [BT-87 Numéro principal de la carte de paiement](/resources/xrechnung/bt-87-payment-card-primary-account-number)

## Règles associées

- [BR-49](/resources/kosit-validator-errors/br-49-payment-means-type-code-required)

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