# Turkey IBAN format checker: length, check digits, bank code

URL: https://fincodelabs.com/en/tools/turkey-iban-checker · Publisher: Fincode (Fincode Yazılım ve Teknoloji A.Ş.), Istanbul, Turkey · Updated: 2026-10-15

Paste a Turkish IBAN to check its length, country code, check digits and reserved digit, and to see the bank code and the account field. The check runs in your browser; nothing is sent or stored. Free, no sign-up required.

## Calculator

The calculation runs in the browser in the form on this page: https://fincodelabs.com/en/tools/turkey-iban-checker

**Inputs**
- IBAN: 26 characters starting with TR; spaces are fine. Checked in your browser; nothing is sent or stored

**Results:** Format and check digits, Length, Check digits (MOD 97), Bank or payment institution code, Reserved digit, Account number field, Written in groups of four

> Well formed means the IBAN follows TCMB's structure and its check digits add up. It does not show that the account exists, is open, or belongs to the person you mean to pay. The check runs on this page only, and nothing you type is sent or stored.

## Turkey IBAN format: 26 characters

A Turkish IBAN has 26 characters: the country code TR, two check digits, a five-digit code for the bank or other payment institution, one reserved digit that is always 0 and a 16-character account number. The Central Bank of the Republic of Türkiye (TCMB) sets the structure in Article 4 of Communiqué No. 2008/6, as amended in 2021.

**Structure of a Turkish IBAN, TCMB Communiqué No. 2008/6, Article 4**

| Characters | Length | Content |
| --- | ---: | --- |
| 1 to 2 | 2 | Country code, TR |
| 3 to 4 | 2 | Check digits |
| 5 to 9 | 5 | Code of the bank or other payment service provider, set by TCMB |
| 10 | 1 | Reserved digit, 0 for every account |
| 11 to 26 | 16 | Account number, right-aligned and padded with zeros on the left; digits or capital letters |

Since the 2021 amendment, payment service providers other than banks, such as payment and electronic money institutions, may issue IBANs as well, so TCMB now calls the five digits a payment service provider code rather than a bank code. An IBAN contains no lowercase letters and no Turkish letters such as Ç or Ş. On screen it is written without spaces, and on paper in groups of four.

## How the IBAN check digits work

The two check digits make the whole IBAN pass the MOD 97-10 test of ISO 7064, which TCMB's communiqué prescribes. To check an IBAN:

1. Move the first four characters, TR and the check digits, to the end.
2. Replace each letter with two digits: A = 10, B = 11 and so on, so T = 29 and R = 27, up to Z = 35.
3. Divide the resulting number by 97. The IBAN passes if the remainder is 1.

Banks compute the check digits the other way round: with 00 in their place, 98 minus the remainder. The result is always from 02 to 98, so 00, 01 and 99 never occur. The test catches any single mistyped digit and any swap of two neighbouring digits. TCMB's rules require IBANs on incoming transfers to be validated, and a transfer order whose IBAN fails can be returned or rejected.

## Worked example

> **TCMB's published example** from the annex to the communiqué: TR47 0000 1001 0000 0350 9300 01. It is the regulator's own example, used here so that no one's real account appears on this page, and it is the calculator's default value.
>
> Moving TR47 to the end and replacing T with 29 and R with 27 gives 0000100100000350930001292747. Divided by 97, it leaves 1, so the check digits match. The code is 00001, the reserved digit 0 and the account field 0100000350930001, so the IBAN is **well formed**.
>
> Change the last digit to 2 and the remainder becomes 28: the IBAN fails. Swap two neighbouring digits, 0350930001 to 0359030001, and it fails as well.

## The same check in Python and JavaScript

Both versions test the structure and check digits only. They were run on 6 November 2026 with Python 3.11 and Node.js 24: the examples print the results shown in the comments, and the two versions gave the same verdict on 190,000 test IBANs, as did an independent implementation.

```python
def tr_iban_is_well_formed(iban: str) -> bool:
    """Turkish IBAN: 26 characters, TR, digits where required, reserved 0, MOD 97-10."""
    s = iban.replace(" ", "")
    if len(s) != 26 or not (s.isascii() and s.isalnum()):
        return False
    s = s.upper()
    if not s.startswith("TR") or not s[2:10].isdigit() or s[9] != "0":
        return False
    moved = s[4:] + s[:4]                                     # TR and the check digits go to the end
    number = int("".join(str(int(ch, 36)) for ch in moved))  # digits stay, A=10 ... Z=35
    return number % 97 == 1 and 2 <= int(s[2:4]) <= 98

print(tr_iban_is_well_formed("TR47 0000 1001 0000 0350 9300 01"))  # True: TCMB's published example
print(tr_iban_is_well_formed("TR47 0000 1001 0000 0350 9300 02"))  # False: last digit changed
```

