International Bank Account Number


The International Bank Account Number is an internationally agreed system of identifying bank accounts across national borders to facilitate the communication and processing of cross border transactions with a reduced risk of transcription errors. It was originally adopted by the European Committee for Banking Standards and later as an international standard under ISO 13616:1997. The current standard is ISO 13616:2007, which indicates SWIFT as the formal registrar. Initially developed to facilitate payments within the European Union, it has been implemented by most European countries and numerous countries in other parts of the world, mainly in the Middle East and the Caribbean. As of February 2016, 69 countries were using the IBAN numbering system.
The IBAN consists of up to 34 alphanumeric characters comprising a country code; two check digits; and a number that includes the domestic bank account number, branch identifier, and potential routing information. The check digits enable a check of the bank account number to confirm its integrity before submitting a transaction.

Background

Before IBAN, differing national standards for bank account identification were confusing for some users. This often led to necessary routing information being missing from payments. Routing information as specified by ISO 9362 does not require a specific format for the transaction so the identification of accounts and transaction types is left to agreements of the transaction partners. It also does not contain check digits, so errors of transcription were not detectable and it was not possible for a sending bank to validate the routing information prior to submitting the payment. Routing errors caused delayed payments and incurred extra costs to the sending and receiving banks and often to intermediate routing banks.
In 1997, to overcome these difficulties, the International Organization for Standardization published ISO 13616:1997. This proposal had a degree of flexibility, which the European Committee for Banking Standards believed would make it unworkable, and they produced a "slimmed down" version of the standard which, amongst other things, permitted only upper-case letters and required that the IBAN for each country have a fixed length. ISO 13616:1997 was subsequently withdrawn and replaced by ISO 13616:2003. The standard was revised again in 2007 when it was split into two parts. ISO 13616-1:2007 "specifies the elements of an international bank account number used to facilitate the processing of data internationally in data interchange, in financial environments as well as within and between other industries" but "does not specify internal procedures, file organization techniques, storage media, languages, etc. to be used in its implementation". ISO 13616-2:2007 describes "the Registration Authority responsible for the registry of IBAN formats that are compliant with ISO 13616-1 the procedures for registering ISO 13616-compliant IBAN formats". The official IBAN registrar under ISO 13616-2:2007 is SWIFT.
IBAN imposes a flexible but regular format sufficient for account identification and contains validation information to avoid errors of transcription. It carries all the routing information needed to get a payment from one bank to another wherever it may be; it contains key bank account details such as country code, branch codes and account numbers, and it contains check digits which can be validated at source according to a single standard procedure. Where used, IBANs have reduced trans-national money transfer errors to under 0.1% of total payments.

Structure

The IBAN consists of up to 34 alphanumeric characters, as follows:
The check digits enable a sanity check of the bank account number to confirm its integrity before submitting a transaction.
The IBAN should not contain spaces when transmitted electronically. When printed it is expressed in groups of four characters separated by a single space, the last group being of variable length as shown in the example below:
CountryIBAN formatting example
BelgiumBE71 0961 2345 6769
FranceFR76 3000 6000 0112 3456 7890 189
GermanyDE91 1000 0000 0123 4567 89
GreeceGR96 0810 0010 0000 0123 4567 890
PakistanPK00 BANK 0000 1234 5678 9000
RomaniaRO09 BCYP 0000 0012 3456 7890
Saudi ArabiaSA44 2000 0001 2345 6789 1234
SpainES79 2100 0813 6101 2345 6789
SwitzerlandCH56 0483 5012 3456 7800 9
United KingdomGB98 MIDL 0700 9312 3456 78

Permitted IBAN characters are the digits 0 to 9 and the 26 Latin alphabetic characters A to Z. This applies even in countries where these characters are not used in the national language.

Basic Bank Account Number

The Basic Bank Account Number format is decided by the national central bank or designated payment authority of each country. There is no consistency between the formats adopted. The national authority may register its BBAN format with SWIFT, but is not obliged to do so. It may adopt IBAN without registration. SWIFT also acts as the registration authority for the SWIFT system, which is used by most countries that have not adopted IBAN. A major difference between the two systems is that under SWIFT there is no requirement that BBANs used within a country be of a pre-defined length.
The BBAN must be of a fixed length for the country and comprise case-insensitive alphanumeric characters. It includes the domestic bank account number, branch identifier, and potential routing information. Each country can have a different national routing/account numbering system, up to a maximum of 30 alphanumeric characters.

