thumb|alt=The IBAN on this bank statement is grouped with the account number, sort code and BIC.|A typical British [[bank statement header (from a fictitious bank<!--Based on the layout used by Lloyds Bank-->), showing the location of the account's IBAN]]

The International Bank Account Number (IBAN) is an internationally agreed upon 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. An IBAN uniquely identifies the account of a customer at a financial institution. It was originally adopted by the European Committee for Banking Standards (ECBS) and since 1997 as the international standard ISO 13616 under the International Organization for Standardization (ISO). The current version is ISO 13616:2020, which indicates the Society for Worldwide Interbank Financial Telecommunication (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. By December 2024, 89 countries were using the IBAN numbering system.

In 1997, to overcome these difficulties, the International Organization for Standardization (ISO) published ISO 13616:1997. This proposal had a degree of flexibility that the European Committee for Banking Standards (ECBS) 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-2:2007 describes "the Registration Authority (RA) responsible for the registry of IBAN formats that are compliant with ISO 13616-1 [and] 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 in 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 (known as sort codes in the UK and Ireland) and account numbers, and it contains check digits which can be validated at the source according to a single standard procedure.

Structure<!--'Basic Bank Account Number' redirects here-->

The IBAN consists of up to 34 alphanumeric characters, as follows:

  • country code using ISO 3166-1 alpha-2 – two letters,
  • check digits – two digits, and
  • Basic Bank Account Number (BBAN) – up to 30 alphanumeric characters that are country-specific. This check is guaranteed to detect any instances where a single character has been omitted, duplicated, mistyped or where two characters have been transposed. In particular, the computer program that accepts an IBAN will be able to validate:
  • Country code
  • Number of characters in the IBAN correspond to the number specified for the country code
  • BBAN format specified for the country code
  • Account number, bank code and country code combination is compatible with the check digits

The check digits are calculated using MOD-97-10 as per ISO/IEC 7064:2003 (abbreviated to mod-97 in this article), 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:

  • All single substitution errors (the substitution of a single character for another, for example <code>4234</code> for <code>1234</code>)
  • All or nearly all single (local) transposition errors (the transposition of two single characters, either adjacent or with one character between them, for example <code>12354</code> or <code>12543</code> for <code>12345</code>)
  • All or nearly all shift errors (shifts of the whole string to the left or right)
  • High proportion of double substitution errors (two separate single substitution errors in the same string, for example <code>7234587</code> for <code>1234567</code>)
  • High proportion of all other errors

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 <code>00</code> is a valid check digit, <code>97</code> will not be a valid check digit, likewise, if <code>01</code> is a valid check digit, <code>98</code> will not be a valid check digit, similarly with <code>02</code> and <code>99</code>.

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 (as described in ISO 7064) on it. If the IBAN is valid, the remainder equals 1. The algorithm of IBAN validation is as follows: 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 (as is the case with the UN CEFACT TBG5 JavaScript program).

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 the above result (step 2) with the next 7 or 8 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 (step 2) 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 = . (The digits are colour-coded to aid the description below.) 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 (step 2) 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 (step 4) 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 (step 6) 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.

National check digits

In addition to the IBAN check digits, many countries have their own national check digits used within the BBAN, as part of their national account number formats. Each country determines its own algorithm used for assigning and validating the national check digits - some relying on international standards, some inventing their own national standard, and some allowing each bank to decide if or how to implement them. Some algorithms apply to the entire BBAN, and others to one or more of the fields within it. The check digits may be considered an integral part of the account number, or an external field separate from the account number, depending on the country's rules.

Most of the variations used are based on two categories of algorithms:

- ISO 7064 MOD-97-10: Treat the account number as a large integer, divide it by 97 and use the remainder or its complement as the check digit(s).

- Weighted sum: Treat the account number as a series of individual numbers, multiply each number by a weight value according to its position in the string, sum the products, divide the sum by a modulus (10, 11 or 26) and use the remainder or its complement as the check digit or letter.

In both cases, there may first be a translation from alphanumeric characters to numbers using conversion tables. The complement, if used, means the remainder is subtracted from a fixed value, usually the modulus or the modulus plus one (with the common exception that a remainder of 0 results in 0, denoted as 0 → 0, as opposed to e.g. 0 → 97 meaning that if the remainder is zero the checksum is 97). Some national specifications define the weights order from right to left, but since the BBAN length in the IBAN is fixed, they can be used from left to right as well.

{| class="wikitable sortable"

|+National check digits in the International Bank Account Number system

|-

!scope="col"| Country

!scope="col"| Algorithm

!scope="col"| Weights

!scope="col"| Modulo

!scope="col"| Complement

!scope="col"| Comments

|-

|scope="row"| Albania

| Weighted

| 9, 7, 3, 1, 9, 7, 3, 1

| 10

| 10 − r, 0 → 0

| Applies only to the bank code + branch code fields.

|-

|scope="row"| Belgium

| ISO 7064 MOD-97-10 (variant)

|

| 97

| r, 0 → 97

| Applied to bank code + account number.

|-

|scope="row"| Bosnia and Herzegovina

| ISO 7064 MOD-97-10

|

| 97

| 98 − r

|

|-

|scope="row"| Croatia

| Weighted

| 7, 1, 3, 7, 1, 3, 7, 1, 3, 7, 1, 3, 7

| 10

| 10 − r, 0 → 0

| Applies only to the branch code + account number fields (ignoring the bank code).

|-

|scope="row"| Finland

| ISO 7064 MOD-97-10 (variant)

|

| 97

| 97 − r

|The mapping form characters to coefficients is non-standard: the digits 0–9 are converted to their respective values, letters 'A–I' converted to 1–9, letters J–R converted to 1–9 and letters S–Z converted to 2–9, respectively.

|-

|scope="row"| Hungary

| Weighted

| 3, 9, 7, 1, 3, 9, 7

| 10

| 10 − r, 0 → 0

| Applies only to the bank code + branch code (without the account number).

|-

|scope="row"| Portugal

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, formerly part of the European Union is required to use the IBAN, and the British Virgin Islands have chosen to do so. , no other British Overseas Territories have chosen to use the IBAN. 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 (with a 12 and 24 months transition period respectively). 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. The first such catalogue was published in June 2013 as a variant of the old bank code catalog ("Bankleitzahlendatei").

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. This practice in Ukraine ended on 1 November 2019 when all Ukrainian banks had fully switched to the IBAN standard.

The degree to which a bank verifies the validity of a recipient's bank account number depends on 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 (X9B20) 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:

  • The kk after the two-character ISO country code represents the check digits calculated from the rest of the IBAN characters. If it is a constant for the country concerned, this will be stated in the Comments column. This happens where the BBAN has its own check digits that use the same algorithm as the IBAN check digits
  • The BBAN format column shows the format of the BBAN part of an IBAN in terms of upper case alpha characters (A–Z) denoted by "a", numeric characters (0–9) denoted by "n" and mixed case alphanumeric characters (a–z, A–Z, 0–9) denoted by "c". For example, the Bulgarian BBAN (4a,6n,8c) consists of 4 alpha characters, followed by 6 numeric characters, then by 8 mixed-case alpha-numeric characters
  • Descriptions in the Comments field have been standardised with country-specific names in brackets. The format of the various fields can be deduced from the BBAN field

{| class="wikitable sortable"

|+International Bank Account Number formats by country

|-

!scope="col"| Country

!scope="col"| Chars

!scope="col"| BBAN format

!scope="col"| IBAN Fields

!scope="col"| Comment

|-

|scope="row"| Albania

| 28

| 8n,16c

| <code> </code>

| = National bank code<br /> = Branch code<br /> = National check digits<br /> = Account number

|-

|scope="row"| Andorra

| 24

| 8n,12c

| <code> </code>

| = National bank code<br /> = Branch code<br /> = Account number

|-

|scope="row"| Austria

| 20

| 16n

| <code> </code>

| = National bank code<br /> = Account number

|-

|scope="row"| Azerbaijan

| 28

| 4a,20c

| <code> </code>

| = National bank code<br /> = Account number

|-

|scope="row"| Bahrain

| 22

| 4a,14c

| <code> </code>

| = National bank code<br /> = Account number

|-

|scope="row"| Belarus

| 28

| 4c, 4n, 16c

| <code> aaaa </code>

| = National bank or branch code<br /> a = Balance account number<br /> = Account number

|-

|scope="row"| Belgium

| 16

| 12n

| <code> </code>

| = National bank code<br /> = Account number<br /> = National check digits

|-

|scope="row"| Bosnia and Herzegovina

| 20

| 16n

| <code> </code>

| = IBAN check digits (always "39")<br /> = National bank code<br /> = Branch code<br /> = Account number<br /> = National check digits

|-

|scope="row"| Brazil

| 29

| 23n,1a,1c

| <code> n</code>

| = National bank code<br /> = Branch code<br /> = Account number<br /> = Account type (cheque account, savings account etc.)<br />n = Owner account number ("1", "2" etc.)

|-

|scope="row"| Bulgaria

| 22

| 4a,6n,8c

| <code> </code>

| = BIC bank code<br /> = Branch (BAE) number<br /> = Account type<br /> = Account number

|-

|scope="row"| Burundi

| 27

| 5n, 5n, 11n, 2n

| <code> </code>

| = National bank code<br /> = Branch identifier<br /> = Account number

|-

|scope="row"| Costa Rica

| 22

| 18n

| <code> 0 </code>

| 0 = always zero<br /> = bank code<br /> = Account number

|-

|scope="row"| Croatia

| 21

| 17n

| <code> </code>

| = Bank code<br /> = Account number

|-

|scope="row"| Cyprus

| 28

| 8n,16c

| <code> </code>

| = National bank code<br /> = Branch code<br /> = Account number

|-

|scope="row"| Czech Republic

| 24

| 20n

| <code> </code>

| = National bank code<br /> = Account number prefix<br /> = Account number

|-

|scope="row"| Denmark

| 18

| 14n

| <code> </code>

| = National bank code<br /> = Account number <br /> = National check digit

|-

|scope="row"| Djibouti

| 27

| 5n, 5n, 11n, 2n

| <code> </code>

| = National bank code<br /> = Branch identifier<br /> = Account number

|-

|scope="row"| Dominican Republic

| 28

| 4c,20n

| <code> </code>

| = Bank identifier<br /> = Account number

|-

|scope="row"| East Timor

| 23

| 19n

| <code> </code>

| = IBAN check digits (always = "38")<br /> = Bank identifier<br /> = Account number<br /> = National check digits

|-

|scope="row"| Egypt

| 29

| 25n

| <code> </code>

| = National bank code<br /> = Branch code<br /> = Account number<br />

|-

|scope="row"| El Salvador

| 28

| 4a, 20n

| <code> </code>

| = National bank code<br /> = Account number<br />

|-

|scope="row"| Estonia

| 20

| 16n

| <code> </code>

| = National bank code<br /> = Branch code<br /> = Account number<br /> = National check digit

|-

| scope="row" | Falkland Islands

| 18

| 2a,12n

| <code> </code>

| = National bank code<br /> = Account number

|-

|scope="row"| Faroe Islands

| 18

| 14n

| <code> </code>

| = National bank code<br /> = Account number <br /> = National check digit

|-

|scope="row"| Finland

| 18

| 14n

| <code> </code>

| = Bank and branch code<br /> = Account number<br /> = National check digit

|-

|scope="row"| France

| 27

| 10n,11c,2n

| <code> </code>

| = National bank code<br /> = Branch code (')<br /> = Account number<br /> = National check digits (')

|-

|scope="row"| Georgia

| 22

| 2a,16n

| <code> </code>

| = National bank code <br /> = Account number

|-

|scope="row"| Germany

| 22

| 18n

| <code> </code>

| = Bank and branch identifier (Bankleitzahl or BLZ)<br /> = Account number

|-

|scope="row"| Gibraltar

| 23

| 4a,15c

| <code> </code>

| = BIC bank code<br /> = Account number

|-

|scope="row"| Greece

| 27

| 7n,16c

| <code> </code>

| = National bank code<br /> = Branch code<br /> = Account number

|-

|scope="row"| Greenland

| 18

| 4a,10n

| <code> </code>

| = BIC Bank code<br /> = Account number<br /> = Modulo-11 national check digit

|-

|scope="row"| Nicaragua

| 28

| 4a, 20n

| <code> </code>

| = National bank code<br /> = Account number<br />

|-

|scope="row"| North Macedonia

| 19

| 3n,10c,2n

| <code> </code>

| = IBAN check digits (always = "07")<br /> = National bank code<br /> = Account number<br /> = National check digits

|-

|scope="row"| Norway

| 15

| 11n

| <code> </code>

| = National bank code<br /> = Account number<br /> = Modulo-11 national check digit

|-

|scope="row"| Oman

| 23

| 3n,16c

| <code> </code>

| = National bank code<br /> = Account number

|-

|scope="row"| Pakistan

| 24

| 4a,16c

| <code> </code>

| = National bank code<br /> = Account number

|-

|scope="row"| Palestinian territories

| 29

| 4a,21c

| <code> </code>

| = National bank code<br /> = Account number

|-

|scope="row"| Poland

| 28

| 24n

| <code> </code>

| = National bank code<br /> = Account number

|-

|scope="row"| Portugal

| 25

| 21n

| <code> </code>

| = IBAN check digits (always = "50")<br /> = National bank code (numeric only)<br /> = Branch code (numeric only)<br /> = Account number (numeric only)<br /> = National check digits (numeric only)

|-

|scope="row"| Qatar

| 29

| 4a,21c

| <code> </code>

| = National bank code<br /> = Account number

|-

|scope="row"| Romania

| 24

| 4a,16c

| <code> </code>

| = BIC Bank code (first four alpha characters)<br /> = Branch code and account number (bank-specific format)

|-

|scope="row"| Russia<br />(effective April 2023)

| 22

| 4a,14n

| <code> </code>

| = BIC bank code<br /> = Bank and branch code (sort code)<br /> = Account number

|-

|scope="row"| Vatican City

| 22

| 3n,15n

| <code> </code>

| = National bank code<br /> = Account number

|-

|scope="row"| Virgin Islands, British

| 24

| 4a,16n

| <code> </code>

| = National bank code<br /> = Account number

|-

|scope="row"| Yemen

| 30

| 4a,4n,18c

| <code> </code>

| = Bank code<br /> = Branch code<br /> = Account number

|}

In addition to the above, the IBAN is under development in countries below but has not yet been catalogued for general international use.

In this list

  • <code>"kk"</code> represent the IBAN checksum digits
  • <code>"a"</code> represents an uppercase alpha character (A–Z)
  • <code>"c"</code> represents an alphanumeric character (a–z, A–Z, 0–9)
  • <code>"n"</code> represents a numeric character (0–9)

{| class="wikitable sortable"

|+Aspirational country codes for International Bank Account Number

|-

!scope="col"| Country

!scope="col"| Chars

!scope="col"| BBAN format

!scope="col"| Example

|-

|scope="row"|Algeria

|26

|22n

|<code>DZkk nnnn nnnn nnnn nnnn nnnn nn</code>

|-

|scope="row"|Angola

|25

|21n

|<code>AOkk nnnn nnnn nnnn nnnn nnnn n</code>

|-

|scope="row"|Benin

|28

|2c, 22n

|<code>BJkk ccnn nnnn nnnn nnnn nnnn nnnn</code>

|-

|scope="row"|Burkina Faso

|28

|2c, 22n

|<code>BFkk ccnn nnnn nnnn nnnn nnnn nnnn</code>

|-

|scope="row"|Cabo Verde

|25

|21n

|<code>CVkk nnnn nnnn nnnn nnnn nnnn n</code>

|-

|scope="row"|Cameroon

|27

|23n

|<code>CMkk nnnn nnnn nnnn nnnn nnnn nnn</code>

|-

|scope="row"|Central African Republic

|27

|23n

|<code>CFkk nnnn nnnn nnnn nnnn nnnn nnn</code>

|-

|scope="row"|Chad

|27

|23n

|<code>TDkk nnnn nnnn nnnn nnnn nnnn nnn</code>

|-

|scope="row"|Comoros

|27

|23n

|<code>KMkk nnnn nnnn nnnn nnnn nnnn nnn</code>

|-

|scope="row"|Congo, Republic of the

|27

|23n

|<code>CGkk nnnn nnnn nnnn nnnn nnnn nnn</code>

|-

|scope="row"|Côte d'Ivoire

|28

|2a, 22n

|<code>CIkk aann nnnn nnnn nnnn nnnn nnnn</code>

|-

|scope="row"|Equatorial Guinea

|27

|23n

|<code>GQkk nnnn nnnn nnnn nnnn nnnn nnn</code>

|-

|scope="row"|Gabon

|27

|23n

|<code>GAkk nnnn nnnn nnnn nnnn nnnn nnn</code>

|-

|scope="row"|Guinea-Bissau

|25

|2c, 19n

|<code>GWkk ccnn nnnn nnnn nnnn nnnn n</code>

|-

|scope="row"|Iran

|26

|22n

|<code>IRkk nnnn nnnn nnnn nnnn nnnn nn</code>

|-

|scope="row"|Madagascar

|27

|23n

|<code>MGkk nnnn nnnn nnnn nnnn nnnn nnn</code>

|-

|scope="row"|Mali

|28

|2c, 22n

|<code>MLkk ccnn nnnn nnnn nnnn nnnn nnnn</code>

|-

|scope="row"|Morocco

|28

|24n

|<code>MAkk nnnn nnnn nnnn nnnn nnnn nnnn</code>

|-

|scope="row"|Mozambique

|25

|21n

|<code>MZkk nnnn nnnn nnnn nnnn nnnn n</code>

|-

|scope="row"|Niger

|28

|2a, 22n

|<code>NEkk aann nnnn nnnn nnnn nnnn nnnn</code>

|-

|scope="row"|Senegal

|28

|2a, 22n

|<code>SNkk aann nnnn nnnn nnnn nnnn nnnn</code>

|-

|scope="row"|Togo

|28

|2a, 22n

|<code>TGkk aann nnnn nnnn nnnn nnnn nnnn</code>

|}

See also

  • Bank card number
  • Bank regulation
  • ABA routing transit number
  • Routing number (Canada)
  • EPC QR code

Notes

References