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:
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:
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
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).
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).
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: Teksty i publikacje: NRB - poprawność numeru konta
Ostatnia modyfikacja: 2006/8/12, 16:31
Sprawdź poprawność numeru konta w standardzie NRB
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.
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:
gdzie:
i - numer wagi, W[i] - wartość i-tej wagi.
Ciąg 30 wag przedstawia tabela:
Aby sprawdzić poprawność numeru konta w systemie NRB postępujemy według schematu:
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:
| i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| W[i] | 1 | 10 | 3 | 30 | 9 | 90 | 27 | 76 | 81 | 34 | 49 | 5 | 50 | 15 | 53 |
| i | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 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.
<?
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.