Türk IBAN'ı için Mod-97 Doğrulaması
· 5 dk okuma
Türk IBAN'ı 26 karakterden oluşur: TR ülke kodu, iki kontrol hanesi, 5 haneli banka kodu, bir rezerv hane ve 16 haneli hesap numarası. Ödeme dosyaları, müşteri ana verisi ve mutabakat işlerinin hepsi IBAN taşır; tek bir yanlış girilmiş hane reddedilen bir ödemeye ya da başarısız bir eşleşmeye yol açabilir. İki kontrol hanesi sayesinde tek hane hatalarının neredeyse tamamını ve çoğu yer değiştirme hatasını ödeme denenmeden önce yakalayabilirsiniz.
Kontrol nasıl çalışır?
- Boşlukları silin ve büyük harfe çevirin. Türk IBAN'ı bu durumda 26 karakter olmalı, TR ile başlamalı ve sonrasında yalnızca rakam içermelidir.
- İlk dört karakteri (TR ve iki kontrol hanesi) dizinin sonuna taşıyın.
- Her harfi iki haneli sayıyla değiştirin: A = 10, B = 11, ... Z = 35. T harfi 29, R harfi 27 olur.
- Sonucu tek bir büyük tam sayı olarak okuyun. IBAN yalnızca bu sayının mod 97 değeri 1 ise geçerlidir.
Test edilmiş bir uygulama
def is_valid_tr_iban(value: str) -> bool:
iban = value.replace(" ", "").upper()
if len(iban) != 26 or not iban.startswith("TR") or not iban[2:].isdigit():
return False
rearranged = iban[4:] + iban[:4] # move "TR" + check digits to the end
number = int("".join(str(int(ch, 36)) for ch in rearranged)) # A=10 ... Z=35
return number % 97 == 1
is_valid_tr_iban("TR33 0006 1005 1978 6457 8413 26") # True (published sample IBAN)
is_valid_tr_iban("TR33 0006 1005 1978 6457 8413 27") # False (last digit changed)Python tam sayıları sınırsız hassasiyetlidir, bu yüzden büyük sayı orada sorun çıkarmaz. Sabit genişlikli tam sayı kullanan dillerde sayıyı bütün olarak oluşturmak yerine diziyi parçalar hâlinde işleyip kalanı bir sonraki parçaya taşıyın.
Sağlama toplamının ötesindeki kontroller
- Banka kodu: kontrol hanelerinden sonraki 5 hane bankayı belirtir. Bunları gerçekten çalıştığınız bankaların kod listesiyle karşılaştırın.
- Rezerv hane: Türk IBAN'larında bu konumun 0 olması beklenir.
- Tekrarlar: aynı IBAN'ın birbiriyle ilgisiz çok sayıda müşteriye bağlı olması hem veri kalitesi hem de sahtecilik sinyalidir.
- Biçim kayması: aynı kolonda boşluk, küçük harf ve tire karışıklığı tutarsız giriş kanallarına işaret eder.
Ulusal kimlik numaralarında olduğu gibi, geçerli bir sağlama IBAN'ın biçimsel olarak doğru olduğunu gösterir; hesabın var olduğunu ya da belirtilen müşteriye ait olduğunu göstermez.
DQ-Agent, IBAN biçim kontrolünü (TR + 24 hane ve mod-97 testi) on-premise profilleme ve anomali tespiti fazlarında kritik bir geçerlilik anomalisi olarak çalıştırır.