GET /iban/{iban}

IBAN API

Pass an IBAN. Get checksum, country, and the bank codes inside it.

Try it

iban

Normalized IBAN, uppercase, no spaces. null when empty

valid

Checksum and structure match the country

country

ISO 3166-1 alpha-2 from the prefix, or null when it is not an IBAN country

formatted

Print form in groups of four, for display. null when invalid

checksum

The two check digits as a string, keeping a leading zero

bank

Bank identifier parsed from the number, not a name. null when length is wrong

branch

Branch identifier when that country has one. null when it does not, or length is wrong

account

Account identifier, the rest of the number after bank and branch

1

Pass the number

Spaces, mixed case, missing prefix with country. Junk is valid false, never a 404.

2

Get the parts

Country, checksum digits, bank, branch, and account as they sit in the number. Plus the print form for display.

3

Bank is a code

Not a name. branch is null when that country has none.

89 countries.

Checksum and structure. Every plan.

89
countries
0
guessed bank names

Pass an IBAN. Spaces and mixed case are fine. Pass country when the prefix is missing. You get the normalized number, the print form for display, whether the checksum holds, and the bank, branch, and account codes sitting inside it.

Junk answers valid: false as a 200. bank and branch are codes from the number, not a bank name. This does not prove the account exists.

RESPONSE

$ curl "https://api.parseapi.com/iban/DE89370400440532013000" \
  -H "X-API-Key: YOUR_API_KEY"

// 200 · ~31ms US · ~128ms worldwide
{
  "iban": "DE89370400440532013000",
  "valid": true,
  "country": "DE",
  "formatted": "DE89 3704 0044 0532 0130 00",
  "checksum": "89",
  "bank": "37040044",
  "branch": null,
  "account": "0532013000"
}

Response fields

iban
Normalized IBAN, uppercase, no spaces. null when empty
valid
Checksum and structure match the country
country
ISO 3166-1 alpha-2 from the prefix, or null when it is not an IBAN country
formatted
Print form in groups of four, for display. null when invalid
checksum
The two check digits as a string, keeping a leading zero
bank
Bank identifier parsed from the number, not a name. null when length is wrong
branch
Branch identifier when that country has one. null when it does not, or length is wrong
account
Account identifier, the rest of the number after bank and branch

QUESTIONS

What if it is not an IBAN?
valid: false as a 200. iban still echoes the cleaned-up value. Same as a typo in a form field.
What are bank and branch?
Identifiers parsed from the number, not the bank's name. branch is null when that country has none.
Can I skip the country prefix?
Pass country= and we fill it. A prefix already on the value wins.
Does this prove the account exists?
No. Checksum and structure only. Live account checks are a different product.
Is the country in SEPA?
That is a country fact. GET /bloc/sepa/countries lists the members, and /country/{code} carries a blocs array.
What about spaces?
Fine. Spaces and punctuation are stripped. The response iban is uppercase with no spaces. formatted carries the print form in groups of four for display.

SPEED

How long a lookup takes.

US

31ms

EU

60ms

APAC

149ms

LatAm

20ms

ME

124ms

See live status →

Coverage

89 countries. Checksum and structure on every plan.