Free IBAN API – Validate & Calculate German IBANs
A free JSON API to validate any IBAN and to calculate German IBANs from a bank code (BLZ) and account number. No API key, no registration, CORS-enabled — call it straight from the browser or your backend. Bank data comes from the Deutsche Bundesbank bank directory.
Last reviewed:
Validate an IBAN
POST /api/v1/validate
Checks any IBAN for length, country format and the ISO 7064 MOD-97 check digit. For a German IBAN it also resolves the bank name, BIC and BLZ from the Bundesbank directory.
{
"iban": "DE89370400440532013000"
}curl -X POST https://www.iban-rechner.pro/api/v1/validate \
-H "Content-Type: application/json" \
-d '{"iban":"DE89370400440532013000"}'const res = await fetch("https://www.iban-rechner.pro/api/v1/validate", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ iban: "DE89370400440532013000" }),
});
const data = await res.json();{
"valid": true,
"iban": "DE89 3704 0044 0532 0130 00",
"country": "DE",
"sepa": true,
"sepaInstant": null,
"bank": "Commerzbank Nürnberg",
"bic": "COBADEFFXXX",
"blz": "37040044"
}A structurally invalid IBAN also returns HTTP 200 with valid: false and an error message — the request itself was well-formed:
{
"valid": false,
"iban": "DE00 3704 0044 0532 0130 00",
"error": "Invalid check digits"
}sepa and sepaInstant are true, false or null. null means the public BLZ dataset does not prove scheme reachability either way — it is not a negative. The bank, bic and blz fields appear only when the bank code is found.
Calculate a German IBAN
POST /api/v1/calculate
Builds a German IBAN from a bank code (BLZ) and an account number. Only country: "DE" is supported — the BLZ + account scheme is Germany-specific. The BLZ must exist in the public Bundesbank register.
{
"country": "DE",
"blz": "37040044",
"account": "0532013000"
}curl -X POST https://www.iban-rechner.pro/api/v1/calculate \
-H "Content-Type: application/json" \
-d '{"country":"DE","blz":"37040044","account":"0532013000"}'const res = await fetch("https://www.iban-rechner.pro/api/v1/calculate", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
country: "DE",
blz: "37040044",
account: "0532013000",
}),
});
const data = await res.json();{
"iban": "DE89 3704 0044 0532 0130 00",
"valid": true,
"formallyValid": true,
"assurance": "mathematical-only",
"warning": "Standardformel; bankspezifische Bundesbank-IBAN-Regeln …",
"bank": "Commerzbank Nürnberg",
"bic": "COBADEFFXXX"
}The response carries assurance: "mathematical-only". The IBAN is built with the standard MOD-97 formula, which is correct for the large majority of German banks. A minority of institutions use deviating Bundesbank IBAN rules that are not published in the public BLZ dataset, so a mathematical-only IBAN should be reconciled against your bank records before you rely on it. That is exactly what the warning field states (in German).
Error responses
Errors return a JSON body with an error string and one of these status codes:
| Status | Meaning |
|---|---|
| 400 | Bad request. A required field is missing or has the wrong type, or the body is not valid JSON. For /validate that is a missing or non-string iban; for /calculate a missing country, blz or account. |
| 413 | Payload too large. The request body exceeds the 4 KB cap (see limits below). |
| 422 | Unprocessable. The request was well-formed but cannot be fulfilled — e.g. /calculate was called with a non-DE country, a BLZ that is not in the public Bundesbank register, or an account number the IBAN formula rejects. |
Limits & fair use
- No authentication and no SLA. This is a best-effort free service with no uptime guarantee. Do not build anything mission-critical directly on it.
- Request bodies are capped at 4 KB. Larger bodies return
413. - No rate limit is currently enforced, but fair use is expected. If you need high or sustained throughput, please self-host rather than hammering this endpoint.
calculatereturnsassurance: "mathematical-only"because some banks use deviating Bundesbank IBAN rules that are not in the public BLZ dataset. Treat the result as formally valid, not bank-confirmed.
Attribution
If you use this API in a public project, a link to iban-rechner.pro is appreciated.
Open the IBAN Checker