Check digits

The check digits enable the sending bank to perform a sanity check of the routing destination and account number from a single string of data at the time of data entry. This check is guaranteed to detect any instances where a single character has been omitted, duplicated, mistyped or where two characters have been transposed. Thus routing and account number errors are virtually eliminated.

Processing

One of the design aims of the IBAN was to enable as much validation as possible to be done at the point of data entry. In particular, the computer program that accepts an IBAN will be able to validate:
The check digits are calculated using MOD-97-10 as per ISO/IEC 7064:2003, which specifies a set of check character systems capable of protecting strings against errors which occur when people copy or key data. In particular, the standard states that the following can be detected:
The underlying rules for IBANs is that the account-servicing financial institution should issue an IBAN, as there are a number of areas where different IBANs could be generated from the same account and branch numbers that would satisfy the generic IBAN validation rules. In particular cases where 00 is a valid check digit, 97 will not be a valid check digit, likewise, if 01 is a valid check digit, 98 will not be a valid check digit, similarly with 02 and 99.
The UN CEFACT TBG5 has published a free IBAN validation service in 32 languages for all 57 countries that have adopted the IBAN standard. They have also published the Javascript source code of the verification algorithm.
An English language IBAN checker for ECBS member country bank accounts is available on its website.

Algorithms

Validating the IBAN

An IBAN is validated by converting it into an integer and performing a basic mod-97 operation on it. If the IBAN is valid, the remainder equals 1. The algorithm of IBAN validation is as follows:
  1. Check that the total IBAN length is correct as per the country. If not, the IBAN is invalid
  2. Move the four initial characters to the end of the string
  3. Replace each letter in the string with two digits, thereby expanding the string, where A = 10, B = 11,..., Z = 35
  4. Interpret the string as a decimal integer and compute the remainder of that number on division by 97
If the remainder is 1, the check digit test is passed and the IBAN might be valid.
Example :

Generating IBAN check digits

According to the ECBS "generation of the IBAN shall be the exclusive responsibility of the bank/branch servicing the account". The ECBS document replicates part of the ISO/IEC 7064:2003 standard as a method for generating check digits in the range 02 to 98. Check digits in the ranges 00 to 96, 01 to 97, and 03 to 99 will also provide validation of an IBAN, but the standard is silent as to whether or not these ranges may be used.
The preferred algorithm is:
  1. Check that the total IBAN length is correct as per the country. If not, the IBAN is invalid.
  2. Replace the two check digits by 00.
  3. Move the four initial characters to the end of the string.
  4. Replace the letters in the string with digits, expanding the string as necessary, such that A or a = 10, B or b = 11, and Z or z = 35. Each alphabetic character is therefore replaced by 2 digits
  5. Convert the string to an integer.
  6. Calculate mod-97 of the new number, which results in the remainder.
  7. Subtract the remainder from 98, and use the result for the two check digits. If the result is a single digit number, pad it with a leading 0 to make a two-digit number.

    Modulo operation on IBAN

Any computer programming language or software package that is used to compute D mod 97 directly must have the ability to handle integers of more than 30 digits. In practice, this can only be done by software that either supports arbitrary-precision arithmetic or that can handle 220 bit integers, features that are often not standard. If the application software in use does not provide the ability to handle integers of this size, the modulo operation can be performed in a piece-wise manner.
Piece-wise calculation can be done in many ways. One such way is as follows:
  1. Starting from the leftmost digit of D, construct a number using the first 9 digits and call it N.
  2. Calculate N mod 97.
  3. Construct a new 9-digit N by concatenating above result with the next 7 digits of D. If there are fewer than 7 digits remaining in D but at least one, then construct a new N, which will have less than 9 digits, from the above result followed by the remaining digits of D
  4. Repeat steps 2–3 until all the digits of D have been processed
The result of the final calculation in step 2 will be D mod 97 = N mod 97.
Example
In this example, the above algorithm for D mod 97 will be applied to D =. If the result is one, the IBAN corresponding to D passes the check digit test.
  1. Construct N from the first 9 digits of D
  2. : N =
  3. Calculate N mod 97 = 70
  4. Construct a new 9-digit N from the above result followed by the next 7 digits of D.
  5. : N = 70
  6. Calculate N mod 97 = 29
  7. Construct a new 9-digit N from the above result followed by the next 7 digits of D.
  8. : N = 29
  9. Calculate N mod 97 = 24
  10. Construct a new N from the above result followed by the remaining 5 digits of D.
  11. : N = 24
  12. Calculate N mod 97 = 1
