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
| Action | What it does |
|---|---|
| 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. |
| 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. |
| 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. |
| Get bank details for an IBAN | Look up the bank behind an IBAN: its BIC (SWIFT code), name, city and postcode. |
| 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. |
| 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. |
| 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. |
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
- Country
country_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 code
bank_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 number
account_numbertextRequired - The domestic account number, exactly as the bank writes it, leading zeros included. Spaces are ignored.
- Look up the bank
look_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
- Country
country_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.
- Accounts
accountslistRequired - 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 bank
look_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 code
countrytextRequired - 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
- IBAN
ibantextRequired - 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 contains
querytext - Only countries whose name or code contains this text. Not case sensitive. Leave it empty for all of them.
- Only countries with bank data
bank_data_onlytrue/false - Return only the seven countries openiban holds bank codes and BICs for. Off by default.Default:
false. - Order by
sorttext - 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
- IBAN
ibantextRequired - 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 code
check_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 bank
look_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
- IBANs
ibanslistRequired - 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 code
check_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 bank
look_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"
]
}