Polecane:


Wygeneruj sobie polecenie przelewu lub wpłaty


Istnieją dwa standardy zapisu numeru rachunku bankowego: NRB oraz IBAN.

W obrocie krajowym stosowany jeststandard NRB, będący ciągiem 26 cyfr, w tym:
  • 2 cyfry stanowią liczbę kotrolną wyliczaną według algorytmu MOD97-10 zgodnie z normą PN-ISO 13616,
  • 8 cyfr stanowi numer rozliczeniowy jednostki organizacyjnej banku,
  • 16 cyfr stanowi numer porządkowy rachunku w banku (nadawany według niezależnych procedur banku; w przypadku, gdy bank nadaje numery krótsze niż 16 znaków stosuje się dopełnienie znakami 0 dostawianymi z przodu).
W przyjmowanych i przyjmowanych przez banki dokumentach papierowycch stosuję się konwencję zapisu:
XX XXXX XXXX XXXX XXXX XXXX XXXX
czyli w 6 grupach po 4 cyfry poprzedzone 2 cyframi kontrolnymi.


W obrocie transgranicznym stosowanym standardem jest IBAN, który w polskim standardzie ma 28 znaków w tym:
  • dwa znaki będące symbolem kraju wg normy PN-ISO 3166,
  • 2 cyfry stanowią liczbę kotrolną wyliczaną według algorytmu MOD97-10 zgodnie z normą PN-ISO 13616,
  • 8 cyfr stanowi numer rozliczeniowy jednostki organizacyjnej banku,
  • 16 cyfr stanowi numer porządkowy rachunku w banku (nadawany według niezależn ych procedur banku; w przypadku, gdy bank nadaje numery krótsze niż 16 znaków stosuje się dopełnienie znakami 0 dostawianymi z przodu).
W dokumentacji papierowej IBANprzyjmuje postać zapisu:
IBAN PLXX XXXX XXXX XXXX XXXX
 XXXX XXXX
czyli 8 grup po 4 znaki.

Zobacz także:
Generator formularza Polecenie zapłaty/Wpłata gotówkowa

NRB - poprawność numeru konta

Andrzej Szewczyk: NRB - poprawność numeru konta
Ostatnia modyfikacja: 2006/8/12, 16:31

Sprawdź poprawność numeru konta w standardzie NRB
Numer konta:

Pierwsze dwie cyfry numeru NRB to tzw. liczba kontrolna, dzięki której możemy sprawdzić czy numer konta jest poprawny. Badanie poprawności możemy wykonać na dwa sposoby.

Wersja 1

w celu zbadania poprawności liczby kontrolnej (pierwszych dwóch cyfr numeru NRB) należy:
  • do numeru konta dopisać z prawej strony ciąg 2521, który odpowiada kodowi literowemu PL (P - 25, L - 21),
  • liczbę kontrolną (pierwsze dwie cyfry numeru NRB) należy przenieść na koniec (z lewej strony na prawą),
  • uzyskany ciąg liczb podzielić modulo 97. Jeżeli reszta z dzielenia wynosi 1, to numer NRB jest poprawny.


Wersja 2


W implementacji znacznie prostsza jest metoda tzw. wielomianowa. W tej metodzie niezbędny jest ciąg 30 wag w systemie MOD97-10, które wyliczane są według wzoru:

W[i] = 10(i-1) mod 97,
gdzie:
i - numer wagi, W[i] - wartość i-tej wagi.

Ciąg 30 wag przedstawia tabela:


i123456789101112131415
W[i] 1 10 3 30 9 90 27 76 81 34 49 5 50 15 53
i161718192021222324252627282930
W[i] 45 62 38 89 17 73 51 25 56 75 71 31 19 93 57


Aby sprawdzić poprawność numeru konta w systemie NRB postępujemy według schematu:
  • do numeru konta dopisać z prawej strony ciąg 2521, który odpowiada kodowi literowemu PL (P - 25, L - 21),
  • liczbę kontrolną (pierwsze dwie cyfry numeru NRB) należy przenieść na koniec (z lewej strony na prawą),
  • dla tak uzyskanego ciągu znaków obliczamy iloczyny cząstkowe - mnożąc kolejne cyfry numeru z kolejnymi wagami, przy czym numery czytamy od prawej do lewej,
  • sumujemy uzyskane iloczyny cząstkowe i dzielimy wynik modulo 97,
  • Jeżeli wynik jest równy 1 to numer jest poprawny.
Poniższa funkcja w języku PHP sprawdza poprawność numeru konta w standardzie NRB:

<?
function checkNRB($nrb) {
  if (strlen($nrb)!=26)
   return 0;
  $W = array(1,10,3,30,9,90,27,76,81,34,49,5,50,15,53,45,62,38,89,17,
                   73,51,25,56,75,71,31,19,93,57);

  $nrb .= "2521";
  $nrb = substr($nrb,2).substr($nrb,0,2);
  $Z =0;
  for ($i=0;$i<30;$i++)
    $Z += $nrb[29-$i] * $W[$i];
  if ($Z % 97 == 1)
    return 1;
  else
    return 0;
}
?>
Zatem funkcja:

int checkNRB(string $nrb)
zwraca 1 jeżeli nr NRB jest poprawny, w przeciwnym wypadku 0.