From step 8, the final result is D mod 97 = 1 and the IBAN has passed this check digit test.

Adoption

International bank transactions use either an IBAN or the ISO 9362 Business Identifier Code system in conjunction with the BBAN.

EEA and territories

The banks of most countries in Europe publish account numbers using both the IBAN format and the nationally recognised identifiers, this being mandatory within the European Economic Area.
Day-to-day administration of banking in British Overseas Territories varies from territory to territory; some, such as South Georgia and the South Sandwich Islands, have too small a population to warrant a banking system while others, such as Bermuda, have a thriving financial sector. The use of the IBAN is up to the local government—Gibraltar, being part of the European Union is required to use the IBAN,, as are the Crown dependencies, which use the British clearing system, and the British Virgin Islands have chosen to do so., no other British Overseas Territories have chosen to use the IBAN. Banks in the Caribbean Netherlands also do not use the IBAN.
.

Single Euro Payments Area

The IBAN designation scheme was chosen as the foundation for electronic straight-through processing in the European Economic Area. The European Parliament mandated that a bank charge needs to be the same amount for domestic credit transfers as for cross-border credit transfers regulated in decision 2560/2001. This regulation took effect in 2003. Only payments in euro up to €12,500 to a bank account designated by its IBAN were covered by the regulation.
The Euro Payments regulation was the foundation for the decision to create a Single Euro Payments Area. The European Central Bank has created the TARGET2 interbank network that unifies the technical infrastructure of the 26 central banks of the European Union. SEPA is a self-regulatory initiative by the banking sector of Europe as represented in the European Payments Council. The European Union made the scheme mandatory through the Payment Services Directive published in 2007. Since January 2008, all countries must support SEPA credit transfer, and SEPA direct debit must be supported since November 2009. The regulation on SEPA payments increased the charge cap to €50,000.
With a further decision of the European Parliament, the IBAN scheme for bank accounts fully replaced the domestic numbering schemes from 31 December 2012. On 16 December 2010, the European Commission published regulations that made IBAN support mandatory for domestic credit transfer by 2013 and for domestic direct debit by 2014. Some countries had already replaced their traditional bank account scheme by IBAN. This included Switzerland where IBAN was introduced for national credit transfer on 1 January 2006 and the support for the old bank account numbers was not required from 1 January 2010.
Based on a 20 December 2011 memorandum, the EU parliament resolved the mandatory dates for the adoption of the IBAN on 14 February 2012. On 1 February 2014, all national systems for credit transfer and direct debit were abolished and replaced by an IBAN-based system. This was then extended to all cross-border SEPA transactions on 1 February 2016. After these dates the IBAN is sufficient to identify an account for home and foreign financial transactions in SEPA countries and banks are no longer permitted to require that the customer supply the BIC for the beneficiary's bank.
In the run-up to the 1 February 2014 deadline, it became apparent that many old bank account numbers had not been allocated IBANs—an issue that was addressed on a country-by-country basis. In Germany, for example, Deutsche Bundesbank and the German Banking Industry Committee required that all holders of German bank codes published the specifics of their IBAN generation format taking into account not only the generation of check digits but also the handling of legacy bank codes, thereby enabling third parties to generate IBANs independently of the bank. The first such catalogue was published in June 2013 as a variant of the old bank code catalog.

Non-EEA

Banks in numerous non-European countries including most states of the Middle East, North Africa and the Caribbean have implemented the IBAN format for account identification. In some countries the IBAN is used on an ad hoc basis, an example was Ukraine where account numbers used for international transfers by some domestic banks had additional aliases that followed the IBAN format as a precursor to formal SWIFT registration. This practice in Ukraine ended on 1 November 2019 when all Ukrainian banks had fully switched to the IBAN standard.
The degree to which bank verifies the validity of a recipient's bank account number depends of the configuration of the transmitting bank's software—many major software packages supply bank account validation as a standard function. Some banks outside Europe may not recognize IBAN, though this is expected to diminish with time. Non-European banks usually accept IBANs for accounts in Europe, although they might not treat IBANs differently from other foreign bank account numbers. In particular, they might not check the IBAN's validity prior to sending the transfer.
Banks in the United States do not use IBAN as account numbers for U.S. accounts and use ABA routing transit numbers. Any adoption of the IBAN standard by U.S. banks would likely be initiated by ANSI ASC X9, the U.S. financial services standards development organization: a working group was established as an X9 subcommittee to generate an IBAN construction for U.S. bank accounts.
Canadian financial institutions have not adopted IBAN and use routing numbers issued by Payments Canada for domestic transfers, and SWIFT for international transfers. There is no formal governmental or private sector regulatory requirement in Canada for the major banks to use IBAN.
Australia and New Zealand do not use IBAN. They use Bank State Branch codes for domestic transfers and SWIFT for international transfers.

