Check a Polish VAT number

Validate a VAT number from Poland against the EU's VIES service, here or from your own code.

Country prefixPL
Local nameNIP (numer identyfikacji podatkowej)
FormatPL followed by 10 digits
ShapePL1234567890 (an example of the shape, not a real registration)
Pattern^PL\d{10}$

Check a Polish VAT number now

VAT number with its 2-letter EU country prefix (give vat or name)

Uses one of your 3 free calls. Nothing is charged, and a call that fails is not counted.

How the check works

The check asks VIES, the European Commission's VAT Information Exchange System, which in turn asks the member state's own tax database. Valid means the number is registered for intra-EU trade at the moment of the check. Where the member state shares them, the answer also carries the registered name and address. Spaces, dots and hyphens in the number are ignored.

From your code

curl -H "Authorization: Bearer $API_KEY" \
  "https://agent-data-tools.revmesh2074.workers.dev/vat/validate?vat=PL1234567890"

One GET request, JSON back: valid, and the registered name and address when they are shared. A failed check is never charged. Keys, monthly plans and code in Python and Node.js: Company check API. Reference: tool page.

Questions

What does a Polish VAT number look like?

PL followed by 10 digits, for example PL1234567890 (an example of the shape, not a real registration). Locally it is called NIP (numer identyfikacji podatkowej).

How do I check that a Polish VAT number is valid?

Enter it on this page, or send it to the API. The check asks VIES, the European Commission's VAT Information Exchange System, which in turn asks the member state's own tax database. Valid means the number is registered for intra-EU trade at the moment of the check.

Why would a real number come back as not valid?

The business may not be registered for intra-EU trade, the registration may have ended, or the number may be written with the wrong prefix or a missing digit. A member state's database can also be unavailable for a short time; the check then fails instead of answering not valid.

Other countries

Austria · Belgium · Bulgaria · Cyprus · Czech Republic · Germany · Denmark · Estonia · Greece · Spain · Finland · France · Croatia · Hungary · Ireland · Italy · Lithuania · Luxembourg · Latvia · Malta · Netherlands · Portugal · Romania · Sweden · Slovenia · Slovakia · Northern Ireland