NIP
NIP (Numer Identyfikacji Podatkowej) is Poland’s 10-digit tax identification number, used by both individuals and legal entities.
import { Numerik } from '@slashlab/numerik-js'
// BooleanNumerik.nip().isValid('5260250274') // true
// Rich resultconst result = Numerik.nip().validate('5260250274')result.isValid // true
// Parse to value objectconst nip = Numerik.nip().parse('5260250274')
// Null on failure instead of exceptionconst maybe = Numerik.nip().tryParse('bad-input') // nullNIP accepts hyphens and spaces as separators in the input:
Numerik.nip().isValid('526-025-02-74') // trueNumerik.nip().isValid('526 025 02 74') // trueValue object API
Section titled “Value object API”parse() and tryParse() return a Nip instance.
| Method | Return type | Description |
|---|---|---|
getRaw() |
string |
The original input, untouched. |
getNormalized() |
string |
10 raw digits (hyphens and spaces removed). |
toString() |
string |
Alias for getNormalized(). |
Formatting & metadata
Section titled “Formatting & metadata”| Method | Return type | Description |
|---|---|---|
getFormatted() |
string |
Canonical NNN-NNN-NN-NN display form. |
getFormattedAlternative() |
string |
Alternative NNN-NN-NN-NNN display form used by some legal entity documents. |
getTaxOfficeCode() |
string |
First 3 digits — indicates the issuing tax office. |
Examples
Section titled “Examples”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'
// With formatted inputconst nip2 = Numerik.nip().parse('526-025-02-74')nip2.getRaw() // '526-025-02-74'nip2.getNormalized() // '5260250274'Failure reasons
Section titled “Failure reasons”| Reason | Value | When |
|---|---|---|
InvalidLength |
invalid_length |
Input is not exactly 10 digits after stripping separators. |
InvalidCharacters |
invalid_characters |
Characters other than digits, hyphens, and spaces are present. |
InvalidFormat |
invalid_format |
First 3 digits are 000 (no valid tax office has code 000). |
InvalidChecksum |
invalid_checksum |
Checksum digit does not match. |
AllSameDigit |
all_same_digit |
All digits are identical — strict mode only. |
Validation algorithm
Section titled “Validation algorithm”Weights: 6, 5, 7, 2, 3, 4, 5, 6, 7
- Strip hyphens and spaces. Assert exactly 10 digits.
- Assert the first 3 digits are not
000. - Multiply each of the first 9 digits by its weight, sum, take
mod 11. The result must equal digit 10; since a single digit can only be 0–9, a modulo result of10can never match and always fails withInvalidChecksum. - In strict mode, reject inputs where all 10 digits are identical; fail with
AllSameDigit.
See Algorithms for the full reference.