IBAN formats by country

This table summarises the IBAN formats by country:
CountryCharsBBAN FormatIBAN FieldsComment
Albania288n,16c' = National bank code
= Branch code
= National check digit
= Account number
Andorra248n,12c' = National bank code
= Branch code
= Account number
Austria2016n' = National bank code
= Account number
Azerbaijan284c,20n' = National bank code
= Account number
Bahrain224a,14c' = National bank code
= Account number
Belarus284c, 20n' aaaa = National bank or branch code
a = Balance account number
= Account number
Belgium1612n' = National bank code
= Account number
= National check digits
Bosnia and Herzegovina2016n' = IBAN check digits
= National bank code
= Branch code
= Account number
= National check digits
Brazil2923n,1a,1c' n = National bank code
= Branch code
= Account number
= Account type
n = Owner account number
Bulgaria224a,6n,8c' = BIC bank code
= Branch number
= Account type
= Account number
Costa Rica2218n' 0 0 = always zero
= bank code
= Account number
Croatia2117n' = Bank code
= Account number
Cyprus288n,16c' = National bank code
= Branch code
= Account number
Czech Republic2420n' = National bank code
= Account number prefix
= Account number
Denmark1814n' = National bank code
= Account number
Dominican Republic284a,20n' = Bank identifier
= Account number
East Timor2319n' = IBAN check digits
= Bank identifier
= Account number
= National check digits
Egypt2925n' = National bank code
= Branch code
= Account number
Estonia2016n' = National bank code
= Branch code
= Account number
= National check digit
Faroe Islands1814n' = National bank code
= Account number
= National check digit
Finland1814n' = Bank and branch code
= Account number
= National check digit
France2710n,11c,2n' = National bank code
= Branch code
= Account number
= National check digits
Georgia222c,16n' = National bank code
= Account number
Germany2218n' = Bank and branch identifier
= Account number
Gibraltar234a,15c' = BIC bank code
= Account number
Greece277n,16c' = National bank code
= Branch code
= Account number
Greenland1814n' = National bank code
= Account number
Guatemala284c,20c' mm = National bank code
= Account number
m = Currency
= Account type
Hungary2824n' = National bank code
= Branch code
= Account number
= National check digit
Iceland2622n' = National bank code, including branch code
= Account type code
= Account number
= Account holder's kennitala
Iraq234a,15n' = National bank code
= Branch code
= Account number
Ireland224c,14n' aaaa a = BIC bank code
= Bank/branch code
= Account number
Israel2319n' n nn = National bank code
n = Branch number
= Account number 13 digits
Italy271a,10n,12c' = Check character
= National bank code
= Branch code
= Account number
Jordan304a,22n' = National bank code
= Branch code
= Account number
Kazakhstan203n,13c' = National bank code
= Account number
Kosovo204n,10n,2n' = National bank code
= Account number
Kuwait304a,22c' = National bank code
= Account number.
Latvia214a,13c' = BIC bank code
= Account number
Lebanon284n,20c' = National bank code
= Account number
Liechtenstein215n,12c' = National bank code
= Account number
Lithuania2016n' = National bank code
= Account number
Luxembourg203n,13c' = National bank code
= Account number
North Macedonia193n,10c,2n' = IBAN check digits
= National bank code
= Account number
= National check digits
Malta314a,5n,18c' = BIC bank code
= Branch code
= Account number
Mauritania2723n' = IBAN check digits
= National bank code
= Branch code
= Account number
= National check digits
Mauritius304a,19n,3a' 000m mm = National bank code
= Branch identifier
= Account number
0 = Zeroes
m = Currency Symbol
Monaco2710n,11c,2n' = National bank code
= Branch code
= Account number
= National check digits.
Moldova242c,18c' = National bank code
= Account number
Montenegro2218n' = IBAN check digits
= Bank code
= Account number
= National check digits
Netherlands184a,10n' = BIC Bank code
= Account number
Norway1511n' = National bank code
= Account number
= Modulo-11 national check digit
Pakistan244c,16n' = National bank code
= Account number
Palestinian territories294c,21n' = National bank code
= Account number
= Not specified
Poland2824n' = National bank code
= Branch code
= National check digit
= Account number,
Portugal2521n' = IBAN check digits
= National bank code
= Branch code
= Account number
= National check digits
Qatar294a,21c' = National bank code
= Account number
Romania244a,16c' = BIC Bank code
= Branch code and account number
Saint Lucia324a,24c' = Bank code
= Account number
San Marino271a,10n,12c' = Check character
= National bank code
= Branch code
= Account number
Saudi Arabia242n,18c' = National bank code
= Account number preceded by zeros, if required
Serbia2218n' = IBAN check digits

