NIP
Numer Identyfikacji Podatkowej. Polish tax identification number.
Use this page for field meaning, local checksum math, examples, and integration notes. Official identity, registry, account, or tax status still belongs to the owning system.
Entity Summary
- Jurisdiction
- Poland (PL)
- Category
- Polish Tax Identification Number
- Format
- 10 numeric digits
- Local signal
- Tax office prefix, serial body, checksum
What is NIP?
NIP (Numer Identyfikacji Podatkowej)
The NIP (Polish: Numer Identyfikacji Podatkowej, Tax Identification Number) is a 10-digit code used to identify taxpaying entities in Poland.
Introduced in 1995, it is mandatory for all legal entities, enterprises, self-employed individuals, and registered business partnerships operating in Poland.
Issuing Authority
NIP numbers are assigned and managed by the Head of the National Revenue Administration (Szef Krajowej Administracji Skarbowej) through local tax offices (Urząd Skarbowy).
Visual Structure Breakdown
The NIP consists of exactly 10 digits structured as:
[ O O O ] [ S S S S S S ] [ C ]
| Field | Positions | Description |
|---|---|---|
| OOO | 1–3 | Tax Office Code (identifying the specific tax office branch assigning the number). |
| SSSSSS | 4–9 | Unique taxpayer serial number. |
| C | 10 | Control checksum digit. |
Modulo Checksum Details
The NIP checksum utilizes a weighted modulo 11 algorithm.
Multipliers
The first 9 digits are multiplied by corresponding weight constants:
| Digit Position | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
|---|---|---|---|---|---|---|---|---|---|
| Weight | 6 | 5 | 7 | 2 | 3 | 4 | 5 | 6 | 7 |
Calculation
Sum the multiplication products:
\[S = \sum_{i=1}^{9} (d_i \times w_i)\]
The control checksum digit is computed as:
\[C = S \pmod{11}\]
Note: If \(C = 10\), the NIP is mathematically invalid and cannot be assigned.
Validation Examples
| Sample Input | Description | Status |
|---|---|---|
| 7681682150 | Valid NIP — Standard valid Polish Tax Identification Number (NIP). | ✓ Valid |
| 1234567890 | Invalid Checksum — Fails the weighted modulo 11 checksum verification. | ✗ Invalid |
| 12345 | Too Short — Must be exactly 10 numeric digits. | ✗ Invalid |
Implementation Guidance
Developer Guidelines
When implementing NIP validation:
- Filter formatting dashes before calculations. NIP numbers are often displayed with separators:
123-456-78-90or123-45-67-819. - Confirm digit length is exactly 10.
- Regex:
/^\d{10}$/. - Handle the modulo 11 result: If
sum % 11 === 10, the input is invalid.
function validateNIP(nip) {
if (!/^\d{10}$/.test(nip)) return false;
const weights = [6, 5, 7, 2, 3, 4, 5, 6, 7];
let sum = 0;
for (let i = 0; i < 9; i++) {
sum += parseInt(nip[i]) * weights[i];
}
const remainder = sum % 11;
if (remainder === 10) return false;
return remainder === parseInt(nip[9]);
}
Frequently Asked Questions
What is the difference between PESEL and NIP?
PESEL is the personal registration identifier for individuals (citizens and residents). NIP is specifically a tax identification code. While all businesses must hold a NIP, individuals only need a NIP if they run a business or are registered tax payers not covered by PESEL.
Can a NIP number be changed?
No. NIP is a permanent registration code assigned to a business or individual for their entire lifetime.
Official Registry Sources
References
1. National Revenue Administration (Poland): Central government registry portal for Tax ID tracking. Official lookup.
2. Act of 13 October 1995 on Principles of Taxpayer Registration: Statutory base defining NIP allocation.