Przejdź do głównej zawartości

NIP

NIP (Numer Identyfikacji Podatkowej) to 10-cyfrowy numer identyfikacji podatkowej w Polsce, używany zarówno przez osoby fizyczne, jak i prawne.

import { Numerik } from '@slashlab/numerik-js'
// Szybkie sprawdzenie
Numerik.nip().isValid('5260250274') // true
// Pełny obiekt z danymi
const result = Numerik.nip().validate('5260250274')
result.isValid // true
// Parsowanie do obiektu z danymi
const nip = Numerik.nip().parse('5260250274')
// Null zamiast wyjątku w przypadku błędu
const maybe = Numerik.nip().tryParse('bad-input') // null

NIP akceptuje myślniki i spacje jako separatory w danych wejściowych:

Numerik.nip().isValid('526-025-02-74') // true
Numerik.nip().isValid('526 025 02 74') // true

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

MetodaTyp zwracanyOpis
getRaw()stringOryginalne dane wejściowe, bez zmian.
getNormalized()stringSame cyfry po usunięciu myślników i spacji.
toString()stringAlias dla getNormalized().
MetodaTyp zwracanyOpis
getFormatted()stringKanoniczna postać wyświetlania NNN-NNN-NN-NN.
getFormattedAlternative()stringAlternatywna postać NNN-NN-NN-NNN używana w niektórych dokumentach prawnych.
getTaxOfficeCode()stringPierwsze 3 cyfry — wskazuje wystawiający urząd skarbowy.
const nip = Numerik.nip().parse('5260250274')
nip.getRaw() // '5260250274'
nip.getNormalized() // '5260250274'
nip.getFormatted() // '526-025-02-74'
nip.getFormattedAlternative() // '526-02-50-274'
nip.getTaxOfficeCode() // '526'
// Z sformatowanymi danymi wejściowymi
const nip2 = Numerik.nip().parse('526-025-02-74')
nip2.getRaw() // '526-025-02-74'
nip2.getNormalized() // '5260250274'
PowódWartośćWarunek
InvalidLengthinvalid_lengthDane wejściowe nie mają dokładnie 10 cyfr po usunięciu separatorów.
InvalidCharactersinvalid_charactersObecne są znaki inne niż cyfry, myślniki i spacje.
InvalidFormatinvalid_formatPierwsze 3 cyfry to 000 (żaden urząd skarbowy nie ma kodu 000).
InvalidChecksuminvalid_checksumCyfra kontrolna nie zgadza się.
AllSameDigitall_same_digitWszystkie cyfry są identyczne — tylko tryb ścisły.

Wagi: 6, 5, 7, 2, 3, 4, 5, 6, 7

  1. Usuń myślniki i spacje. Sprawdź, czy pozostało dokładnie 10 cyfr.
  2. Sprawdź, czy pierwsze 3 cyfry to nie 000.
  3. Pomnóż każdą z pierwszych 9 cyfr przez odpowiednią wagę, zsumuj, oblicz mod 11. Wynik musi być równy cyfrze 10; ponieważ jedna cyfra może przyjmować tylko wartości 0–9, wynik modulo równy 10 nigdy nie pasuje i zawsze kończy się błędem InvalidChecksum.
  4. W trybie ścisłym odrzuć dane wejściowe, w których wszystkie 10 cyfr jest identycznych; błąd AllSameDigit.

Pełna dokumentacja w sekcji Algorytmy.