Check a French VAT number

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

Country prefixFR
Local namenuméro de TVA intracommunautaire
FormatFR followed by a 2-character key (digits, or letters other than O and I) and the 9-digit SIREN
ShapeFR12345678901 (an example of the shape, not a real registration)
Pattern^FR[0-9A-HJ-NP-Z]{2}\d{9}$

Good to know about France

Check a French 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=FR12345678901"

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.

The French company register

For more than the VAT status, look the company up in the register: French company lookup, Sirene register. Legal form, status, bankruptcy or liquidation, registration date, industry codes and address.

Questions

What does a French VAT number look like?

FR followed by a 2-character key (digits, or letters other than O and I) and the 9-digit SIREN, for example FR12345678901 (an example of the shape, not a real registration). Locally it is called numéro de TVA intracommunautaire.

How do I check that a French 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.

What is special about France?

The last 9 digits are the company's SIREN, so the number also identifies it in the Sirene register.

Other countries

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