OpenIBAN

App · Accounting & Finance · 7 actions

Validate IBANs and look up the bank behind them. Check one IBAN or a whole payment file at once (the check digits, the country's length rule and whether the bank code really exists) and get back the bank's name and BIC (SWIFT code) for Austria, Belgium, Germany, Liechtenstein, Luxembourg, the Netherlands and Switzerland. Build IBANs from a bank code and an account number to migrate records that still hold domestic account details, and list the countries and country codes the service knows. No account or API key required.

Actions

ActionWhat it does
Calculate an IBANBuild an IBAN from a country, a bank code and an account number, the conversion a record still holding a German Bankleitzahl and Kontonummer needs before it can be paid by SEPA transfer.
Calculate several IBANsBuild IBANs for a whole list of accounts in one country, in one step: the migration action for a customer or payroll table that still holds bank codes and account numbers.
Get a countryLook one country up by name or by code, and get back the two-letter code an IBAN from there starts with.
Get bank details for an IBANLook up the bank behind an IBAN: its BIC (SWIFT code), name, city and postcode.
List countriesList every country openiban knows, with the two-letter code an IBAN from there starts with and whether openiban holds bank codes and BICs for it.
Validate an IBANCheck that an IBAN is a real one before you pay it: the check digits, the country's own length rule, and whether the bank code inside it exists.
Validate several IBANsCheck a whole list of IBANs in one step (a payment file, a supplier list, a column out of a spreadsheet) and get back each result plus the counts to branch on.

Calculate an IBAN

Build an IBAN from a country, a bank code and an account number, the conversion a record still holding a German Bankleitzahl and Kontonummer needs before it can be paid by SEPA transfer. openiban validates whatever it builds, so the answer carries the same checks a validation would, plus the bank's name and BIC where it has them. No API key required.

Inputs

Countrycountry_codetextRequired
The country the account is held in. The list comes from openiban's own country map; the seven countries it holds bank data for are listed first.
Bank codebank_codetextRequired
The bank's domestic code: a German Bankleitzahl (37040044), a Dutch bank's four letters (ABNA), a Swiss clearing number. Spaces are ignored.
Account numberaccount_numbertextRequired
The domestic account number, exactly as the bank writes it, leading zeros included. Spaces are ignored.
Look up the banklook_up_banktrue/false
Also check the bank code and return the bank's name, BIC, city and postcode alongside the IBAN. On by default. Turning it off uses openiban's smaller calculate endpoint, which returns the IBAN alone and does not check that the bank code exists.Default: true.

Outputs

One calculated IBAN and everything openiban reports about it.

bankobject
The bank behind the IBAN. Every field is null when openiban holds no data for that country.
bank_code_checkedtrue/false
Whether the bank code was checked on this call.
bank_code_validtrue/false
Whether the bank code is one that really exists. Null when the bank lookup was turned off, or when openiban holds no bank codes for the country.
bank_data_available_for_countrytrue/false
Whether openiban holds bank codes and BICs for this country at all. False means an empty bank block says nothing about the account.
bank_looked_uptrue/false
Whether the bank lookup was asked for on this call.
bbantext
Everything after the check digits: the domestic account number as it sits inside the IBAN, usually the account number padded out.
check_digitstext
The two check digits openiban computed.
checksum_validtrue/false
Whether the built IBAN's check digits verify, by ISO 13616's mod-97 rule. Effectively always true, since openiban computed them; it is here so a calculated IBAN reads exactly like a validated one.
country_codetext
The country code the IBAN was built for, for example 'DE'.
format_validtrue/false
Whether the built IBAN has the shape ISO 13616 requires.
ibantext
The IBAN openiban built, in its compact electronic form.
iban_formattedtext
The same IBAN in groups of four, the way it is written.
input_account_numbertext
The account number this IBAN was built from, tidied up, so a batch answer can be matched back to the row it came from.
input_bank_codetext
The bank code this IBAN was built from, tidied up, so a batch answer can be matched back to the row it came from.
messageslist
openiban's own notes about the IBAN it built, verbatim.
validtrue/false
openiban's verdict on the IBAN it just built: true only when every check it ran passed. False generally means the bank code is not one it recognises.
Example output
{
  "bank": {
    "bank_code": "37040044",
    "bic": "COBADEFFXXX",
    "city": "K\u00f6ln",
    "found": true,
    "name": "Commerzbank",
    "postal_code": "50447"
  },
  "bank_code_checked": true,
  "bank_code_valid": true,
  "bank_data_available_for_country": true,
  "bank_looked_up": true,
  "bban": "370400440532013000",
  "check_digits": "89",
  "checksum_valid": true,
  "country_code": "DE",
  "format_valid": true,
  "iban": "DE89370400440532013000",
  "iban_formatted": "DE89 3704 0044 0532 0130 00",
  "input_account_number": "0532013000",
  "input_bank_code": "37040044",
  "messages": [
    "Bank code valid: 37040044"
  ],
  "valid": true
}

Calculate several IBANs

Build IBANs for a whole list of accounts in one country, in one step: the migration action for a customer or payroll table that still holds bank codes and account numbers. Each row comes back with the IBAN, the checks openiban ran on it, and the bank code and account number it was built from, so the answers line up with the rows they came from. Up to 50 at a time. No API key required.

Inputs

Countrycountry_codetextRequired
The country the account is held in. The list comes from openiban's own country map; the seven countries it holds bank data for are listed first.
AccountsaccountslistRequired
The accounts to build IBANs for, up to 50 in one step. Each needs the bank's domestic code and the account number; they must all be in the country chosen above.
Look up the banklook_up_banktrue/false
Also check the bank code and return the bank's name, BIC, city and postcode alongside the IBAN. On by default. Turning it off uses openiban's smaller calculate endpoint, which returns the IBAN alone and does not check that the bank code exists.Default: true.

Outputs

all_validtrue/false
True when every row came back valid: the single flag to branch a workflow on before releasing a payment run.
countnumber
How many rows the step returned.
country_codetext
The country every IBAN was built for.
invalid_countnumber
How many of them openiban did not report as valid.
invalid_ibanslist
Just the IBANs that did not come back valid: the list to put in front of a person.
resultslist
One result per account, in the order they were given.
valid_countnumber
How many of them openiban reported as valid.
valid_ibanslist
Just the IBANs that came back valid, in the order given.
Example output
{
  "all_valid": true,
  "count": 1,
  "country_code": "DE",
  "invalid_count": 0,
  "invalid_ibans": [],
  "results": [
    {
      "bank": {
        "bank_code": "37040044",
        "bic": "COBADEFFXXX",
        "city": "K\u00f6ln",
        "found": true,
        "name": "Commerzbank",
        "postal_code": "50447"
      },
      "bank_code_checked": true,
      "bank_code_valid": true,
      "bank_data_available_for_country": true,
      "bank_looked_up": true,
      "bban": "370400440532013000",
      "check_digits": "89",
      "checksum_valid": true,
      "country_code": "DE",
      "format_valid": true,
      "iban": "DE89370400440532013000",
      "iban_formatted": "DE89 3704 0044 0532 0130 00",
      "input_account_number": "0532013000",
      "input_bank_code": "37040044",
      "messages": [
        "Bank code valid: 37040044"
      ],
      "valid": true
    }
  ],
  "valid_count": 1,
  "valid_ibans": [
    "DE89370400440532013000"
  ]
}

Get a country

Look one country up by name or by code, and get back the two-letter code an IBAN from there starts with. Use it when the country arrives as a name from somewhere else in the workflow, a CRM field saying 'Germany', and the next step needs 'DE'. It also says whether openiban holds bank data there. No API key required.

Inputs

Country name or codecountrytextRequired
The country to look up. Pick one from the list, or type a value coming from an earlier step: a name ('Germany'), a code ('DE'), or part of a name ('Nether' finds the Netherlands). A name is matched first, then a code.

Outputs

bank_data_availabletrue/false
Whether openiban holds bank codes and BICs for this country.
codetext
The two-letter country code, ready to hand to the calculate actions.
code_is_sharedtrue/false
True when openiban files more than one name under this code, which it does for France's 'FR' and the United Kingdom's 'GB'. The code is still the right one to hand to the calculate actions.
countryobject
One country openiban knows about.
matched_bytext
Which spelling matched: 'name' when the value was a country name or part of one, 'code' when it was a two-letter code.
nametext
The country's name as openiban spells it. When the lookup was by code and several names share that code, this is the first of them alphabetically rather than the sovereign state: check 'code_is_shared' and read 'names_for_this_code'.
names_for_this_codelist
Every name openiban files under this code, alphabetically, including the matched one.
other_names_for_this_codelist
The same list without the matched name, for example Martinique and Réunion under France's 'FR'. Usually empty.
Example output
{
  "bank_data_available": true,
  "code": "DE",
  "code_is_shared": false,
  "country": {
    "bank_data_available": true,
    "code": "DE",
    "name": "Germany"
  },
  "matched_by": "name",
  "name": "Germany",
  "names_for_this_code": [
    "Germany"
  ],
  "other_names_for_this_code": []
}

Get bank details for an IBAN

Look up the bank behind an IBAN: its BIC (SWIFT code), name, city and postcode. This is the step for filling in the BIC an international transfer asks for, or for showing a customer which bank they just entered. openiban holds bank data for Austria, Belgium, Germany, Liechtenstein, Luxembourg, the Netherlands and Switzerland, and the answer says plainly when a country is not one of them. No API key required.

Inputs

IBANibantextRequired
The IBAN to check. Paste it however it was written: spaces, hyphens and lower case are all fine, and it is tidied up before it is sent.

Outputs

bankobject
The bank behind the IBAN. Every field is null when openiban holds no data for that country.
bank_data_available_for_countrytrue/false
Whether openiban holds bank data for this country at all. False means an empty bank block says nothing about the account.
checksum_validtrue/false
Whether the IBAN's check digits verify, by ISO 13616's mod-97 rule.
country_codetext
The IBAN's first two letters: the country the account is held in.
ibantext
The IBAN that was looked up, in its compact electronic form.
iban_formattedtext
The same IBAN in groups of four.
messageslist
openiban's own notes, verbatim, for example 'Cannot get BIC. No information available.'
validtrue/false
Whether openiban considers the IBAN itself sound. The bank-code check is deliberately not run here, so this reflects the IBAN's own structure only.
Example output
{
  "bank": {
    "bank_code": "37040044",
    "bic": "COBADEFFXXX",
    "city": "K\u00f6ln",
    "found": true,
    "name": "Commerzbank",
    "postal_code": "50447"
  },
  "bank_data_available_for_country": true,
  "checksum_valid": true,
  "country_code": "DE",
  "iban": "DE89370400440532013000",
  "iban_formatted": "DE89 3704 0044 0532 0130 00",
  "messages": [],
  "valid": true
}

List countries

List every country openiban knows, with the two-letter code an IBAN from there starts with and whether openiban holds bank codes and BICs for it. Use it to fill a dropdown, to check a country is covered before building a workflow around it, or to find the exact code the calculate actions take. No API key required.

Inputs

Name or code containsquerytext
Only countries whose name or code contains this text. Not case sensitive. Leave it empty for all of them.
Only countries with bank databank_data_onlytrue/false
Return only the seven countries openiban holds bank codes and BICs for. Off by default.Default: false.
Order bysorttext
How to order the list. Alphabetically by country name by default.One of: name_asc (Country name (A to Z)), name_desc (Country name (Z to A)), code_asc (Country code (A to Z)), code_desc (Country code (Z to A)). Default: name_asc.

Outputs

bank_data_country_codeslist
The codes of the countries openiban holds bank codes and BICs for, whatever the filters above were set to.
countnumber
How many countries matched.
countrieslist
The countries that matched.
country_code_countnumber
How many distinct country codes those names resolve to. It is the smaller number: openiban files Martinique and Réunion under France's 'FR', and Jersey and the Isle of Man under the United Kingdom's 'GB'.
Example output
{
  "bank_data_country_codes": [
    "AT",
    "BE",
    "CH",
    "DE",
    "LI",
    "LU",
    "NL"
  ],
  "count": 1,
  "countries": [
    {
      "bank_data_available": true,
      "code": "DE",
      "name": "Germany"
    }
  ],
  "country_code_count": 1
}

Validate an IBAN

Check that an IBAN is a real one before you pay it: the check digits, the country's own length rule, and whether the bank code inside it exists. Where openiban holds bank data it also returns the bank's name and BIC, so one step both validates the account and tells you who it belongs to. No API key required.

Inputs

IBANibantextRequired
The IBAN to check. Paste it however it was written: spaces, hyphens and lower case are all fine, and it is tidied up before it is sent.
Check the bank codecheck_bank_codetrue/false
Also check that the bank code inside the IBAN is one that really exists. On by default. openiban holds bank codes for Austria, Belgium, Germany, Liechtenstein, Luxembourg, the Netherlands and Switzerland only; elsewhere this check simply reports that it has no data.Default: true.
Look up the banklook_up_banktrue/false
Also return the bank's name, BIC, city and postcode. On by default. Available for the same seven countries; elsewhere the bank comes back empty.Default: true.

Outputs

One IBAN and everything openiban reports about it.

bankobject
The bank behind the IBAN. Every field is null when openiban holds no data for that country.
bank_code_checkedtrue/false
Whether the bank-code check was asked for on this call.
bank_code_validtrue/false
Whether the bank code inside the IBAN is one that really exists. Null when the check was not requested, and null (not false) for a country openiban holds no bank codes for, so an IBAN from outside its seven countries is never reported as having a bad bank code.
bank_data_available_for_countrytrue/false
Whether openiban holds bank codes and BICs for this country at all. It covers Austria, Belgium, Germany, Liechtenstein, Luxembourg, the Netherlands and Switzerland. False means an empty bank block says nothing about the account.
bank_looked_uptrue/false
Whether the bank lookup was asked for on this call.
bbantext
Everything after the check digits: the country's own account number, which is what a domestic transfer uses. Null when the IBAN is not shaped like one.
check_digitstext
The IBAN's third and fourth characters, the two check digits. Null when the IBAN is not shaped like one.
checksum_validtrue/false
Whether the IBAN's check digits verify, by ISO 13616's mod-97 rule. This is what catches a mistyped digit, and it is the same answer in every country, whether or not openiban holds bank data for it.
country_codetext
The IBAN's first two letters: the ISO country code of the country the account is held in, for example 'DE'.
format_validtrue/false
Whether the IBAN has the general shape ISO 13616 requires: two letters, two digits, then 11 to 30 more letters or digits.
ibantext
The IBAN with spaces and punctuation removed and letters upper cased: the electronic form, and the one to store.
iban_formattedtext
The same IBAN in groups of four, the way it is written on paper: 'DE89 3704 0044 0532 0130 00'.
messageslist
openiban's own notes about this IBAN, verbatim, for example 'Bank code valid: 37040044' or 'Cannot get BIC. No information available.'
validtrue/false
openiban's overall verdict: true only when every check it ran passed. It is false for a structurally perfect IBAN whose bank code openiban does not recognise, so branch on 'checksum_valid' and 'bank_code_valid' when you need to tell those apart.
Example output
{
  "bank": {
    "bank_code": "37040044",
    "bic": "COBADEFFXXX",
    "city": "K\u00f6ln",
    "found": true,
    "name": "Commerzbank",
    "postal_code": "50447"
  },
  "bank_code_checked": true,
  "bank_code_valid": true,
  "bank_data_available_for_country": true,
  "bank_looked_up": true,
  "bban": "370400440532013000",
  "check_digits": "89",
  "checksum_valid": true,
  "country_code": "DE",
  "format_valid": true,
  "iban": "DE89370400440532013000",
  "iban_formatted": "DE89 3704 0044 0532 0130 00",
  "messages": [
    "Bank code valid: 37040044"
  ],
  "valid": true
}

Validate several IBANs

Check a whole list of IBANs in one step (a payment file, a supplier list, a column out of a spreadsheet) and get back each result plus the counts to branch on. A bad IBAN comes back as a row saying so, not as a failed step, and the invalid ones are collected into their own list ready to put in front of a person. Up to 50 at a time. No API key required.

Inputs

IBANsibanslistRequired
The IBANs to check, up to 50 in one step. Each is tidied up before it is sent, and anything that fails (a bad check digit, or a cell that is not an IBAN at all) is reported as a row rather than failing the whole step.
Check the bank codecheck_bank_codetrue/false
Also check that the bank code inside the IBAN is one that really exists. On by default. openiban holds bank codes for Austria, Belgium, Germany, Liechtenstein, Luxembourg, the Netherlands and Switzerland only; elsewhere this check simply reports that it has no data.Default: true.
Look up the banklook_up_banktrue/false
Also return the bank's name, BIC, city and postcode. On by default. Available for the same seven countries; elsewhere the bank comes back empty.Default: true.

Outputs

all_validtrue/false
True when every row came back valid: the single flag to branch a workflow on before releasing a payment run.
countnumber
How many rows the step returned.
invalid_countnumber
How many of them openiban did not report as valid.
invalid_ibanslist
Just the IBANs that did not come back valid: the list to put in front of a person.
resultslist
One result per IBAN, in the order they were given. An entry that is not an IBAN at all gets a row too, with every check false and the reason in its messages, so the rows line up with the list that was sent.
valid_countnumber
How many of them openiban reported as valid.
valid_ibanslist
Just the IBANs that came back valid, in the order given.
Example output
{
  "all_valid": true,
  "count": 1,
  "invalid_count": 0,
  "invalid_ibans": [],
  "results": [
    {
      "bank": {
        "bank_code": "37040044",
        "bic": "COBADEFFXXX",
        "city": "K\u00f6ln",
        "found": true,
        "name": "Commerzbank",
        "postal_code": "50447"
      },
      "bank_code_checked": true,
      "bank_code_valid": true,
      "bank_data_available_for_country": true,
      "bank_looked_up": true,
      "bban": "370400440532013000",
      "check_digits": "89",
      "checksum_valid": true,
      "country_code": "DE",
      "format_valid": true,
      "iban": "DE89370400440532013000",
      "iban_formatted": "DE89 3704 0044 0532 0130 00",
      "messages": [
        "Bank code valid: 37040044"
      ],
      "valid": true
    }
  ],
  "valid_count": 1,
  "valid_ibans": [
    "DE89370400440532013000"
  ]
}

On this page