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.

GET/iban/validate

Validate 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

NameInTypeDescription
iban*querystringThe IBAN, electronic or paper form.Example: DE89 3704 0044 0532 0130 00

Request

curl
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[]`).

FieldTypeDescription
valid*boolean
iban*string
formattedstring
countryCodestring | null
countryNamestring | null
checkDigitsstring | null
bbanstring | null
bankIdentifierstring | null
branchIdentifierstring | null
expectedLengthinteger | null
sepaboolean | null
sepaSincestring | null (date)
checks*object
checks.charactersboolean
checks.countryboolean
checks.lengthboolean
checks.mod97boolean
checks.bbanPatternboolean
failures*"empty" | "characters" | "country_unknown" | "length" | "check_digits" | "bban_pattern"[]
registryobject
registry.sourcestring
registry.verifiedOnstring (date)
200 OK · application/json
{
  "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

  • 400invalid_parameter — A parameter is missing or malformed.
  • 401unauthorized — The API key is missing, unknown or revoked.
  • 402quota_exceeded — Monthly allowance and credits are used up.
  • 429rate_limited — Too many requests per second.
POST/iban/validate/bulk

Validate 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.

FieldTypeDescription
ibans*string[]
application/json
{
  "ibans": [
    "DE89370400440532013000",
    "FR7630006000011234567890189",
    "GB82WEST12345698765432"
  ]
}

Request

curl
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.

FieldTypeDescription
resultsIbanResult[]
countedinteger

Headers: RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, RateLimit-Policy, X-Quota-Remaining, X-Tier.

Errors

  • 400invalid_parameter — A parameter is missing or malformed.
  • 401unauthorized — The API key is missing, unknown or revoked.
  • 402quota_exceeded — Monthly allowance and credits are used up.
  • 403forbidden_for_tier — This option is not included in your tier.
  • 429rate_limited — Too many requests per second.

Sources