EU VAT number validation API

From $0.01 per successful call · failed calls are never charged · no account needed · Markdown version: /guides/eu-vat-number-validation-api.md

Check an EU VAT number against the European Commission's VIES service with one GET request: valid or not, with the registered name and address where the member state shares them.

Company check API: monthly plans and one-off packs, one API key.

When an agent wants this

VAT number validation, EU VIES $0.01

Check an EU VAT number against the European Commission's VIES service: valid or not, with the registered name and address where the member state shares them. Any spacing (SE556703748501, DE 123 456 789; EL or GR for Greece, XI for Northern Ireland). Or verify a business by name: found or not in the French, Swedish, Norwegian and Finnish registers. Use to check a B2B customer before invoicing without VAT, or to confirm a supplier.

Inputs: vat: VAT number with its 2-letter EU country prefix (give vat or name); name: Company name to verify instead of a VAT number: found or not in the FR, SE, NO and FI company registers; country: With name: search only this register (FR, SE, NO or FI, or the country's name).

Free first (3 successful calls per caller, no key):

curl "https://tools.funwords.eu/vat/validate?vat=SE556703748501&trial=1"

With a card key from /credits, in a header or, when your client can only fetch a URL, in the URL:

curl -H "Authorization: Bearer adt_…" "https://tools.funwords.eu/vat/validate?vat=SE556703748501"
curl "https://tools.funwords.eu/vat/validate?vat=SE556703748501&api_key=adt_…"

Without a key the same URL answers 402 Payment Required with x402 and MPP terms, so a wallet client pays USDC per call and retries. Over MCP (https://tools.funwords.eu/mcp) this tool is vat_validate.

Example result
{
  "vat": "SE556703748501",
  "country": "SE",
  "number": "556703748501",
  "valid": true,
  "name": "Spotify AB",
  "address": "REGERINGSGATAN 19, 111 53 STOCKHOLM",
  "checkedAt": "2026-11-06T14:36:47.903Z",
  "source": "EU VIES (European Commission)"
}

Tool page, inputs and limits

Swedish company lookup, Bolagsverket register $0.01

Swedish company by organisationsnummer (556703-7485 or SE556703748501) or name, from Bolagsverket and SCB: names, legal form, registration date, status, deregistration, bankruptcy, liquidation or reconstruction, VAT/F-tax/employer activity, SNI codes, business description, address. Weekly open data. Use to verify a Swedish customer or supplier before invoicing. Register facts only, not a credit report.

Inputs: orgnr: Swedish organisationsnummer (10 digits, with or without the hyphen) or Swedish VAT number (give orgnr or name); name: Company name to search for, instead of orgnr: up to 10 registered companies whose name holds every word; checkVat: true to also check the VAT number live in the EU VIES service (adds about a second); city: With name: only companies whose postal address is in this city (postort), such as Göteborg; limit: Matches for a name search (1-10, default 5).

Free first (3 successful calls per caller, no key):

curl "https://tools.funwords.eu/se/company?orgnr=556703-7485&trial=1"

With a card key from /credits, in a header or, when your client can only fetch a URL, in the URL:

curl -H "Authorization: Bearer adt_…" "https://tools.funwords.eu/se/company?orgnr=556703-7485"
curl "https://tools.funwords.eu/se/company?orgnr=556703-7485&api_key=adt_…"

Without a key the same URL answers 402 Payment Required with x402 and MPP terms, so a wallet client pays USDC per call and retries. Over MCP (https://tools.funwords.eu/mcp) this tool is se_company.

Example result
{
  "orgnr": "556703-7485",
  "vatNumber": "SE556703748501",
  "name": "Spotify AB",
  "otherNames": [],
  "legalForm": {
    "code": "AB",
    "name": "Aktiebolag (limited company)"
  },
  "status": "registered",
  "registered": "2006-05-10",
  "deregistered": null,
  "proceedings": [],
  "taxActive": true,
  "industries": [
    {
      "sni": "60.100"
    }
  ],
  "businessDescription": "Bolaget har till föremål för sin verksamhet att bedriva Internetrelaterade tjänster inom digitala medier som musik, spel och TV, samt att, direkt eller indirekt, äga och förvalta fast och lös egendom, äga aktier och andelar i dotterbolag och andra bolag samt tillhandahålla administrativa tjänster för dessa bolag och därmed förenlig verksamhet.",
  "address": {
    "street": "Regeringsgatan 19",
    "postcode": "11153",
    "city": "STOCKHOLM",
    "country": "SE"
  },
  "vat": null,
  "dataAsOf": "2026-11-09",
  "source": "Bolagsverket and SCB open data (värdefulla datamängder), weekly bulk files",
  "note": "Register facts only. This is not a credit report, credit score or rating."
}

Tool page, inputs and limits

Questions

Which countries does it cover?

Every EU member state and Northern Ireland (prefix XI) through VIES. Greece is EL; a number sent with GR is checked as EL.

What if VIES or a member state is busy?

The check is retried for busy signals. If no clear answer comes, the call fails and is not charged; it never answers not valid by default.

Does every country return the name and address?

No. Each member state decides; Germany and Spain return valid or not valid only.

How do I pay?

Each successful call costs the tool's price; failed calls are not charged. The first 3 calls are free. Then pay with card credits from $1 (the key goes in an Authorization header or as api_key= in the URL) or per call in USDC over x402 or MPP. No account is needed.