Menü

Vergi numarası doğrulama: hangi kontroller gerçekten işe yarar?

Vergi numarası doğrulamanın hangi katmanlardan oluştuğunu, biçim kontrolünün neden tek başına yetmediğini ve doğrulama hatasının nasıl yorumlanması gerektiğini anlatıyoruz.

Yayın tarihi

  • vergi numarası
  • doğrulama
  • form

Vergi numarası doğrulama, bir formda girilen numaranın kabul edilebilir olup olmadığını anlamak için yapılan kontrollerin bütünüdür. Bu yazıda bu kontrollerin hangi katmanlara ayrıldığını, biçim kontrolünün neden tek başına hiçbir şeyi kanıtlamadığını ve doğrulama hatasının kullanıcıya nasıl doğru anlatılacağını bulacaksınız.

Vergi numarası nedir ve neyi göstermez?

Vergi numarası, bir kişinin veya işletmenin vergi dairesi nezdinde tanımlandığı numaradır. Ülkeler bu numarayı farklı adlarla anar ve farklı düzenlerle verir; kimi ülkelerde numara yalnızca rakamlardan oluşur, kimilerinde harf de taşır.

Numaranın gösterdiği tek şey, bir vergi dairesi kaydının varlığıdır. Buna karşılık numara şunları göstermez: işletmenin büyüklüğünü, ödeme gücünü, faaliyet iznini veya kaydın hâlâ geçerli olup olmadığını. Bir numaranın biçimsel olarak doğru olması, yalnızca yazımının beklenen kalıba uyduğu anlamına gelir.

Bu ayrımı baştan kurmak önemlidir; çünkü form tasarımındaki en yaygın hata, biçimsel doğruluğu gerçekliğin kanıtı gibi sunmaktır. Kullanıcı “numaranız doğrulandı” mesajını gördüğünde, sistemin gerçekte ne yaptığını bilmelidir: o mesaj çoğu durumda yalnızca “yazım beklenen kalıba uyuyor” demektir.

Bazı numaralar neden matematikle sınanabilir?

Bazı ülkelerin vergi numaraları, numaranın içine yerleştirilmiş bir kontrol basamağı taşır. Bu basamak, numaranın diğer basamaklarından belirli bir hesapla türetilir. Böyle bir numarada tek bir rakam yanlış yazılırsa, hesaplanan kontrol basamağı numaradakiyle tutmaz ve hata numara sisteme gitmeden yakalanır.

Bazı ülkelerin numaralarında ise böyle bir kontrol basamağı yoktur; numara yalnızca vergi dairesinin tahsis ettiği bir değerdir. Bu durumda hiçbir hesaplama, numaranın doğru yazıldığını veya gerçekten var olduğunu gösteremez. Yapılabilecek en fazla şey, alanın boş olup olmadığını ve beklenen karakter kümesine uyup uymadığını kontrol etmektir.

Hangi ülkenin hangi düzene sahip olduğu ise yalnızca ilgili kurumun kendi açıklamasından öğrenilir. Genel bir kural yoktur; aynı ülke içinde farklı mükellef türleri için farklı düzenler uygulanabilir. Bu yüzden bir ülke için yazılmış kontrolü başka bir ülkeye taşımak, çoğu zaman yanlış sonuç verir. Kontrolün ülkeye bağlı olduğunu baştan kabul etmek, sonradan yapılacak düzeltmelerin sayısını azaltır.

Ayrıca her düzenin kendi veriliş biçimi vardır: kimisinde numara boşlukla gruplanır, kimisinde ayraç kullanılır, kimisinde ise hiçbir ayraç yoktur. Bu yüzden doğrulamadan önce numaranın normalleştirilmesi gerekir; ayraçlar kaldırılmadan yapılan bir uzunluk kontrolü, doğru yazılmış bir numarayı geçersiz sayar.

Biçim kontrolü geçen numara gerçek midir?

Hayır, değildir. Bu, doğrulama konusundaki en kritik yanılgıdır. Biçim kurallarına uyan ama hiç tahsis edilmemiş bir numara pekâlâ yazılabilir; kontrol basamağı tutan bir numara da hiçbir kayda karşılık gelmeyebilir.

Bu yüzden doğrulama tek katmanlı bir iş değildir. Sağlıklı bir akış üç ayrı soru sorar. Birincisi: numara beklenen yapıya uyuyor mu? İkincisi: numaranın kendi içinde tutarlılık kontrolü var mı ve bu kontrol geçiyor mu? Üçüncüsü: numara ilgili kurumun kaydında gerçekten bulunuyor mu?

İlk iki soru yerel olarak cevaplanabilir; hızlıdır ve kullanıcıyı anında uyarır. Üçüncü soru ise yerel olarak cevaplanamaz; çünkü gerekli bilgi yalnızca yetkili kurumun kaydındadır. Bu üç soruyu tek bir hata mesajında birleştirmek, kullanıcıya “numaranız yanlış” demekle “böyle bir kayıt bulamadık” demeyi aynı şeye indirger. İkisi farklı durumlardır ve farklı davranış gerektirir.

Gerçek bir numaranın deneme verisine kopyalanması da bu yüzden sakıncalıdır: kopyalanan numara testin kendisini yanıltır, çünkü kaydın kurgu mu kopya mı olduğu zamanla belirsizleşir. Sınırların ayrıntısı için sanal şirket verisinin sınırları yazısına bakabilirsiniz.

Doğrulama hatası kullanıcıya nasıl anlatılmalı?

