← Docs

IBAN API

Validate an IBAN. Bank details in 100 countries and territories.

Structure and checksum validation covers 101 countries and territories. Bank names in 100 countries and territories; BICs in 62. See the country coverage table.

Checksum an IBAN before you store it. You get the normalized number, the print form for display, the country and bank identifier, plus the official bank name and BIC when we hold that country's directory. That counts as a normal request. A string that is not an IBAN answers valid: false as a 200, never a 404.

bank is the code parsed from the number. bank_name and bic come from the national file. They are null when a match is missing or ambiguous. This does not prove the account exists. Pass ?country= when the value has no prefix. A prefix on the value wins. SEPA membership is a country fact: GET /bloc/sepa/countries lists the members.

Validate

GET
api.parseapi.com/iban/{iban}
Validity, normalized and formatted IBAN, country, bank name and BIC
Explore
Parameters 3
ibanstring · path · required

IBAN, with or without spaces, with or without the country prefix

countrystring · query · optional

ISO 3166-1 alpha-2 when the number has no prefix

deepboolean · query · optional

Checksum digits and branch/account decomposition. Included on every plan, with no additional charge.

Run uses the free demo on API 2.0.0. Copied code uses your API key when signed in, or YOUR_API_KEY when signed out.

import { parseAPI } from '@parseapi/sdk';

const parse = parseAPI("YOUR_API_KEY");
const result = await parse.iban("DE89370400440532013000");
console.log(result);

Run on your server with a secret key. Calling from a browser or app?

Example response
{
  "iban": "DE89370400440532013000",
  "valid": true,
  "country": "DE",
  "formatted": "DE89 3704 0044 0532 0130 00",
  "bank": "37040044",
  "bank_name": "Commerzbank",
  "bic": "COBADEFFXXX"
}

Run uses the free demo on API 2.0.0. Copied code uses your API key when signed in, or YOUR_API_KEY when signed out.

import { parseAPI } from '@parseapi/sdk';

const parse = parseAPI("YOUR_API_KEY");
const result = await parse.iban("DE89 3704 0044 0532 0130 00");
console.log(result);

Run on your server with a secret key. Calling from a browser or app?

Example response
{
  "iban": "DE89370400440532013000",
  "valid": true,
  "country": "DE",
  "formatted": "DE89 3704 0044 0532 0130 00",
  "bank": "37040044",
  "bank_name": "Commerzbank",
  "bic": "COBADEFFXXX"
}

Run uses the free demo on API 2.0.0. Copied code uses your API key when signed in, or YOUR_API_KEY when signed out.

import { parseAPI } from '@parseapi/sdk';

const parse = parseAPI("YOUR_API_KEY");
const result = await parse.iban("hello");
console.log(result);

Run on your server with a secret key. Calling from a browser or app?

Example response
{
  "iban": "HELLO",
  "valid": false,
  "country": null,
  "formatted": null,
  "bank": null,
  "bank_name": null,
  "bic": null
}

Run uses the free demo on API 2.0.0. Copied code uses your API key when signed in, or YOUR_API_KEY when signed out.

import { parseAPI } from '@parseapi/sdk';

const parse = parseAPI("YOUR_API_KEY");
const result = await parse.iban("89370400440532013000", { country: "DE" });
console.log(result);

Run on your server with a secret key. Calling from a browser or app?

Example response
{
  "iban": "DE89370400440532013000",
  "valid": true,
  "country": "DE",
  "formatted": "DE89 3704 0044 0532 0130 00",
  "bank": "37040044",
  "bank_name": "Commerzbank",
  "bic": "COBADEFFXXX"
}

Response fields

iban
Normalized IBAN, uppercase, no spaces. null when empty
valid
Structure, ISO checksum, and the national BBAN check when that country publishes one
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
bank
Bank identifier parsed from the number, not a name. null when length is wrong
bank_name
Institution name from published bank-code sources. null when that country is not sourced, or the code is unknown
bic
BIC from the same published sources. null when unsourced or missing

Deep

?deep=true Checksum digits and branch/account decomposition. Included on every plan, with no additional charge.

Run uses the free demo on API 2.0.0. Copied code uses your API key when signed in, or YOUR_API_KEY when signed out.

import { parseAPI } from '@parseapi/sdk';

const parse = parseAPI("YOUR_API_KEY");
const result = await parse.iban("DE89370400440532013000", { deep: true });
console.log(result);

Run on your server with a secret key. Calling from a browser or app?

Example response
{
  "iban": "DE89370400440532013000",
  "valid": true,
  "country": "DE",
  "formatted": "DE89 3704 0044 0532 0130 00",
  "bank": "37040044",
  "bank_name": "Commerzbank",
  "bic": "COBADEFFXXX",
  "deep": {
    "checksum": "89",
    "branch": null,
    "account": "0532013000"
  }
}

Deep fields

deep.checksum
The two check digits as a string, keeping a leading zero
deep.branch
Branch identifier when that country has one. null when it does not, or length is wrong
deep.account
Account identifier, the rest of the number after bank and branch

Build with IBAN

All tutorials →

Questions? Email