Weryfikacja poprawności numeru konta bankowego

Niniejszy dokument został przygotowany na podstawie Zarządzenia Prezesa Narodowego Banku Polskiego nr 5/2002 z dnia 6 maja 2002 roku w sprawie sposobu numeracji rachunków bankowych prowadzonych w bankach.

Wymienione powyżej zarządzenie zostało opublikowane w Dzienniku Urzędowym Narodowego Banku Polskiego nr 8/2002 z dnia 29 maja 2002r. i zawiera obowiązujący sposób numeracji rachunków bankowych, oraz sposób wyliczania i weryfikacji liczby kontrolnej dla numeru rachunku bankowego (NRB) i międzynarodowego numeru rachunku bankowego (IBAN).

Informacje ogólne

Od dnia 1 lipca 2002r. do identyfikacji rachunków bankowych stosuje się wyłącznie numer rachunku bankowego NRB i międzynarodowy numer rachunku bankowego IBAN.

Budowa NRB i IBAN jest bardzo podobna, w zasadzie różnica polega na tym, że IBAN zawiera dodatkowo dwuliterowe oznaczenie kraju.

Budowa NRB

Numer rachunku bankowego składa się z 26 cyfr, których znaczenie jest następujące:

Budowa IBAN

Międzynarodowy numer rachunku bankowego składa się z 2 znaków i 26 cyfr, których znaczenie jest następujące:

Stosowane oznaczenia

W celu prezentacji sposobu weryfikacji NRB i IBAN przyjąłem następujące oznaczenia ich elementów składowych:

Wobec powyższego NRB i IBAN można przedstawić następująco:

W celu większej przejrzystości zapisu stosuje się często notację ze znakami odstępu:

Weryfikacja NRB

Aby przeprowadzić weryfikację NRB należy go najpierw przekształcić na format IBAN poprzez dodanie z przodu dwuliterowego oznaczenia Polski ("PL").
Po tej operacji przeprowadza się weryfikację tak jak każdego innego numeru IBAN.

Weryfikacja IBAN

Aby przeprowadzić weryfikację IBAN należy go wpierw poddać pewnym przekształceniom:

W wyniku powyższych przekształceń otrzymujemy numer rachunku w postaci:
BBBBBBBBRRRRRRRRRRRRRRRRKKCC

Następnie dwuliterowe oznaczenie kraju zamieniamy na oznaczenie czterocyfrowe zastępując poszczególne litery na odpowiadające im kody ASCII*). Dla oznaczenia Polski ("PL") są to odpowiednio liczby: P=25, L=21. W wniku tej operacji otrzymujemy 30-cyfrową liczbę:
BBBBBBBBRRRRRRRRRRRRRRRR2521CC

*) Kody ASCII nie są stosowanymi powszechnie w informatyce kodami ASCII, gdzie literze A odpowiada cyfra 65, B cyfra 66, itd., a pozycją danej litery w alfabecie łacińskim powiększoną o 9, a więc literze A odpowiada cyfra 10, B cyfra 11, itd.

Tak otrzymany numer możemy zweryfikować na dwa sposoby:

Weryfikacja IBAN metodą uproszczoną

Weryfikacja metodą uproszczoną polega na wyliczeniu reszty z dzielenia r otrzymanej 30-cyfrowej liczby przez 97.

r = BBBBBBBBRRRRRRRRRRRRRRRR2521CC mod 97

Jeżeli reszta równa się 1 to numer IBAN jest poprawny.

Wadą tej metody jest to, że trzeba operować dużymi liczbami całkowitymi, co może okazać się kłopotliwe.

Weryfikacja IBAN metodą wielomianową

Metoda wielomianowa polega w pierwszej kolejności na wyliczeniu sumy iloczynów s poszczególnych cyfr otrzymanej 30-cyfrowej liczby i odpowiadających tym cyfrom wag liczbowych. Wagi liczbowe odpowiadające poszczególnym cyfrom są zestawione w tabeli poniżej.

BBBBBBBB RRRRRRRR RRRRRRRR 2521CC
5793193171755625 5173178938624553 155054934817627 909303101

Następnie obliczamy resztę z dzielenia r wyliczonej sumy s przez 97

r = s mod 97

Jeżeli reszta z dzielenia r równa się 1 to numer IBAN jest poprawny.

Wyliczanie liczby kontrolnej dla NRB i IBAN

Liczbę kontrolną dla numeru NRB i IBAN wyliczamy stosując te same metody obliczeń co w przypadku weryfikacji, jednak z oczywistego powodu, że nie znamy liczby kontrolnej podstawiamy w jej miejsce 00.

30-cyfrowa liczba biorąca udział w wyliczeniu przyjmuje wtedy postać:
BBBBBBBBRRRRRRRRRRRRRRRR252100

Wyliczamy resztę z dzielenia r stosując jedną w wyżej opisanych metod.

Następnie wyliczmy liczbę kontrolną CC ze wzoru:

CC = 98 - r

Jeżeli liczba kontrolna CC jest mniejsza niż 10 to uzupełniamy ją z przodu zerem.