```
function trIbanIsWellFormed(iban) {
  const s = iban.replace(/\s+/g, "");
  if (!/^TR\d{8}[0-9A-Z]{16}$/i.test(s) || s[9] !== "0") return false;
  let rest = 0;
  for (const ch of s.slice(4) + s.slice(0, 4)) {  // TR and the check digits go to the end
    const v = parseInt(ch, 36);                    // digits stay, A=10 ... Z=35
    rest = (rest * (v > 9 ? 100 : 10) + v) % 97;
  }
  const check = Number(s.slice(2, 4));
  return rest === 1 && check >= 2 && check <= 98;
}

console.log(trIbanIsWellFormed("TR47 0000 1001 0000 0350 9300 01")); // true: TCMB's published example
console.log(trIbanIsWellFormed("TR47 0000 1001 0000 0350 9300 02")); // false: last digit changed
```

## What a pass does not tell you

A well-formed IBAN can belong to someone other than the person you mean to pay, and a pass does not show that the account is open.

- **Changed payment details:** if an email or message asks you to pay a new IBAN, confirm it through a phone number or contact you already had, not one given in that message. A format check cannot detect this kind of fraud.
- **Account holder:** only the bank or payment institution can confirm who holds the account.
- **Institution name:** the checker shows the five-digit code but not the name behind it, since TCMB's communiqué page publishes no list of codes.

Opening an account, and what a Turkish bank asks for, is covered in [bank account in Turkey for foreigners](https://fincodelabs.com/en/blog/bank-account-in-turkey-for-foreigners). Fincode builds fintech apps from a written scope; if yours handles IBANs for payouts or invoices, see [Fincode's fintech app development](https://fincodelabs.com/en/services/fintech-app-development).

## Which values to enter

- **IBAN:** paste it with or without spaces. Lowercase letters are read as capitals with a note, and any character other than A to Z and 0 to 9 is reported.

The result lists the length, whether the check digits match, the code, the reserved digit, the account field and the IBAN in groups of four, as it is printed. A failed check never says what the check digits should be.

## Frequently asked questions

### How many digits is a Turkish IBAN?

26 characters: the letters TR and 24 more. The first 8 of those are always digits: two check digits, a five-digit code and a reserved 0. The last 16 are the account number.

### What is an example of a Turkish IBAN?

TCMB's own published example is TR47 0000 1001 0000 0350 9300 01: TR, check digits 47, code 00001, reserved digit 0 and account field 0100000350930001.

### How do I find the bank from a Turkish IBAN?

Characters 5 to 9 are the code TCMB assigns to the bank or other payment institution. The checker shows the code; ask the account holder or your bank to confirm which institution it belongs to.

### Does a valid IBAN mean the account exists?

No. A pass means the IBAN is well formed: its length, structure and check digits are right. Only the bank can confirm that the account is open and who holds it.

### Is it safe to check an IBAN here?

The check runs in your browser and makes no request, so the IBAN is not sent or stored. An IBAN still identifies its holder's account, so paste and share it only where you need to.

## Sources

- [Resmî Gazete: TCMB Communiqué No. 2008/6 on the International Bank Account Number, 10 October 2008, No. 27020 (Turkish)](https://www.resmigazete.gov.tr/eskiler/2008/10/20081010-8.htm)
- [Resmî Gazete: TCMB Communiqué No. 2021/5 amending No. 2008/6, 5 August 2021, No. 31559 (Turkish)](https://www.resmigazete.gov.tr/eskiler/2021/08/20210805-17.htm)
- [TCMB: Communiqué on the International Bank Account Number, English text with the worked example](https://www.tcmb.gov.tr/wps/wcm/connect/EN/TCMB+EN/Bottom+Menu/IBAN/Communique)

> This calculator is general information, not tax, legal or investment advice. Results depend on the values you enter; rates, ceilings and amounts in Turkey change often, so check the date of each figure and the official source, and ask a licensed adviser about your own situation. Sources, checks and corrections: see the [editorial policy](https://fincodelabs.com/en/editorial-policy).

---

Published by Fincode (Fincode Yazılım ve Teknoloji A.Ş.), a software company in Istanbul, Turkey: https://fincodelabs.com/en/tools/turkey-iban-checker

Cite as: Fincode, "Turkey IBAN format checker: length, check digits, bank code", updated October 15, 2026, https://fincodelabs.com/en/tools/turkey-iban-checker
