Misplaced Pages

International Bank Account Number

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.

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 July 2024, 88 countries were using the IBAN numbering system.

#566433

66-722: 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. Before IBAN, differing national standards for bank account identification (i.e. bank, branch, routing codes, and account number) were confusing for some users. This often led to necessary routing information being missing from payments. Routing information as specified by ISO 9362 (also known as Business Identifier Codes (BIC), SWIFT ID or SWIFT code, and SWIFT-BIC) does not require

132-420: A bank account management application, a sanity check will fail if a withdrawal requests more money than the total account balance rather than allowing the account to go negative (which wouldn't be sane). Another sanity test might be that deposits or purchases correspond to patterns established by historical data—for example, large purchase transactions or ATM withdrawals in foreign locations never before visited by

198-695: 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 (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

264-461: 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 source according to a single standard procedure. The IBAN consists of up to 34 alphanumeric characters, as follows: The check digits represent the checksum of

330-408: A prime radix R and strings less than R characters in length. Notable algorithms include: Sanity testing A sanity check or sanity test is a basic test to quickly evaluate whether a claim or the result of a calculation can possibly be true. It is a simple check to see if the produced material is rational (that the material's creator was thinking rationally, applying sanity ). The point of

396-518: A programme work before proceeding with further testing whereas a sanity test refers to whether specific functionality such as a particular bug fix works as expected without testing the wider functionality of the software. In other words, a sanity test determines whether the intended result of a code change works correctly while a smoke test ensures that nothing else important was broken in the process. Sanity testing and smoke testing avoid wasting time and effort by quickly determining whether an application

462-401: A sanity test is to rule out certain classes of obviously false results, not to catch every possible error. A rule-of-thumb or back-of-the-envelope calculation may be checked to perform the test. The advantage of performing an initial sanity test is that of speedily evaluating basic function. In arithmetic, for example, when multiplying by 9, using the divisibility rule for 9 to verify that

528-429: 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

594-409: 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

660-411: A system, a high probability of catching errors is traded off against implementation difficulty; simple check digit systems are easily understood and implemented by humans but do not catch as many errors as complex ones, which require sophisticated programs to implement. A desirable feature is that left-padding with zeros should not change the check digit. This allows variable length numbers to be used and

726-409: 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 r is subtracted from a fixed value, usually the modulus or

SECTION 10

#1732798000567

792-414: A wider range of characters in the check digit, for example letters plus numbers. The final digit of a Universal Product Code , International Article Number , Global Location Number or Global Trade Item Number is a check digit computed as follows: A GS1 check digit calculator and detailed documentation is online at GS1's website. Another official calculator page shows that the mechanism for GTIN-13

858-508: Is 0×10 + 2×9 + 0×8 + 1×7 + 5×6 + 3×5 + 0×4 + 8×3 + 2×2 + 1×1 = 99 ≡ 0 (mod 11). So the ISBN is valid. Positions can also be counted from left, in which case the check digit is multiplied by 10, to check validity: 0×1 + 2×2 + 0×3 + 1×4 + 5×5 + 3×6 + 0×7 + 8×8 + 2×9 + 1×10 = 143 ≡ 0 (mod 11). ISBN 13 (in use January 2007) is equal to the EAN-13 code found underneath a book's barcode. Its check digit

924-475: Is a check digit computed so that multiplying each digit by its position in the number (counting from the right) and taking the sum of these products modulo 11 is 0. The digit the farthest to the right (which is multiplied by 1) is the check digit, chosen to make the sum correct. It may need to have the value 10, which is represented as the letter X. For example, take the ISBN   0-201-53082-1 : The sum of products

990-432: Is actually often itself the result of a sanity check. For example, if the function attempted to open, write to, and close a file, a sanity check may be used to ensure that it did not fail on any of these actions—which is a sanity check often ignored by programmers. These kinds of sanity checks may be used during development for debugging purposes and also to aid in troubleshooting software runtime errors . For example, in

1056-528: 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

1122-625: Is generated the same way as the UPC. The NOID Check Digit Algorithm (NCDA), in use since 2004, is designed for application in persistent identifiers and works with variable length strings of letters and digits, called extended digits. It is widely used with the ARK identifier scheme and somewhat used with schemes, such as the Handle System and DOI . An extended digit is constrained to betanumeric characters, which are alphanumerics minus vowels and

1188-487: Is guaranteed to detect any instances where a single character has been omitted, duplicated, mistyped or where two characters have been transposed. 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 (abbreviated to mod-97 in this article), which specifies

1254-461: 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. This table summarises the IBAN formats by country: b = National bank code c = Account number x = Account check digits In addition to

1320-514: 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

1386-428: Is often prior to a more exhaustive round of testing. A sanity test can refer to various orders of magnitude and other simple rule-of-thumb devices applied to cross-check mathematical calculations . For example: In software development, a sanity test (a form of software testing which offers "quick, broad, and shallow testing" ) evaluates the result of a subset of application functionality to determine whether it

SECTION 20

#1732798000567

1452-483: Is often used as a sanity test for a development environment similarly. Rather than a complicated script running a set of unit tests, if this simple programme fails to compile or execute, it proves that the supporting environment likely has a configuration problem that will prevent any code from compiling or executing. But if "Hello world" executes, then any problems experienced with other programmes likely can be attributed to errors in that application's code rather than

1518-428: Is possible and reasonable to proceed with further testing of the entire application. Sanity tests may sometimes be used interchangeably with smoke tests insofar as both terms denote tests which determine whether it is possible and reasonable to continue testing further. On the other hand, a distinction is sometimes made that a smoke test is a non-exhaustive test that ascertains whether the most crucial functions of

1584-466: Is the same for Global Location Number /GLN. For instance, the UPC-A barcode for a box of tissues is "036000241457". The last digit is the check digit "7", and if the other numbers are correct then the check digit calculation must produce 7. Another example: to calculate the check digit for the following food item "01010101010 x ". The final character of a ten-digit International Standard Book Number

1650-439: Is to denote checks which are performed within programme code, usually on arguments to functions or returns therefrom, to see if the answers can be assumed to be correct. The more complicated the routine, the more important that its response be checked. The trivial case is checking to see whether the return value of a function indicated success or failure, and to therefore cease further processing upon failure. This return value

1716-427: Is too flawed to merit more rigorous QA testing , but needs more developer debugging . Groups of sanity tests are often bundled together for automated unit testing of functions, libraries, or applications prior to merging development code into a testing or trunk version control branch , for automated building , or for continuous integration and continuous deployment . Another common usage of sanity test

1782-507: The Damm algorithm (2004), that too detects all single-digit errors and all adjacent transposition errors. These three methods use a single check digit and will therefore fail to capture around 10% of more complex errors. To reduce this failure rate, it is necessary to use more than one check digit (for example, the modulo 97 check referred to below, which uses two check digits—for the algorithm, see International Bank Account Number ) and/or to use

1848-593: The European Payments Council (EPC). The European Union made the scheme mandatory through the Payment Services Directive published in 2007. Since January 2008, all countries were required to support SEPA credit transfer, and SEPA direct debit was required to be supported since November 2009. The regulation on SEPA payments increased the charge cap (same price for domestic payments as for cross-border payments) to €50,000. With

1914-421: The sum of digits of the result is divisible by 9 is a sanity test—it will not catch every multiplication error, but is a quick and simple method to discover many possible errors. In computer science , a sanity test is a very brief run-through of the functionality of a computer program , system, calculation, or other analysis, to assure that part of the system or methodology works roughly as expected. This

1980-473: The 2 and 5 multiply to yield 10. The ISBN-10 code instead uses modulo 11, which is prime, and all the number positions have different weights 1, 2, ... 10. This system thus detects all single-digit substitution and transposition errors (including jump transpositions), but at the cost of the check digit possibly being 10, represented by "X". (An alternative is simply to avoid using the serial numbers which result in an "X" check digit.) ISBN-13 instead uses

2046-514: 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

International Bank Account Number - Misplaced Pages Continue

2112-566: The GS1 algorithm used in EAN numbers. More complicated algorithms include the Luhn algorithm (1954), which captures 98% of single-digit transposition errors (it does not detect 90 ↔ 09) and the still more sophisticated Verhoeff algorithm (1969), which catches all single-digit substitution and transposition errors, and many (but not all) more complex errors. Similar is another abstract algebra -based method,

2178-724: 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 (IBAN) 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 (RA) responsible for

2244-654: 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

2310-532: 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 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

2376-761: The IBAN is up to the local government— Gibraltar , formerly 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. As of April 2013, no other British Overseas Territories have chosen to use the IBAN. Banks in the Caribbean Netherlands also do not use the IBAN. The IBAN designation scheme

2442-437: 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

2508-508: The Javascript source code of the verification algorithm. An English language IBAN checker for ECBS member country bank accounts is available on its website. 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: If

2574-449: The above algorithm for D mod 97 will be applied to D = 321428291 2345698 7654321 61182 . (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 . From step 8, the final result is D mod 97 = 1 and the IBAN has passed this check digit test. In addition to the IBAN check digits, many countries have their own national check digits used within

2640-534: The above, the IBAN is under development in countries below but has not yet been catalogued for general international use. Check digit A check digit is a form of redundancy check used for error detection on identification numbers, such as bank account numbers, which are used in an application where they will at least sometimes be input manually. It is analogous to a binary parity bit used to check for errors in computer-generated data. It consists of one or more digits (or letters) computed by an algorithm from

2706-435: 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

International Bank Account Number - Misplaced Pages Continue

2772-493: 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 D mod 97 can be done in many ways. One such way is as follows: The result of the final calculation in step 2 will be D mod 97 = N mod 97 . In this example,

2838-541: The bank account number which is used by banking systems to confirm that the number contains no simple errors. In order to facilitate reading by humans, IBANs are traditionally expressed in groups of four characters separated by spaces, the last group being of variable length as shown in the example below; when transmitted electronically however spaces are omitted. Current exceptions to this formatting are Burundi (4, 5, 5, 11, 2), Egypt (no spaces), Libya (4, 3, 3, 15), and El Salvador (2, 2, 4, 20). Permitted IBAN characters are

2904-674: The bank. The first such catalogue was published in June 2013 as a variant of the old bank code catalog ("Bankleitzahlendatei"). 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

2970-488: The cardholder may be flagged for confirmation. Sanity checks are also performed upon installation of stable, production software code into a new computing environment to ensure that all dependencies are met, such as a compatible operating system and link libraries . When a computing environment has passed all the sanity checks, it's known as a sane environment for the installation programme to proceed with reasonable expectation of success. A "Hello, World!" program

3036-663: The check digit would be 5, giving 48715. Systems with weights of 1, 3, 7, or 9, with the weights on neighboring numbers being different, are widely used: for example, 31 31 weights in UPC codes, 13 13 weights in EAN numbers (GS1 algorithm), and the 371 371 371 weights used in United States bank routing transit numbers . This system detects all single-digit errors and around 90% of transposition errors. 1, 3, 7, and 9 are used because they are coprime with 10, so changing any digit changes

3102-460: The check digit; using a coefficient that is divisible by 2 or 5 would lose information (because 5×0 = 5×2 = 5×4 = 5×6 = 5×8 = 0 modulo 10) and thus not catch some single-digit errors. Using different weights on neighboring numbers means that most transpositions change the check digit; however, because all weights differ by an even number, this does not catch transpositions of two digits that differ by 5 (0 and 5, 1 and 6, 2 and 7, 3 and 8, 4 and 9), since

3168-436: 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 (e.g. Greece). The Basic Bank Account Number (BBAN) 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

3234-413: 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. The check digits enable the sending bank (or its customer) 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

3300-416: 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

3366-498: The length to be changed. If there is a single check digit added to the original number, the system will not always capture multiple errors, such as two replacement errors (12 → 34) though, typically, double errors will be caught 90% of the time (both changes would need to change the output by offsetting amounts). A very simple check digit method would be to take the sum of all digits ( digital sum ) modulo 10. This would catch any single-digit error, as such an error would always change

SECTION 50

#1732798000567

3432-473: The letter 'l' (ell). This restriction helps when generating opaque strings that are unlikely to form words by accident and will not contain both O and 0, or l and 1. Having a prime radix of R=29, the betanumeric repertoire permits the algorithm to guarantee detection of single-character and transposition errors for strings less than R=29 characters in length (beyond which it provides a slightly weaker check). The algorithm generalizes to any character repertoire with

3498-426: 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 reminder 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. Odd-positioned digits 0–9 are converted to their respective values in

3564-538: The numbers are summed (without weights), and the result taken modulo 26. This is then converted back into a single letter in the range A–Z (in natural order) which is used as the check digit (or rather, check character). International bank transactions use either an IBAN or the ISO 9362 Business Identifier Code system ( BIC or SWIFT code) in conjunction with the BBAN (Basic Bank Account Number). The banks of most countries in Europe publish account numbers using both

3630-399: The other digits (or letters) in the sequence input. With a check digit, one can detect simple errors in the input of a series of characters (usually digits) such as a single mistyped digit or some permutations of two successive digits. Check digit algorithms are generally designed to capture human transcription errors . In order of complexity, these include the following: In choosing

3696-587: 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: 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 219-bit (unsigned) integers, features that are often not standard. If

3762-405: 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 of transcription. It carries all the routing information needed to get

3828-562: The regulation, not payments in other currencies. The Euro Payments regulation was the foundation for the decision to create a Single Euro Payments Area (SEPA). The European Central Bank has created the TARGET2 interbank network that unifies the technical infrastructure of the 26 central banks of the European Union (although Sweden has opted out). SEPA is a self-regulatory initiative by the banking sector of Europe as represented in

3894-515: The remainder is 1, the check digit test is passed and the IBAN might be valid. Example (fictitious United Kingdom bank, sort code 12-34-56, account number 98765432): 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

3960-623: The sending and receiving banks and often to intermediate routing banks. 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

4026-405: The sequence 1, 0, 5, 7, 9, 13, 15, 17, 19, 21 , and characters in the range A–Z are converted to 1, 0, 5, 7, 9, 13, 15, 17, 19, 21, 2, 4, 18, 20, 11, 3, 6, 8, 12, 14, 16, 10, 22, 25, 24, 23 respectively. Even-positioned characters are converted using the natural zero-based value, i.e. digits 0–9 converted to the respective numbers 0–9 , and letters A–Z to the range 0–25 . After conversion

SECTION 60

#1732798000567

4092-450: The sum, but does not catch any transposition errors (switching two digits) as re-ordering does not change the sum. A slightly more complex method is to take the weighted sum of the digits, modulo 10, with different weights for each number position. To illustrate this, for example if the weights for a four digit number were 5, 3, 2, 7 and the number to be coded was 4871, then one would take 5×4 + 3×8 + 2×7 + 7×1 = 65, i.e. 65 modulo 10, and

4158-513: 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 ("Bankleitzahl") 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

4224-440: 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 (updated in 924/2009). 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

4290-471: 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

4356-575: Was then extended to all cross-border SEPA transactions on 1 February 2016 (Article 5 Section 7). 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

#566433