So funktionieren IBAN-Prüfziffern

Das MOD-97-Verfahren Schritt für Schritt, mit einem Rechenbeispiel zum Nachrechnen auf Papier und ein paar Zeilen Code.

Aktualisiert am

Das dritte und vierte Zeichen jeder IBAN sind Prüfziffern. Sie werden aus allen anderen Zeichen mit einem Verfahren namens MOD 97-10 berechnet, das in der Norm ISO/IEC 7064 festgelegt ist. Wenn Sie eine IBAN eingeben, wiederholt die Software die Berechnung; stimmt das Ergebnis nicht, enthält die IBAN einen Tippfehler.

Eine IBAN in vier Schritten prüfen

Nehmen Sie die deutsche Beispiel-IBAN DE89 3704 0044 0532 0130 00.

  1. Entfernen Sie die Leerzeichen: DE89370400440532013000.
  2. Stellen Sie die ersten vier Zeichen ans Ende: 370400440532013000DE89.
  3. Ersetzen Sie jeden Buchstaben durch zwei Ziffern, wobei A = 10, B = 11 und so weiter bis Z = 35. Hier wird D zu 13 und E zu 14: 370400440532013000131489.
  4. Teilen Sie diese Zahl durch 97 und behalten Sie den Rest. Ist der Rest 1, ist die IBAN gültig.

Im Beispiel ergibt 370400440532013000131489 geteilt durch 97 genau den Rest 1, die Prüfziffern sind also korrekt.

Die Prüfziffern berechnen

Um die Prüfziffern für eine neue IBAN zu erzeugen, gehen Sie genauso vor, mit 00 an der Stelle der Prüfziffern:

  1. Schreiben Sie den Ländercode, dann 00 und die BBAN: DE00370400440532013000.
  2. Umstellen und umwandeln wie oben: 370400440532013000131400.
  3. Berechnen Sie den Rest der Division durch 97. Hier ist er 9.
  4. Ziehen Sie den Rest von 98 ab: 98 − 9 = 89. Füllen Sie bei Bedarf auf zwei Stellen auf (zum Beispiel wird 7 zu 07).

Die Prüfziffern sind 89, was DE89370400440532013000 ergibt. Da das Ergebnis von Schritt 4 immer zwischen 2 und 98 liegt, lauten die Prüfziffern einer gültigen IBAN nie 00, 01 oder 99.

Mit langen Zahlen rechnen

Die umgewandelte Zahl hat bei Norwegen 17 Stellen, bei Deutschland 24 und bei einer maltesischen IBAN mit Buchstaben mehr als 40. Die meisten sind zu lang für einen normalen Taschenrechner oder eine 64-Bit-Ganzzahl, die etwa 19 Stellen fasst. Sie können die Zahl in Stücke teilen. Nehmen Sie die ersten neun Ziffern, berechnen Sie den Rest, schreiben Sie diesen Rest vor die nächsten Ziffern und wiederholen Sie das:

Schritt Zahl Rest nach Division durch 97
1 370400440 23
2 23 + 5320130 = 235320130 70
3 70 + 0013148 = 700013148 38
4 38 + 9 = 389 1

Der letzte Rest ist 1, dasselbe Ergebnis wie bei der vollständigen Division.

Dieselbe Prüfung im Code

JavaScript, Ziffer für Ziffer verarbeitet, sodass keine großen Zahlen nötig sind:

function isValidIban(input) {
  const iban = input.replace(/\s+/g, '').toUpperCase();
  if (!/^[A-Z]{2}\d{2}[A-Z0-9]{11,30}$/.test(iban)) return false;
  const rearranged = iban.slice(4) + iban.slice(0, 4);
  let remainder = 0;
  for (const ch of rearranged) {
    const value = parseInt(ch, 36); // 0-9 stay digits, A-Z become 10-35
    remainder = (value > 9 ? remainder * 100 : remainder * 10) + value;
    remainder %= 97;
  }
  return remainder === 1;
}

Python, wo Ganzzahlen beliebig groß sein können:

def is_valid_iban(value: str) -> bool:
    iban = "".join(value.split()).upper()
    if not (iban.isascii() and iban.isalnum() and 15 <= len(iban) <= 34):
        return False
    rearranged = iban[4:] + iban[:4]
    digits = "".join(str(int(ch, 36)) for ch in rearranged)
    return int(digits) % 97 == 1

Diese Funktionen prüfen nur die Struktur und die Prüfziffern. Ein echter IBAN-Prüfer kontrolliert außerdem, ob das Land IBANs verwendet und ob die Länge zu diesem Land passt. Die Formate nach Land führen diese Angaben für jedes unterstützte Land auf.

Um eine einzelne IBAN von Hand zu prüfen, fügen Sie sie in den IBAN-Prüfer ein: Er zeigt, welche Prüfung fehlschlägt, und wenn nur die Prüfziffern falsch sind, die passenden Ziffern. Wenn Sie diesen Code nicht selbst pflegen möchten: iban-check ist unsere Open-Source-Bibliothek für JavaScript und TypeScript. Sie führt alle Prüfungen anhand des SWIFT IBAN Registry durch und hat keine Abhängigkeiten. Installieren Sie sie über npm mit npm install iban-check.

Was die Prüfung erkennt

Das Verfahren findet zuverlässig die Fehler, die Menschen beim Tippen machen. Jede einzelne falsch getippte Ziffer und jede Vertauschung zweier benachbarter Ziffern verändert den Rest, sie werden also immer erkannt. Andere Fehler rutschen in etwa einem von hundert Fällen durch.

Die Prüfung kann nicht feststellen, ob ein Konto existiert. Eine IBAN mit korrekten Prüfziffern kann trotzdem auf einen Bankcode verweisen, den es nicht gibt, oder auf ein aufgelöstes Konto. Deshalb bestehen die IBANs aus unserem Generator die Prüfung, obwohl keine Bank sie ausgegeben hat.

Nationale Prüfziffern

Manche Länder fügen innerhalb der BBAN eigene Prüfziffern hinzu, die nach nationalen Regeln berechnet werden. Bei der italienischen IBAN beginnt die BBAN mit einem Buchstaben namens CIN, Frankreich und Monaco beenden sie mit dem zweistelligen „clé RIB“, Spanien hat zwei Kontrollziffern zwischen Filialcode und Kontonummer, und Belgien endet mit zwei Prüfziffern. Diese Prüfungen sind von den IBAN-Prüfziffern unabhängig: Eine IBAN kann MOD-97 bestehen und trotzdem an einer nationalen Prüfung scheitern. Nationale Prüfziffern in der IBAN erklärt jedes Verfahren, Land für Land.

Quellen

Sie brauchen eine Test-IBAN?

Erzeugen Sie eine gültige IBAN für eines von 91 Ländern, kopieren Sie sie im gewünschten Format und sehen Sie, was jedes Segment bedeutet.

Generator öffnen