Polish Tax Identification Number

NIP

Numer Identyfikacji Podatkowej. Polish tax identification number.

Reference Boundary Browser-checkable specification

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.

Local spec Draft specification Reviewed 2026-07-12
Quick Facts

Entity Summary

Jurisdiction
Poland (PL)
Category
Polish Tax Identification Number
Format
10 numeric digits
Local signal
Tax office prefix, serial body, checksum
Overview

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).

Visualization

Visual Structure Breakdown

office
OOO
serial
SSSSSS
checksum
C

The NIP consists of exactly 10 digits structured as:

[ O O O ] [ S S S S S S ] [ C ]
FieldPositionsDescription
OOO1–3Tax Office Code (identifying the specific tax office branch assigning the number).
SSSSSS4–9Unique taxpayer serial number.
C10Control checksum digit.
Verification Math

Modulo Checksum Details

The NIP checksum utilizes a weighted modulo 11 algorithm.

Multipliers

The first 9 digits are multiplied by corresponding weight constants:

Digit Position123456789
Weight657234567

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.

Test cases

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
Developers

Implementation Guidance

Developer Guidelines

When implementing NIP validation:

  • Filter formatting dashes before calculations. NIP numbers are often displayed with separators: 123-456-78-90 or 123-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.
API Language Code Snippets
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]);
}
FAQ

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.

References

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.