IBAN validation
Normalises the input (case, spaces, dashes), then checks: allowed characters, known country, country length, the ISO 7064 mod 97-10 check digits, and the country’s BBAN pattern from the SWIFT IBAN Registry. Returns the bank and branch identifiers where the registry defines them and whether the country is in the SEPA geographical scope (EPC list). BIC lookup is not part of v1 (the BIC directory is licensed data); see the roadmap.
About the registry, and why no BIC
Lengths and BBAN structures come from the SWIFT IBAN Registry (ISO 13616); the SEPA flag from the EPC list of SEPA scheme countries, including the four countries added on 5 October 2025. BIC lookup and bank-name resolution are not in v1 because the SWIFT BIC Directory and IBAN Plus are licensed data products; they are on the roadmap. The bank identifier inside the BBAN is returned where the registry defines it.
/iban/validateValidate an IBAN
Normalises the input (case, spaces, dashes), then checks: allowed characters, known country, country length, the ISO 7064 mod 97-10 check digits, and the country’s BBAN pattern from the SWIFT IBAN Registry. Returns the bank and branch identifiers where the registry defines them and whether the country is in the SEPA geographical scope (EPC list). BIC lookup is not part of v1 (the BIC directory is licensed data); see the roadmap.
- Tiers
- anonymousfreecreditsplan
- Cost
- 1 call
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| iban* | query | string | The IBAN, electronic or paper form.Example: DE89 3704 0044 0532 0130 00 |
Request
curl "https://veriport.io/api/v1/iban/validate?iban=DE89%203704%200044%200532%200130%2000"Response 200
The result, valid or not (an invalid IBAN is a 200 with `valid: false` and `failures[]`).
| Field | Type | Description |
|---|---|---|
| valid* | boolean | |
| iban* | string | |
| formatted | string | |
| countryCode | string | null | |
| countryName | string | null | |
| checkDigits | string | null | |
| bban | string | null | |
| bankIdentifier | string | null | |
| branchIdentifier | string | null | |
| expectedLength | integer | null | |
| sepa | boolean | null | |
| sepaSince | string | null (date) | |
| checks* | object | |
| checks.characters | boolean | |
| checks.country | boolean | |
| checks.length | boolean | |
| checks.mod97 | boolean | |
| checks.bbanPattern | boolean | |
| failures* | "empty" | "characters" | "country_unknown" | "length" | "check_digits" | "bban_pattern"[] | |
| registry | object | |
| registry.source | string | |
| registry.verifiedOn | string (date) |
{
"valid": true,
"iban": "DE89370400440532013000",
"formatted": "DE89 3704 0044 0532 0130 00",
"countryCode": "DE",
"countryName": "Germany",
"checkDigits": "89",
"bban": "370400440532013000",
"bankIdentifier": "37040044",
"branchIdentifier": null,
"expectedLength": 22,
"sepa": true,
"sepaSince": null,
"checks": {
"characters": true,
"country": true,
"length": true,
"mod97": true,
"bbanPattern": true
},
"failures": [],
"registry": {
"source": "SWIFT IBAN Registry (ISO 13616)",
"verifiedOn": "2026-10-24"
}
}Headers: RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, RateLimit-Policy, X-Quota-Remaining, X-Tier.
Errors
- 400
invalid_parameter— A parameter is missing or malformed. - 401
unauthorized— The API key is missing, unknown or revoked. - 402
quota_exceeded— Monthly allowance and credits are used up. - 429
rate_limited— Too many requests per second.
/iban/validate/bulkValidate up to 100 IBANs in one request
Monthly plan only. Each IBAN is answered in order; each counts one call. Up to 100 items.
- Tiers
- plan
- Cost
- 1 call per item
Request body
Media types: application/json.
| Field | Type | Description |
|---|---|---|
| ibans* | string[] |
{
"ibans": [
"DE89370400440532013000",
"FR7630006000011234567890189",
"GB82WEST12345698765432"
]
}Request
curl -X POST -H "Authorization: Bearer vp_live_YOUR_KEY" -H "Content-Type: application/json" \
-d '{"ibans":["DE89370400440532013000","FR7630006000011234567890189","GB82WEST12345698765432"]}' \
"https://veriport.io/api/v1/iban/validate/bulk"Response 200
One result per IBAN, in order.
| Field | Type | Description |
|---|---|---|
| results | IbanResult[] | |
| counted | integer |
Headers: RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, RateLimit-Policy, X-Quota-Remaining, X-Tier.
Errors
- 400
invalid_parameter— A parameter is missing or malformed. - 401
unauthorized— The API key is missing, unknown or revoked. - 402
quota_exceeded— Monthly allowance and credits are used up. - 403
forbidden_for_tier— This option is not included in your tier. - 429
rate_limited— Too many requests per second.
Sources
- IBAN Registry (ISO 13616) — country lengths, BBAN structures, SEPA membership — SWIFT, ISO 13616 registration authority, consulted 2026-10-24. Transcribed from the public registry; the release number in force on the day checkout opens must be written on the IBAN docs page (owner step).
- ISO 13616-1:2020 — Financial services — International bank account number (IBAN): structure and mod 97-10 check (ISO/IEC 7064) — ISO, consulted 2026-10-24
- EPC list of SEPA scheme countries (geographical scope of the SEPA schemes) — European Payments Council, consulted 2026-10-24. The 2025 additions (Albania, Moldova, Montenegro, North Macedonia, effective 5 October 2025) are flagged `sepaSince` on the row.
- SWIFTRef BIC Directory and IBAN Plus — licensed data products — SWIFT, consulted 2026-10-24. Why BIC lookup is not in v1: the directory is licensed, not open data.