IBAN Doğrulama Nasıl Çalışır (Havale Öncesi Hatayı Nasıl Yakalarsınız)
IBAN doğrulama, hesap numarasının içine gömülü iki kontrol basamağını kullanan matematiksel bir işlemdir: tüm dizi belirli bir kurala göre yeniden düzenlenir, harfler sayıya çevrilir ve sonuç 97’ye bölünür. Kalan tam olarak 1 çıkmıyorsa IBAN geçersizdir, muhtemelen bir rakam yanlış yazılmış ya da yer değiştirmiştir. Bu kontrol saniyenin altında çalışır ve parayı göndermeden önce yazım hatalarının büyük kısmını yakalar.
Bir IBAN’ın içinde gerçekte ne var
Bir IBAN üç parçadan oluşur ve hepsi tek bir dizide art arda gelir:
- 2 harfli ülke kodu (ISO 3166 standardına göre, örneğin DE Almanya, FR Fransa, TR Türkiye)
- 2 kontrol basamağı (MOD-97 sağlamasının sonucu, bu yazının konusu)
- BBAN (Temel Banka Hesap Numarası): banka kodu ve hesap numarasının kendisi. Bu kısmın uzunluğu ve iç yapısı ülkeden ülkeye tamamen değişir, bir ülkede şube kodu ayrı tutulurken başka birinde banka koduyla birleşik olabilir.
IBAN’ı BIC/SWIFT koduyla karıştırmayın, ikisi farklı şeyleri tanımlar. BIC bankanın kendisini ve genellikle şubesini tanımlar (bir tür posta kodu gibi düşünün, ama banka için). IBAN ise o bankadaki belirli hesabı tanımlar. Uluslararası bir havalede çoğu zaman ikisi birden istenir çünkü para önce doğru bankaya, sonra o bankadaki doğru hesaba yönlendirilmelidir.
BBAN kısmının uzunluğu ülkeden ülkeye neden bu kadar değişiyor diye merak edebilirsiniz. Cevap basit: IBAN standardı, ülkelerin zaten kullandığı ulusal hesap numarası formatını sıfırdan değiştirmedi, sadece onu tanınabilir bir zarfa koydu. Almanya’da BBAN 8 basamaklı banka kodu (Bankleitzahl) ve 10 basamaklı hesap numarasından oluşur, toplam 18 karakter. Fransa’da banka kodu, şube kodu, hesap numarası ve ayrı bir kontrol basamağı olmak üzere dört parçaya bölünür. Türkiye’de ise 5 haneli banka kodu, 1 haneli rezerv alanı ve 16 haneli hesap numarasından oluşan 22 karakterlik bir BBAN vardır. Format farklı olsa da her ülkenin kendi BBAN’ı, o ülkenin bankacılık sisteminde zaten var olan hesap numarasıyla bire bir örtüşür, IBAN bunun üzerine sadece ülke kodu ve kontrol basamaklarını ekler.
Şunu da net koyalım: geçerli bir MOD-97 sağlaması, hesabın gerçekten var olduğunun veya yazdığınız isimdeki kişiye ait olduğunun kanıtı değildir. Sağlama yalnızca dizinin matematiksel olarak doğru biçimlendirildiğini gösterir, yani rastgele klavye tıklamasıyla oluşmuş bir sayı olmadığını. Hesabın gerçekten açık olup olmadığını, kapanmış olup olmadığını veya alıcı adıyla eşleşip eşleşmediğini yalnızca alıcı bankanın sistemi doğrulayabilir, bu bilgi IBAN’ın içinde yoktur. Bazı bankalar havale ekranında alıcı adını da isteyip arka planda ayrı bir eşleştirme kontrolü yapar, ama bu MOD-97 sağlamasından tamamen bağımsız, bankanın kendi iç sürecidir.
MOD-97 sağlaması adım adım
Somut bir örnek üzerinden gidelim. Dünya çapında IBAN belgelerinde kanonik örnek olarak kullanılan gerçek bir Alman IBAN yapısı bu:
DE89 3704 0044 0532 0130 00
1. Adım: Yeniden düzenleme. Önce boşlukları kaldırın, sonra ilk 4 karakteri (ülke kodu + kontrol basamakları) dizinin sonuna taşıyın.
| Orijinal | DE89370400440532013000 |
| İlk 4 karakter | DE89 |
| Kalan kısım | 370400440532013000 |
| Yeniden düzenlenmiş | 370400440532013000 + DE89 = 370400440532013000DE89 |
2. Adım: Harfleri sayıya çevirme. Her harf, A=10’dan başlayan bir tabloya göre iki basamaklı bir sayıya dönüşür (A=10, B=11, C=12… Z=35). Bizim örneğimizde sadece D ve E var: D=13, E=14. Yeniden düzenlenmiş dizinin sonundaki DE89 kısmı böylece 131489 olur, dizinin geri kalanı zaten sayısal olduğu için değişmeden kalır.
Sonuç, 24 basamaklı tek bir büyük sayı:
370400440532013000131489
3. Adım: 97’ye bölüp kalanı bulma. Bu 24 basamaklı sayı 97’ye bölünür ve kalan hesaplanır. Sayı çok büyük olduğu için elle bölmek yerine basamak basamak ilerlemek pratiktir: soldan başlayarak her adımda kalan = (önceki kalan × 10 + yeni basamak) mod 97 işlemi tekrarlanır. Bu örnek için sonuç nettir:
| Sayı | 97’ye bölümünden kalan |
|---|---|
370400440532013000131489 | 1 |
ISO 13616 standardı, bir IBAN’ın geçerli sayılması için bu kalanın tam olarak 1 olmasını şart koşar. Kalan 1 çıktığı için DE89 3704 0044 0532 0130 00 geçerli bir IBAN’dır.
Şimdi tek bir rakamı yanlış yazdığınızda ne olduğuna bakalım. IBAN’ın en sonundaki 00 yerine 01 yazıldığını varsayalım:
DE89 3704 0044 0532 0130 01
Aynı üç adım tekrarlanır: yeniden düzenleme, harf dönüşümü, 97’ye bölüm. Sonuçta ortaya çıkan 24 basamaklı sayı bu kez 370400440532013001131489 olur ve bu sayının 97’ye bölümünden kalan 1 değil, 28 çıkar. Sağlama başarısız olur ve araç bu IBAN’ı anında geçersiz olarak işaretler, kart numarasında olduğu gibi bankaya hiç ulaşmadan.
Bu, tek bir yanlış girilen basamağın neredeyse her zaman yakalandığı anlamına gelir. Kalan hesabı, her basamağın nihai sonuca farklı ağırlıkta katkı yaptığı bir zincir olduğu için, ortadaki bir rakamı değiştirmek de son rakamı değiştirmek kadar sonucu bozar. Bu yüzden IBAN’lar, çıplak hesap numaralarından çok daha güvenilir bir ilk savunma hattı sunar.
Pratikte bu kontrolün değeri şurada ortaya çıkıyor: banka çalışanı ya da havale ekranı, sağlamayı hesaplamak için hiçbir dış veriye ihtiyaç duymaz, sadece yazdığınız 22 (ya da 26, ya da 27) karakterin kendisine bakar. Bu yüzden kontrol anlık, çevrimdışı ve ücretsizdir; sonucu görmek için bankaya bağlanmayı, alıcı hesabını sorgulamayı ya da bir işlem başlatmayı beklemenize gerek yoktur.
Kendi IBAN’ınızı kontrol edin
Havale yapmadan önce yapıştırıp anında sonuç görmek için aşağıdaki aracı kullanabilirsiniz, hesaplama tamamen tarayıcınızda yapılır.
Sık yapılan hatalar
“2 harfle başlayan her uzun dizi bir IBAN’dır” varsayımı. Değildir. Her ülkenin sabit, tek bir IBAN uzunluğu vardır ve bu uzunluk ülkeden ülkeye değişir: Almanya her zaman 22 karakter, Fransa 27, Türkiye 26, Norveç ise listenin en kısası, sadece 15 karakter. Bir IBAN doğrulayıcı önce ülke koduna bakıp beklenen uzunlukla eşleşip eşleşmediğini kontrol eder; eşleşmiyorsa sağlamayı hesaplamaya bile gerek kalmadan geçersiz sayılır.
| Ülke | Kod | IBAN uzunluğu |
|---|---|---|
| Norveç | NO | 15 |
| Almanya | DE | 22 |
| Türkiye | TR | 26 |
| Fransa | FR | 27 |
IBAN’ı BIC/SWIFT koduyla karıştırmak. Yukarıda değindiğimiz gibi bunlar farklı bilgilerdir, biri bankayı, diğeri hesabı tanımlar. Uluslararası bir formda ikisinin de istenmesi normaldir, biri diğerinin yerine geçmez.
Geçerli sağlamayı hesabın gerçek olduğuyla karıştırmak. Sağlama geçtiğinde elinizdeki şey, matematiksel olarak doğru biçimlendirilmiş bir sayıdır, o kadar. Hesabın açık olduğu, kapanmadığı veya alıcı isminin doğru olduğu bu kontrolden çıkmaz, bunu yalnızca alıcı bankanın sistemi teyit edebilir.
Elle kopyalarken karakterleri karıştırmak. O harfi ile 0 rakamını, büyük I / küçük l ile 1 rakamını ayırt etmek özellikle ekran görüntüsünden veya el yazısından kopyalarken zordur. Birçok ülkenin BBAN kısmında harfler de geçerli olduğu için bu her zaman bir hata anlamına gelmez, ama pratikte en sık karışıklık yaratan noktalardan biri budur, bu yüzden kopyala-yapıştır her zaman elle yazmaya tercih edilmelidir.
Boşlukları ya da tireleri farklı yorumlamak. IBAN’lar genellikle dört karakterlik gruplar halinde gösterilir (DE89 3704 0044 0532 0130 00 gibi), ama bu boşluklar sadece okunabilirlik içindir, dizinin bir parçası değildir. Bir form boşluksuz giriş beklerken kullanıcı boşlukları elle silmeyi unutursa bazı sistemler bunu otomatik temizler, bazıları temizlemez ve gereksiz yere hata verir. Kaliteli bir doğrulayıcı, boşlukları ya da küçük harfleri sağlamayı hesaplamadan önce kendisi normalize etmelidir, kullanıcıyı bu ayrıntıyla uğraştırmamalıdır.
Sıkça sorulan sorular
MOD-97 tam olarak nedir? MOD-97, bir sayının 97’ye bölümünden kalan anlamına gelir. IBAN standardı bu belirli sayıyı seçmiştir çünkü 97 asal bir sayıdır ve tek basamak hatalarını, iki basamağın yer değiştirmesini ve çoğu çift basamak hatasını güvenilir şekilde yakalayan matematiksel özelliklere sahiptir.
Geçen bir sağlama, hesabın gerçek olduğu anlamına mı gelir? Hayır. Sağlama yalnızca dizinin doğru formatta olduğunu doğrular, hesabın var olduğunu, açık olduğunu veya belirttiğiniz kişiye ait olduğunu değil. Bu bilgi bankalar arası ödeme ağının kendisinde saklıdır ve yalnızca transfer işlendiğinde ortaya çıkar.
Ülkelerin IBAN uzunlukları neden farklı? Her ülke IBAN standardını kendi mevcut ulusal banka hesap numarası formatının üzerine inşa etmiştir. Norveç’in tarihsel hesap numaraları kısa olduğu için IBAN’ı da kısa kalmıştır, Fransa’nın sistemi daha fazla alan ayırdığı için daha uzundur. IBAN, var olan ulusal formatları değiştirmek yerine onları uluslararası bir zarfa yerleştirir.
Bu kontrol gerçekten her yazım hatasını yakalar mı? Neredeyse hepsini, ama teorik olarak tam olarak hepsini değil. Sağlamanın matematiği, tek bir rakamın yanlış yazılması veya iki komşu rakamın yer değiştirmesi gibi en yaygın hata türlerini garanti olarak yakalar. Ama son derece nadir bir durumda, birden fazla basamağın belirli bir kombinasyonda değişmesi, tesadüfen kalanı yine 1 bırakabilir ve sistematik hata sağlamadan geçebilir. Gerçek dünyada bu neredeyse hiç görülmez çünkü tipik yazım hataları (tek rakam, komşu rakam yer değişimi) tam olarak bu sağlamanın en güçlü olduğu hata türleridir.