Przejdź do głównej zawartości

NRB

NRB (Numer Rachunku Bankowego) to 26-cyfrowy krajowy numer rachunku bankowego w Polsce, weryfikowany przy użyciu sumy kontrolnej MOD-97 ze standardu IBAN. NRB jest strukturalnie częścią numeryczną polskiego IBAN (tj. IBAN bez prefiksu PL).

import { Numerik } from '@slashlab/numerik-js'
// Szybkie sprawdzenie
Numerik.nrb().isValid('61102010260000000000000000') // true
// Format z odstępami jest akceptowany
Numerik.nrb().isValid('61 1020 1026 0000 0000 0000 0000') // true
// Format z prefiksem IBAN jest też akceptowany
Numerik.nrb().isValid('PL61102010260000000000000000') // true
// Pełny obiekt z danymi
const result = Numerik.nrb().validate('61102010260000000000000000')
result.isValid // true
// Parsowanie do obiektu z danymi
const nrb = Numerik.nrb().parse('61102010260000000000000000')
// Null zamiast wyjątku w przypadku błędu
const maybe = Numerik.nrb().tryParse('bad-input') // null

parse() i tryParse() zwracają instancję Nrb.

MetodaTyp zwracanyOpis
getRaw()stringOryginalne dane wejściowe, bez zmian.
getNormalized()string26 cyfr, bez prefiksu i spacji.
toString()stringAlias dla getNormalized().
MetodaTyp zwracanyOpis
getFormatted()stringCzytelna postać: CC NNNN NNNN NNNN NNNN NNNN NNNN.
getIban()stringPełny polski IBAN: PL + 26 cyfr.
getFormattedIban()stringCzytelny IBAN: PLCC NNNN NNNN NNNN NNNN NNNN NNNN.
MetodaTyp zwracanyOpis
getCheckDigits()stringPierwsze 2 cyfry — cyfry kontrolne MOD-97.
getSortCode()stringCyfry 2–9 (8 cyfr) — kod sortowania banku.
getBankCode()stringCyfry 2–4 (3 cyfry) — identyfikator banku.
getAccountNumber()stringCyfry 10–25 (16 cyfr) — numer rachunku klienta.
const nrb = Numerik.nrb().parse('61102010260000000000000000')
nrb.getRaw() // '61102010260000000000000000'
nrb.getNormalized() // '61102010260000000000000000'
nrb.getFormatted() // '61 1020 1026 0000 0000 0000 0000'
nrb.getIban() // 'PL61102010260000000000000000'
nrb.getFormattedIban() // 'PL61 1020 1026 0000 0000 0000 0000'
nrb.getCheckDigits() // '61'
nrb.getSortCode() // '10201026'
nrb.getBankCode() // '102'
nrb.getAccountNumber() // '0000000000000000'
PowódWartośćWarunek
InvalidLengthinvalid_lengthDane wejściowe nie mają dokładnie 26 cyfr po normalizacji.
InvalidCharactersinvalid_charactersObecne są znaki inne niż cyfry, spacje i opcjonalny prefiks PL.
InvalidChecksuminvalid_checksumSuma kontrolna MOD-97 nie zgadza się.

Używa algorytmu MOD-97 z normy ISO 13616 (standard IBAN):

  1. Odrzuć dane wejściowe dłuższe niż 40 znaków. Usuń spacje i myślniki oraz opcjonalny prefiks PL.
  2. Sprawdź, czy pozostało dokładnie 26 cyfr.
  3. Przestaw: przesuń pierwsze 2 cyfry (cyfry kontrolne) na koniec i wstaw numeryczny kod kraju dla Polski (2521) między pozostałe 24 cyfry a nimi, tworząc 30-cyfrowy ciąg.
  4. Oblicz 30-cyfrowy ciąg modulo 97. Wynik musi wynosić 1.