Belgium VAT number: format and validation

By Remco from Avatcado

Format

BE followed by 10 digits starting with 0 or 1. The local term is btw-identificatienummer (btw-nummer, Dutch) or numero d'identification a la TVA (numero de TVA, French).

Pattern: /^[01]\d{9}$/

  • Identical to the company's KBO/BCE enterprise number; domestically written with dots (0417.497.106)
  • Numbers starting with 1 are issued as the historic 0-series nears exhaustion; old 9-digit VAT numbers were converted by adding a leading 0

Example of a registered number: BE 0417.497.106

Check digit

Belgium VAT numbers carry a check digit (MOD 97): The last two digits equal 97 minus (the first eight digits mod 97).

Check a Belgium VAT number

Checks route through VIES. Caching is enabled by default. Read the source, original result time and freshness label alongside validity; a cached or stale result does not freshly confirm current registration.

Enter a VAT number to see its registration result, source and freshness

Validate via API

The same validation as an API call, with the example number above:

curl "https://api.avatcado.com/v1/validate?vat_number=BE0417497106" \
  -H "Authorization: Bearer avat_live_your_api_key"
import Avatcado from "@avatcado/node";

const avatcado = new Avatcado("avat_live_your_api_key");
const { data, error } = await avatcado.vat.validate({
  vatNumber: "BE0417497106",
});

if (data?.data.valid) {
  console.log(`Registered: ${data.data.company?.name}`);
}

Free tier includes 500 validations per month. Get an API key or read the API documentation.

How Avatcado validates Belgium numbers

  • Primary source: VIES.
  • Company name and address: yes, observed 2026-09-04.
  • When VIES is down: KBO (Snapshot refreshed 09:00 and 21:00 UTC) on Pro and Business, then the cached result, then a refunded 503.

See the full coverage table.

Frequently asked questions

What is the VAT registration threshold in Belgium?

All businesses must activate their enterprise number for VAT, but the franchise regime exempts businesses with annual turnover up to EUR 25,000 from charging VAT.

How do I look up a Belgian VAT number?

Use the KBO/BCE Public Search (kbopub.economie.fgov.be) by enterprise number or company name. The VAT number is the enterprise number with the BE prefix, and it is the same KBO register Avatcado falls back to when VIES cannot answer.

What happens when VIES is down for a Belgian VAT number?

For a company, on the Pro and Business plans, Avatcado falls back to the KBO Open Data snapshot and answers with source: "kbo" and source_status: "fallback" when the enterprise carries the VAT activities code. Sole traders are not answered this way: a check against VIES found the KBO snapshot cannot be trusted for VAT-registered sole traders, so their numbers fall through to the cache instead, the same as a country with no register.

How does Avatcado validate Belgium VAT numbers when VIES is down?

When VIES cannot answer for Belgium because of an availability fault such as MS_UNAVAILABLE or a timeout, eligible Pro and Business checks can use KBO, run by FPS Economy, Crossroads Bank for Enterprises; the Free plan can use eligible cache instead. KBO publishes its data as a downloadable file rather than a live lookup, so Avatcado reads it from a mirror (Snapshot refreshed 09:00 and 21:00 UTC). That snapshot only answers while it passes two freshness gates: it must itself be less than 3 days old, and the source file behind it must have changed within the last 14 days. A snapshot that fails either gate is retired, and the request falls through exactly as if Belgium had no register at all. A confirmed answer includes the registered company name and address that KBO publishes. Belgium's snapshot covers companies only: a sole trader's VAT number is never in it, and the request proceeds to eligible cache or a refunded 503. KBO lookups can only confirm a positive: if the register does not carry the number, or cannot confirm it, Avatcado never reports the number invalid on that basis, and the request moves on to the next step instead. A confirmed fallback answer carries meta.source: "kbo" and meta.source_status: "fallback", so your code can tell it apart from a normal VIES confirmation. There is no VIES consultation number attached to it, since only VIES itself issues one, which is why a request that carries requester_vat_number skips the register by default and only reaches it when you pass fallback=true. If KBO also cannot confirm the number, Avatcado can serve an eligible stored result with meta.cached: true and meta.stale: true when it is past the cache window. Requester checks disable stored responses by default; cache=true opts back in. If no eligible source can answer, the request returns a refunded 503 (upstream_member_state_unavailable). Retain the source and original timestamp; stored evidence does not freshly confirm current registration.

Related guides

VAT rate in Belgium

The standard VAT rate in Belgium is 21%. Reduced rates: 12%, 6%. See all Belgium VAT rates.

Sources