Skip to content
Simple Tools

Practical guide

How to check a Polish NIP and read the validation result

Checking a NIP copied from a document can catch an entry error, but a passing result is not proof of a business. This guide explains how to enter one number, read each technical check and choose the next step without guessing missing digits.

Simple Tools editorial teamReviewed: 1 October 2026

Enter the number, not the counterparty’s details

Enter one NIP and select “Check”. Spaces and ordinary hyphens are ignored. A PL prefix, letters, periods and non-ASCII lookalike digits are not removed. If your document shows PL before the number, enter only the domestic numeric part in this field.

Do not add a business name, address or invoice number. An empty field or more than 64 characters triggers a form error; other structural failures appear in the result. Keep the original document available for comparison instead of changing data merely to make the check pass.

Read format and checksum separately

The tool requires ten ASCII digits and applies the KSeF SDK pattern: a nonzero first digit, with digits two and three not both zero. This describes a technical pattern, not tax-office allocations or NIP issuance.

Example 1000000006 passes the arithmetic check alone but fails this validator’s format pattern. An all-zero string is not accepted either. Read every result row: a matching check digit does not cancel a format failure.

Source: Ministry of Finance / CIRFMF — KSeF SDK NIP format (code reviewed 30 September 2026).

Worked example: 1010000002

Multiply the first nine digits by 6, 5, 7, 2, 3, 4, 5, 6, 7. The sum modulo 11 must match the last digit; remainder 10 fails. For 1010000002, the sum is 13 and the remainder is 2.

The table contains our arithmetic examples, not verified business records. Body 101000009 gives sum 76 and remainder 10: no final digit makes that body pass. Never replace the identifier in a document with an example from this guide.

Technical examples — not for real documents
Input stringSum / remainderExpected result
101000000213 / 2Structure passes
101000000313 / 2Checksum fails
10000000066 / 6SDK format fails
101000009076 / 10Checksum fails

Source: Ministry of Finance / CIRFMF — KSeF SDK NIP checksum (code reviewed 30 September 2026).

What to do when a check fails

Compare digit count and order with the source document. Check whether you pasted a prefixed VAT identifier or surrounding text. The validator does not fill missing characters or automatically suggest a replacement last digit.

If the number still fails, ask the document issuer to clarify it. Changing a digit yourself can create a different structurally passing string, not the correct identifier for that counterparty. For software tests, use the separate test-data generator.

NIP validation does not check VAT status

An official check may still be needed after technical validation. The VAT register supports a NIP lookup for a selected day and retaining the query confirmation. Follow the KAS instructions in the sources; this validator does not perform that lookup.

Do not interpret “Structure passes” as VAT registration, bank-account ownership, business activity or eligibility for a tax treatment. The microaccount generator does not identify a counterparty either. Choose the service that answers your actual question and independently compare its records.

Source: Polish tax administration — using the VAT register (a separate check); Ministry of Finance — structural identifier checks, not issuance verification.

Local checks and safe error reports

The entered NIP and result stay in the browser, outside the URL, persistent storage and analytics. Copy and print are deliberate actions. “Clear” removes the result and form entries; reopening the page does not restore the identifier.

Report the browser, steps and expected result using a test example. Do not send an invoice or a real NIP together with counterparty details. Local checking does not remove clipboard, screenshot or shared-device risks.

Frequently asked questions

Does “Structure passes” mean the business exists?

No. The result covers digits, the SDK pattern and checksum without looking up a business. Counterparty records and any VAT status need a separate appropriate source.

Can I paste a NIP with a PL prefix?

This form expects the domestic numeric part. PL is not automatically stripped and will fail the check. Spaces and ordinary hyphens are accepted as formatting.

Will the validator repair a wrong digit?

No. Do not change an identifier in a real document based only on the algorithm. Compare the source and obtain correct details from its issuer; prepare test variants separately.

Is the identifier sent to analytics or browser storage?

Form entries and results stay local, without being added to the URL, localStorage, sessionStorage or analytics. Copy and print are user actions. Visiting the page still makes a normal hosting request; protect your device and clipboard too.

Official sources and scope

This guide explains technical checks, not issuance, identity, eligibility or tax-status verification. Examples illustrate arithmetic only and may coincide with issued identifiers. Do not use them in real documents, payments or accounts. These tools do not query registers.

Tools covered by this guide

Calculator

Polish NIP validator

Check NIP structure and checksum locally, without verifying issuance or ownership.

Generator

Test NIP generator

Create 1–20 test NIP strings with passing or deliberately failing checksums.