IBAN prüfen per API
Ein einziger POST prüft eine IBAN so, wie ein Zahlungslauf es braucht: Prüfziffer und Länderstruktur, dann die Bank dahinter, gelesen im nationalen Register, mit Quelle und Stand.
- 89 IBAN-Länder
- Bank und BIC mit Quelle
- Erste Aufrufe ohne Schlüssel
Was ein Aufruf prüft
POST /v1/iban/validate antwortet mit einem einzigen JSON-Objekt. Jede Prüfung hat ihr eigenes Feld: Ihr Code liest genau, was geprüft wurde und was nicht.
Prüfziffer
checks.iban_checksum
Die Modulo-97-Prüfung nach ISO 13616 über die zwei Ziffern nach dem Ländercode. Ein einziges falsch getipptes Zeichen lässt sie scheitern.
Länderstruktur
checks.iban_structure
Länge und Aufbau des Kontoteils für jedes der 89 Länder des IBAN-Registers. Eine ungültige IBAN ist kein HTTP-Fehler: Die Antwort ist ein 200 mit valid: false und dem Grund.
Nationale Prüfziffern
checks.national_check_digits
Wo ein Land seinen eigenen Schlüssel in der Kontonummer versteckt: Frankreich und Monaco (RIB-Schlüssel), Belgien, Italien und San Marino (CIN), Spanien (DC) und das Vereinigte Königreich (Modulus-Prüfung). Ein falscher Schlüssel steht in diesem Feld und macht valid nie falsch. In Polen kommt die Prüfziffer der Abrechnungsnummer mit der Bankleitzahl, in bank_code_check.check_digit.
Die Bank und ihr BIC
bank_code_check · bic.source · as_of
Die Bankleitzahl wird im nationalen Register nachgeschlagen, wo wir es vollständig lesen: Deutschland, Österreich, Belgien, Slowakei, Tschechien, Bulgarien, Schweiz und Liechtenstein. Dort kommt ein Code, den das Register nicht führt, als not_allocated zurück. Anderswo nennt ein Teilregister oder eine zusammengesetzte Tabelle die Bank, und die Antwort sagt, dass sie einen Code nicht ausschließen kann. Register und Stand der Ausgabe stehen in der Antwort.
SEPA und Empfängerüberprüfung
sepa · risk_indicators.vop_coverage
Die SEPA-Verfahren, die die Bank erreichen (Überweisung, Echtzeitüberweisung, Lastschrift), aus den Registern des EPC, wenn sie die Bank führen, sonst aus dem Land, mit genannter Grundlage. Und ob das EPC-Register der Empfängerüberprüfung (VoP) die Bank als bereit führt.
Prüfung der Bank, auf Wunsch
POST /v1/iban/compliance
Ein eigener Aufruf gleicht die Bank des Empfängers (BIC8) mit den Listen von OFAC, EU und UN ab, prüft das Land gegen die FATF und eine feste Liste sanktionierter Länder und liefert einen Risikowert von 0 bis 100. Er dient der Information und prüft nie den Namen des Empfängers.
Was sie Ihnen nicht sagt
- Ob das Konto existiert oder offen ist. Kein Register veröffentlicht das: Nur die Bank des Empfängers weiß es.
- Auf wessen Namen das Konto läuft. Das ist die Empfängerüberprüfung, durchgeführt von der Bank des Empfängers; die API sagt nur, ob diese Bank dafür als bereit geführt wird.
- Ob der Empfänger sanktioniert ist. Die optionale Prüfung betrifft die Bank und das Land, nicht die Person oder das Unternehmen, das Sie bezahlen.
- Die deutschen Prüfziffermethoden der Kontonummer und die nationalen Schlüssel der oben nicht genannten Länder: Sie werden noch nicht geprüft.
Ihr erster Aufruf
Kopieren Sie einen dieser Blöcke unverändert. Die IBAN ist das Beispiel der Sandbox: eine gültige Schweizer IBAN, die zu einer echten Bank führt.
Die Kostprobe ohne Schlüssel beantwortet 25 Prüfungen pro Woche auf POST /v1/iban/validate, gezählt für die Adresse, von der der Aufruf kommt, ISO-Woche in UTC, Neustart am Montag um 00:00 UTC.
curl -X POST https://api.ibanforge.com/v1/iban/validate \
-H "Content-Type: application/json" \
-d '{"iban":"CH1000230000000012345"}'const res = await fetch("https://api.ibanforge.com/v1/iban/validate", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ iban: "CH1000230000000012345" }),
});
const answer = await res.json();
console.log(answer.valid, answer.bank_code_check?.status, answer.bic?.code);import requests
r = requests.post(
"https://api.ibanforge.com/v1/iban/validate",
json={"iban": "CH1000230000000012345"},
timeout=10,
)
answer = r.json()
print(answer["valid"], answer["bank_code_check"]["status"])Die Antwort, wie die API sie gegeben hat
Auszug aus der Antwort der API auf diese IBAN vom 25. September 2026: die Felder, die sagen, was geprüft wurde und in welchem Register. Die vollständige Antwort enthält außerdem den Herausgeber, die Schweizer Clearing-Daten, Risikoindikatoren und den empfohlenen nächsten Schritt. Ohne Schlüssel aufgerufen, enthält sie zusätzlich einen trial-Block, der sagt, wie viele Aufrufe in dieser Woche bleiben und wann der Zähler neu beginnt.
{
"iban": "CH1000230000000012345",
"valid": true,
"checks": {
"iban_structure": "pass",
"iban_checksum": "pass",
"bank_code": "pass",
"bic": "pass",
"national_check_digits": "not_checked",
"account_exists": "not_checked",
"payee_name": "not_checked",
"institution_sanctions": "not_checked",
"country_sanctions": "not_checked",
"payee_sanctions": "not_checked"
},
"country": {
"code": "CH",
"name": "Switzerland"
},
"bic": {
"code": "UBSWCHZH80A",
"bank_name": "UBS Switzerland AG",
"city": "Zürich",
"source": "SIX BankMaster (Swiss IID / BC-Nummer register)",
"as_of": "2026-09",
"basis": "national_register",
"authoritative": true
},
"bank_code_check": {
"value": "00230",
"status": "verified",
"register": "SIX BankMaster (Swiss IID / BC-Nummer register)",
"authoritative": true,
"as_of": "2026-09"
},
"sepa": {
"member": true,
"schemes": [
"SCT",
"SDD"
],
"vop_required": false
}
}Nach der Kostprobe ohne Schlüssel senden Sie dieselbe Anfrage mit dem Header Authorization: Bearer ifk_… und Ihrem Schlüssel.
Warum eine Modulo-97-Prüfung nicht reicht
Das offizielle Schweizer Beispiel des IBAN-Registers, CH93 0076 2011 6238 5295 7, hat eine korrekte Prüfziffer. Seine Bankleitzahl ist im SIX BankMaster niemandem zugeteilt, und die API sagt es:
{
"iban": "CH9300762011623852957",
"valid": true,
"bank_code_check": {
"value": "00762",
"status": "not_in_register",
"reason": "not_allocated",
"match": null,
"register": "SIX BankMaster (Swiss IID / BC-Nummer register)",
"authoritative": true,
"as_of": "2026-09"
}
}Antwort der API auf diese IBAN, exportiert am 29. September 2026.
Kostenlos starten, dann nach Nutzung zahlen
Drei kostenlose Zugänge, jeder mit eigenem Kontingent. Keiner verlangt eine Karte.
Die Kostprobe
25 Prüfungen pro Woche auf POST /v1/iban/validate, als Kostprobe ohne Schlüssel für die Adresse, von der der Aufruf kommt. Neustart am Montag um 00:00 UTC.
Ein Schlüssel mit einem Klick
25 Anfragen pro Monat, auf allen Endpunkten. Ein leerer POST an /v1/keys/generate oder der Knopf unten: ohne E-Mail, ohne Karte.
200 Anfragen pro Monat
Beanspruchen Sie denselben Schlüssel mit einem sechsstelligen Code, der an eine Adresse geht, die Sie lesen, oder geben Sie die Adresse beim Erstellen an. Derselbe Schlüssel, dasselbe Präfix, ohne Karte.
Wenn Sie mehr brauchen
- Pro: 29 $ im Monat für 10.000 Anfragen, Zurücksetzung am 1., jederzeit kündbar.
- Guthabenpakete, die nie verfallen, per Karte oder in USDC: 1.000 Credits für 4 $, 5.000 für 20 $, 25.000 für 80 $.
- x402: Bezahlung pro Aufruf in USDC auf Base, ganz ohne Konto, 0,005 $ pro Prüfung und 0,002 $ pro IBAN in einem Stapel.
Alles rund um die API
- SandboxDie echte API im Browser, mit Beispiel-IBANs aus mehreren Ländern.
- Erste SchritteVom Aufruf ohne Schlüssel bis zum Stapel von 100 IBANs, jeder Block der Antwort mit seinem echten Namen.
- Endpunkt-ReferenzPOST /v1/iban/validate, Feld für Feld, mit den Fehlercodes.
- OpenAPI 3.1Der Vertrag, um einen Client zu erzeugen oder ihn in Postman zu importieren.
- npm: @ibanforge/sdk ↗Das SDK für TypeScript und JavaScript.
- PyPI: ibanforge ↗Das Python-SDK, synchroner und asynchroner Client.
- MCP-Serveribanforge-mcp für Claude, Cursor und andere MCP-Clients, oder der gehostete Endpunkt.
- n8n ↗Der Community-Node für selbst gehostetes n8n.
Testen Sie sie mit Ihren eigenen IBANs
Die Sandbox ruft die echte API auf. Wenn Sie so weit sind, holen Sie sich einen Schlüssel: ohne E-Mail, ohne Karte.