BR-51: Vollständige Kartennummer in der Rechnung
Bei Kartenzahlung darf die Rechnung nie die komplette Kartennummer (BT-87) enthalten. Erlaubt sind höchstens die ersten 6 und letzten 4 Ziffern.
In accordance with card payments security standards an invoice should never include a full card primary account number (BT-87). At the moment PCI Security Standards Council has defined that the first 6 digits and last 4 digits are the maximum number of digits to be shown.
Diese Regel ist keine Formalie der Rechnungsnorm, sondern eine Sicherheitsvorgabe: Eine Rechnung wird gespeichert, weitergeleitet und archiviert, und darf deshalb nie eine vollständige Kartennummer transportieren.
Was die Regel prüft
Wenn die Rechnung Kartenzahlungsinformationen enthält, prüft der Validator das Feld BT-87 (Payment card primary account number). BT steht für Business Term, das nummerierte Feld der Norm. Die Nummer muss maskiert sein: Nach dem PCI-DSS-Standard des PCI Security Standards Council dürfen höchstens die ersten 6 und die letzten 4 Ziffern im Klartext stehen. Eine typische 16-stellige Kartennummer in voller Länge ist ein Verstoß.
Im CII-Format steht die Nummer in ram:ApplicableTradeSettlementFinancialCard als ram:ID.
Warum sie in der Praxis fehlschlägt
Der klassische Auslöser ist ein Kassensystem oder eine Buchungssoftware, die den kompletten Kartendatensatz der Transaktion ungefiltert in die Rechnung übernimmt, statt vorher zu maskieren. Der zweite Fall ist manuelles Ausfüllen: Wer das Feld sieht, trägt naheliegenderweise die ganze Nummer ein.
Die Regel greift nur, wenn überhaupt Kartendaten übermittelt werden. Für die meisten deutschen B2B-Rechnungen mit Überweisung als Zahlungsweg ist der Block gar nicht vorhanden.
So behebst du den Fehler
Kürze die Kartennummer vor der Übernahme in die XML. Üblich und ausreichend sind die letzten 4 Ziffern, denn das genügt dem Empfänger zur Zuordnung der Zahlung. Mehr als „erste 6 plus letzte 4" darf es in keinem Fall sein.
Prüf außerdem, ob du Kartendaten überhaupt brauchst: Wenn die Rechnung nicht per Karte bezahlt wird, lass den Karten-Block weg und gib stattdessen den passenden Zahlungsmittel-Code mit Bankverbindung an.
XML-Beispiel: vorher und nachher
<ram:SpecifiedTradeSettlementPaymentMeans>
<ram:TypeCode>48</ram:TypeCode>
<ram:ApplicableTradeSettlementFinancialCard>
<!-- verletzt BR-51: vollständige Kartennummer -->
<ram:ID>4532756279624064</ram:ID>
<ram:CardholderName>Max Mustermann</ram:CardholderName>
</ram:ApplicableTradeSettlementFinancialCard>
</ram:SpecifiedTradeSettlementPaymentMeans>
<ram:SpecifiedTradeSettlementPaymentMeans>
<ram:TypeCode>48</ram:TypeCode>
<ram:ApplicableTradeSettlementFinancialCard>
<ram:ID>4064</ram:ID>
<ram:CardholderName>Max Mustermann</ram:CardholderName>
</ram:ApplicableTradeSettlementFinancialCard>
</ram:SpecifiedTradeSettlementPaymentMeans>
Rechnung selbst prüfen
Lade deine Datei hoch und sieh in Sekunden, welche Regeln sie besteht und welche nicht. Kostenlos, ohne Anmeldung, nichts wird gespeichert.