= National bank code
= Account number
= Account check digits
Seychelles314a,20n,3a' mmm = Bank code
= Branch code
= Account number
m = Currency
Slovakia2420n' = National bank code
= Account number prefix
= Account number
Slovenia1915n' = IBAN check digits
= National bank code
= Branch code
= Account number
= National check digits
Spain2420n' = National bank code
= Branch code
= Check digits
= Account number
Sweden2420n' = National bank code
= Account number
Switzerland215n,12c' = National bank code
= Code identifying a bank account
Tunisia2420n' = IBAN check digits
= National bank code
= Branch code
= Account number
Turkey265n,17c' = National bank code
= Reserved for future use
= Account number
Ukraine296n, 19c' = Bank code
= Account number preceded by zeros, if required
United Arab Emirates233n,16n' = National bank code
= Account number
United Kingdom224a,14n' = BIC bank code
= Bank and branch code
= Account number
Vatican City223n,15n' = National bank code
= Account number
Virgin Islands, British244c,16n = National bank code
= Account number

In addition to the above list, Nordea has catalogued IBANs for countries listed below.
In this list
CountryCharsExampleComments
Algeria24DZkk nnnn nnnn nnnn nnnn nnnn-
Angola25AOkk nnnn nnnn nnnn nnnn nnnn n-
Benin28BJkk annn nnnn nnnn nnnn nnnn nnnn-
Burkina Faso28BFkk nnnn nnnn nnnn nnnn nnnn nnnn-
Burundi16BIkk nnnn nnnn nnnn-
Cameroon27CMkk nnnn nnnn nnnn nnnn nnnn nnn-
Cape Verde25CVkk nnnn nnnn nnnn nnnn nnnn n-
Iran26IRkk 0bb0 nnnn nnnn nnnn nnnn nn-
Ivory Coast28CIkk annn nnnn nnnn nnnn nnnn nnnn-
Madagascar27MGkk nnnn nnnn nnnn nnnn nnnn nnnthis format is identical to the French format
Mali28MLkk annn nnnn nnnn nnnn nnnn nnnn-
Mozambique25MZkk nnnn nnnn nnnn nnnn nnnn n-
Senegal28SNkk annn nnnn nnnn nnnn nnnn nnnn-

Addition list of countries, in the process of introducing the IBAN retrieved from SWIFT partner website are listed below.
In this list
CountryCharsExample
Comoros27KMkk nnnn nnnn nnnn nnnn nnnn nnn
Chad27TDkk nnnn nnnn nnnn nnnn nnnn nnn
Congo27CGkk nnnn nnnn nnnn nnnn nnnn nnn
Egypt29EGkk nnnn nnnn nnnn nnnn nnnn nnnn n
Gabon27GAkk nnnn nnnn nnnn nnnn nnnn nnn
Honduras28HNkk aaaa nnnn nnnn nnnn nnnn nnnn
Morocco28MAkk nnnn nnnn nnnn nnnn nnnn nnnn
Nicaragua32NIkk aaaa nnnn nnnn nnnn nnnn nnnn nnnn
Niger28NEkk aann nnnn nnnn nnnn nnnn nnnn
Togo28TGkk aann nnnn nnnn nnnn nnnn nnnn

Criticism

There is criticism about the length and readability of IBAN. Printed on paper the IBAN is often difficult to read. Therefore, it is popular to group the IBAN with four symbols. However, for electronic documents the copy and paste of grouped IBAN can result in errors with online banking forms. However, most modern bank institutes allow and detect the copy and paste of both grouped and ungrouped IBAN.