Doğrulama hatasının metni, kullanıcının ne yapacağını belirler. Bu yüzden hata mesajları birbirinden ayrılmalıdır:

  • Boş bırakılan alan için “bu alan gerekli” denir.
  • Karakter kümesi uymadığında “yalnızca rakam ve harf kullanılabilir” denir.
  • Kontrol basamağı tutmadığında “numarada bir yazım hatası var gibi görünüyor” denir.
  • Kayıt bulunamadığında ise “bu numara için kayıt bulunamadı” denir.

Bu dört mesajın ortak özelliği, ne yapılacağını söylemesidir. Buna karşılık “geçersiz numara” gibi tek bir genel mesaj, kullanıcıyı deneme yanılmaya bırakır ve zamanla formun güvenilirliğini zedeler.

İkinci kural, hataların sırasıdır. Alanlar aynı anda doğrulandığında kullanıcı birden fazla hata görür ve hangisini önce düzelteceğini bilemez. Doğrulamayı alan alan ve tercihen kullanıcı alandan çıktığında çalıştırmak, hem hata sayısını azaltır hem de hatanın yerini netleştirir.

Üçüncü kural, sorgu sayısının sınırlanmasıdır. Bir formun her denemede dış sorgu yapması, hem hizmetin kendi kullanım kurallarını zorlar hem de kullanıcıya gereksiz bekleme yaşatır. Aynı numaranın kısa süre içinde tekrar sorgulanmasını engellemek ve sorguyu yalnızca kullanıcı açıkça istediğinde çalıştırmak yeterlidir.

Dördüncü kural, kayıt sorgusunun sonucunun doğru yorumlanmasıdır. Sorgu yanıt vermediğinde bu “kayıt yok” anlamına gelmez; ortada bir cevap yoktur. Bu iki durumu aynı mesajda birleştirmek, teknik bir arızayı kullanıcının hatası gibi gösterir ve gereksiz veri girişine yol açar.

Geliştiriciler için: katmanlama, hata modeli ve kayıt izi

Doğrulamayı tasarlarken ilk karar, katmanların ayrılmasıdır. Birinci katman şekil kontrolüdür: alan boş mu, karakter kümesi kabul edilebilir mi, uzunluk makul aralıkta mı. Bu katman ülke bilgisi gerektirmez ve her durumda çalışır. İkinci katman, ülke bilinen bir düzene sahipse uygulanan ek kontroldür. Üçüncü katman ise dış sorgudur ve yalnızca gerektiğinde, kullanıcı açıkça istediğinde çalıştırılır.

İkinci karar, hata modelinin nasıl kurulacağıdır. Her katman kendi hata türünü üretmeli ve bu tür arayüze kadar taşınmalıdır. Tek bir “doğrulama başarısız” durumu döndüren bir yapı, arayüzün doğru mesajı üretmesini imkânsız kılar. Hata türleri en az şu dört durumu ayırmalıdır: eksik değer, şekil uyuşmazlığı, kendi içinde tutarsızlık ve kayıt bulunamadı. Buna beşinci olarak “sorgu yapılamadı” durumu eklenmelidir.

Üçüncü karar, doğrulamanın ne zaman çalışacağıdır. Her tuş vuruşunda dış sorgu tetiklemek hem yavaş hem gereksizdir. Şekil kontrolü yazım sırasında çalışabilir; dış sorgu ise yalnızca kullanıcı alanı tamamladığında veya açıkça istediğinde yapılmalıdır. Sorgu için tanımlı bir zaman aşımı konmalı ve zaman aşımı durumu ayrı ele alınmalıdır.

Dördüncü karar, saklama biçimidir. Numara, gösterim biçimiyle değil normalleştirilmiş hâliyle saklanmalıdır: boşluklar ve ayraçlar kaldırılır, harfler tek biçime çevrilir. Aksi hâlde aynı numara iki farklı kayıt gibi görünür ve tekrar kontrolü yanlış sonuç verir. Numaranın yanında, doğrulamanın hangi katmanda geçtiği ve sorgunun ne zaman yapıldığı da saklanmalıdır; bu bilgi olmadan sonradan “bu kayıt doğrulanmış mıydı” sorusu cevaplanamaz.

Beşinci karar, kayıt izidir. Bir numaranın değiştirilmesi veya doğrulama durumunun değişmesi, kim tarafından ve ne zaman yapıldığı bilgisiyle saklanmalıdır. Bu iz, hem denetim hem de hata ayıklama için gereklidir. İz tutulurken numaranın tamamını loglara yazmak yerine, kimliği tanımaya yetecek kadarı bırakılmalı ve geri kalanı maskelenmelidir.

Son olarak, doğrulamanın sınırını arayüzde açıkça söyleyin. Biçim kontrolünden geçen bir numara için “geçerli” değil “biçimi uygun” ifadesini kullanmak, kullanıcının sistemden beklediği şeyi doğru kurar. Bu alanları kendi kümenizde denemek için test şirket verisi üreticisinde ülke seçip kayıt üretebilirsiniz.

Sonraki adımlar

İlk adım, formunuzda kaç farklı hata durumunun gerçekten ayırt edildiğine bakmaktır; tek bir genel hata mesajı varsa katmanları ayırın. İkinci adım, dış sorgu yanıt vermediğinde formun ne yaptığını denemektir; bu senaryo neredeyse hiç yazılmaz ama en sık yaşanan durumdur.

Numaranın yanındaki alanların doğrulanması için ülkeye göre vergi numarası biçimleri yazısına, doğrulamanın fatura akışındaki karşılığı için fatura formu testi yazısına bakabilirsiniz.

Bu metin yalnızca teknik bilgilendirme amacıyla hazırlanmıştır ve mali ya da hukuki danışmanlık sayılmaz. Vergi numaralarının geçerliliği konusunda bağlayıcı bilgi münhasıran yetkili vergi kurumlarından alınır.

Okumaya devam edin

Test şirket verisi üreticisi hakkında makaleler