Identifiers and fields
Why was my payment rejected or returned for a wrong IBAN or BIC?
Written and maintained by ZagTrader. Last reviewed . How this page is sourced and checked
An IBAN carries two check digits that catch most typing errors, and each country fixes its length, so many wrong IBANs can be stopped before a payment is sent. A BIC has 8 or 11 characters and identifies the bank, not the account. When an IBAN is valid in form but the account does not exist, the beneficiary’s bank rejects or returns the payment with a reason code such as AC01.
What it means
An IBAN (ISO 13616) has three parts: a two-letter ISO country code, two check digits, and the national account number (the BBAN) of up to 30 letters and digits, so at most 34 characters. Each country registers one fixed length and layout; Swift keeps the official IBAN registry as the registration authority. On paper an IBAN is written in groups of four (GB42 BANK 4005 1587 6543 21); in a payment message it is sent without spaces.
The check uses ISO 7064 mod 97. Take GB42BANK40051587654321. Move the first four characters to the end: BANK40051587654321GB42. Replace each letter with two digits (A = 10, B = 11 ... Z = 35): B 11, A 10, N 23, K 20, G 16, B 11, which gives 1110232040051587654321161142. Divide by 97: the remainder must be 1. The number is too long for a calculator, so work in pieces: 111023204 mod 97 = 11; put 11 in front of the next seven digits, 110051587 mod 97 = 43; then 436543211 mod 97 = 46; then 4661142 mod 97 = 1. The IBAN is valid.
Swap the last two digits (GB42BANK40051587654312) and the same calculation gives 49, so the typo is caught before the payment leaves. To create the check digits instead, put 00 in their place, compute the remainder (here 56) and subtract it from 98: 98 minus 56 is 42.
Valid check digits only prove the IBAN is well formed. They do not prove the account exists, is open, or belongs to the beneficiary named in the payment. The ISO 20022 schemas are weaker still: the IBAN element only checks the shape (two letters, two digits, up to 30 letters or digits), not the check digits or the country length, so a schema-valid pacs.008 can carry a wrong IBAN.
A BIC (ISO 9362) identifies an institution: 4 characters for the institution, 2 letters for the country, 2 characters for the location and an optional 3-character branch code. XXX as the branch is the main office, and an 8-character BIC means the same as the 11-character one ending in XXX. A 0 as the second character of the location code (the eighth character overall) marks a test and training BIC, and a 1 there marks a passive participant that is not connected to the Swift network.
On Swift MT, BIC errors are caught at input with a NAK: T27 (badly formed or invalid), T28 (not a valid destination), T29 (invalid branch code), T45 (invalid non-connected BIC) and, in bank fields, C05 (not a financial institution BIC). Account errors are not network-checked; they surface later as a reject (pacs.002) or a return (pacs.004) from the bank that holds, or should hold, the account.
Common causes
- A typing error in the IBAN: one wrong character or two digits swapped. The check digits fail.
- Wrong length for the country: a digit missing or added, or a national account number sent in the IBAN field.
- An IBAN that passes the check but does not exist at the beneficiary’s bank, for example copied from an old invoice. Reason code AC01.
- An account that was closed (AC04) or blocked (AC06) since the beneficiary gave the details.
- The name in the payment does not match the account holder at the beneficiary’s bank. Reason code BE01.
- A BIC that does not exist, has a wrong branch code, or belongs to a different bank from the one that services the IBAN. Network NAK (T27, T29) on MT, or reason code RC01 from the receiving bank.
- A test BIC (eighth character
0) or a non-connected BIC (eighth character1) taken from test data or a directory and used as a live Swift destination.
How to fix it
- Remove spaces and check the IBAN length against the country (table below). A wrong length means a missing or extra character; ask the beneficiary again rather than guessing.
- Run the mod 97 check. If it fails, compare the IBAN character by character with the beneficiary’s written instructions; look for swapped digits and for O and 0, I and 1.
- If the IBAN passes but the payment came back, read the reason code: AC01 means the account is not known, AC04 closed, AC06 blocked, BE01 name and account do not match. Contact the beneficiary for new details; do not resend the same IBAN.
- Check the BIC: 8 or 11 characters, the country letters (characters 5 and 6) should normally match the IBAN country, and the eighth character should not be
0or1for a live payment over Swift. - Confirm that the BIC and the IBAN belong to the same bank, using the bank directory your payment system relies on. A correct IBAN with another bank’s BIC is routed to the wrong bank.
- Fix the static data (beneficiary template, vendor master file) and not only the payment, so the next payment does not fail the same way.
IBAN length by country for a few markets (ISO 13616 registry as published by Swift, via public summaries). Fake IBANs used on this site are shown for format only.
| Country | Code | IBAN length | Example (fake, valid check digits) |
|---|---|---|---|
| United Kingdom | GB | 22 | GB42BANK40051587654321 |
| Germany | DE | 22 | DE12500105170648489890 |
| United Arab Emirates | AE | 23 | AE070331234567890123456 |
| Luxembourg | LU | 20 | LU280019400644750000 |
| France | FR | 27 | |
| Switzerland | CH | 21 | |
| Saudi Arabia | SA | 24 | |
| Netherlands | NL | 18 | |
| Belgium | BE | 16 | |
| Norway | NO | 15 | |
| Bahrain | BH | 22 | |
| Qatar | QA | 29 | |
| Egypt | EG | 29 | |
| Kuwait | KW | 30 |
Example
BANKGB2LXXX returns a GBP 12,500.00 payment to ZagTrader Test Bank because the creditor IBAN, although it passes the mod 97 check, is not an account it holds. The return is a pacs.004 with reason AC01 and the UETR of the original pacs.008.
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.004.001.09">
<PmtRtr>
<GrpHdr>
<MsgId>BKGB26102300017</MsgId>
<CreDtTm>2026-10-23T09:15:00+01:00</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<SttlmInf>
<SttlmMtd>INDA</SttlmMtd>
</SttlmInf>
</GrpHdr>
<TxInf>
<RtrId>RTN2610230017</RtrId>
<OrgnlGrpInf>
<OrgnlMsgId>ZT26102200031</OrgnlMsgId>
<OrgnlMsgNmId>pacs.008.001.08</OrgnlMsgNmId>
</OrgnlGrpInf>
<OrgnlInstrId>ZT2610200031</OrgnlInstrId>
<OrgnlEndToEndId>INV-2026-0477</OrgnlEndToEndId>
<OrgnlUETR>ac0c77a8-f6a9-4c73-8015-27a683adb6a9</OrgnlUETR>
<OrgnlIntrBkSttlmAmt Ccy="GBP">12500.00</OrgnlIntrBkSttlmAmt>
<OrgnlIntrBkSttlmDt>2026-10-22</OrgnlIntrBkSttlmDt>
<RtrdIntrBkSttlmAmt Ccy="GBP">12500.00</RtrdIntrBkSttlmAmt>
<IntrBkSttlmDt>2026-10-23</IntrBkSttlmDt>
<InstgAgt>
<FinInstnId>
<BICFI>BANKGB2LXXX</BICFI>
</FinInstnId>
</InstgAgt>
<InstdAgt>
<FinInstnId>
<BICFI>ZAGTAEADXXX</BICFI>
</FinInstnId>
</InstdAgt>
<RtrChain>
<Dbtr>
<Pty>
<Nm>GULF TRADING LLC</Nm>
<PstlAdr>
<TwnNm>DUBAI</TwnNm>
<Ctry>AE</Ctry>
</PstlAdr>
</Pty>
</Dbtr>
<DbtrAgt>
<FinInstnId>
<BICFI>ZAGTAEADXXX</BICFI>
</FinInstnId>
</DbtrAgt>
<CdtrAgt>
<FinInstnId>
<BICFI>BANKGB2LXXX</BICFI>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Pty>
<Nm>ACME COMPONENTS LTD</Nm>
<PstlAdr>
<TwnNm>LONDON</TwnNm>
<Ctry>GB</Ctry>
</PstlAdr>
</Pty>
</Cdtr>
</RtrChain>
<RtrRsnInf>
<Rsn>
<Cd>AC01</Cd>
</Rsn>
<AddtlInf>IBAN GB42BANK40051587654321 NOT HELD</AddtlInf>
</RtrRsnInf>
<OrgnlTxRef>
<CdtrAcct>
<Id>
<IBAN>GB42BANK40051587654321</IBAN>
</Id>
</CdtrAcct>
</OrgnlTxRef>
</TxInf>
</PmtRtr>
</Document>Open this example in the parserRtrRsnInf/Rsn/Cd = AC01 is the reason. AddtlInf is free text from the returning bank.
OrgnlUETR, OrgnlEndToEndId and OrgnlInstrId point back to the original payment; use them to find it in your system.
OrgnlTxRef/CdtrAcct repeats the IBAN that failed, so you can see exactly what was sent.
BICs, names, IBAN and UETR are made up; the IBAN has valid check digits, which is the point: a valid IBAN can still be the wrong account.
Questions
- How do I check if an IBAN is valid?
- Check the length for the country, then move the first four characters to the end, replace letters with numbers (A = 10 to Z = 35) and divide by 97. A remainder of 1 means the IBAN is well formed. It does not prove the account exists.
- What is the difference between an IBAN and a BIC?
- The IBAN identifies the account, the BIC identifies the bank. A cross-border payment usually needs the IBAN of the beneficiary and the BIC of the beneficiary’s bank, and the two must belong to the same bank.
- Is an 8-character BIC the same as an 11-character BIC?
- An 8-character BIC refers to the main office, the same as the 11-character BIC ending in
XXX. A BIC with another branch code (for exampleABC) is a specific branch and can be routed differently. - What does return reason AC01 mean?
- Incorrect Account Number: the account identifier is invalid or the account does not exist at the beneficiary’s bank. Ask the beneficiary to confirm the IBAN in writing before paying again.
- What does a 0 in the eighth character of a BIC mean?
- It marks a test and training BIC, which is not used for live payments. A
1in that position marks a passive participant that is not connected to Swift.