IBAN-Testdaten für Entwickler: Gültige Fake-IBANs generieren
Formal gültige IBAN-Testdaten für Entwicklung und Testing – korrekte Prüfziffer, ohne reale Kontobezüge, für DE, AT, CH und weitere Länder.
Für Zahlungs-Features, Rechnungs-Workflows oder einfach eine Formular-Validierung brauchst du beim Entwickeln immer wieder IBAN-Testdaten. Deine eigene zu verwenden ist eine schlechte Idee, Dummy-Strings wieDE000000000000000000 bestehen keinen Prüfziffer-Check. Gefragt sind formal gültige, aber fiktive IBANs.
Was eine IBAN formal gültig macht
Die IBAN ist in ISO 13616 standardisiert und besteht aus:
- Länderkennung (2 Buchstaben, z.B.
DE,AT,CH) - Prüfziffer (2 Ziffern, nach Modulo-97-Verfahren berechnet)
- BBAN (länderspezifische Kontoangaben, bei DE: 8 Stellen BLZ + 10 Stellen Kontonummer)
Beispiel aus Deutschland:
DE89 3704 0044 0532 0130 00
└┬┘ └┬┘ └──┬──────────────┘
│ │ │
│ │ └ BBAN (BLZ + Kontonummer)
│ └ Prüfziffer
└ LänderkennungModulo-97-Prüfung – so funktioniert's
- Die ersten vier Zeichen (Länderkennung + Prüfziffer) ans Ende verschieben.
- Buchstaben in Zahlen umwandeln:
A = 10,B = 11, …Z = 35. - Die resultierende Riesenzahl modulo 97 nehmen.
- Ergebnis muss 1 sein – sonst ist die IBAN ungültig.
Pseudocode (verkürzt):
function isValidIban(iban) {
const rearranged = iban.slice(4) + iban.slice(0, 4);
const numeric = rearranged.replace(/[A-Z]/g, c => c.charCodeAt(0) - 55);
// BigInt-Division wegen Länge
return BigInt(numeric) % 97n === 1n;
}Fake-IBANs – was legal und sinnvoll ist
Es gibt keine „offiziellen" Testbereiche für IBANs wie bei Kreditkarten (dort gibt es 4242 4242 4242 4242). Für Tests gelten diese Regeln:
- IBANs so generieren, dass sie formal gültig sind (Prüfziffer stimmt).
- BBAN mit Werten füllen, die keiner real existierenden Bankverbindung entsprechen.
- Keine SEPA-Testüberweisungen auf diese IBANs ausführen – sie zeigen auf nichts.
Unser Testdaten-Generator erzeugt genau solche IBANs: mit korrekter Prüfziffer, aber zufälligen BBANs, die keiner echten Verbindung entsprechen.
Beispiel-IBANs für Entwicklung
Diese sind formal gültig (Prüfziffer stimmt), zeigen aber auf nichts:
DE89 3704 0044 0532 0130 00 (DE, 22 Stellen)
AT61 1904 3002 3457 3201 (AT, 20 Stellen)
CH93 0076 2011 6238 5295 7 (CH, 21 Stellen)
FR14 2004 1010 0505 0001 3M02 606 (FR, 27 Stellen)
GB82 WEST 1234 5698 7654 32 (GB, 22 Stellen)Längen pro Land
| Land | Code | IBAN-Länge |
|---|---|---|
| Deutschland | DE | 22 |
| Österreich | AT | 20 |
| Schweiz | CH | 21 |
| Frankreich | FR | 27 |
| Niederlande | NL | 18 |
| Italien | IT | 27 |
| Großbritannien | GB | 22 |
Typische Fehlerquellen in der Validierung
- Leerzeichen und Bindestriche: vor der Prüfung immer entfernen.
- Case: Buchstaben vor der Umwandlung uppercase machen.
- Länge nicht geprüft: ein Modulo-97-Check sagt noch nichts über die Landes-Länge aus. Beides prüfen.
- Integer-Overflow: die numerische Darstellung wird 20+ Ziffern lang – nutze BigInt oder eine Modulo-Variante Stück für Stück.
Workflow für dein Projekt
- Im Testdaten-Generator IBAN als Feld aktivieren.
- Länder-Mix wählen (z.B. nur DE oder DACH).
- Als JSON, CSV oder SQL exportieren.
- In Fixtures oder Seed-Dateien ablegen, aber nie in VCS-Dateien, die als „production-ready" durchgehen.
So hast du jederzeit saubere, formal gültige IBANs für Tests – ohne versehentlich eine echte Bankverbindung in deinen Testdaten zu haben.