KVKBase Team

Numéro de TVA belge : structure et clé de contrôle expliquées

Comment est construit un numéro de TVA belge et comment fonctionne la clé de contrôle modulo 97 ? Calcul détaillé, limites du test et variantes d'écriture.

belgiquetvaclé de contrôlevies

Un numéro de TVA belge paraît simple, pourtant il obéit à une logique précise : un format fixe, un contrôle intégré et plusieurs façons de l’écrire. Si vous traitez des factures, gérez une boutique en ligne ou nettoyez un fichier clients, une bonne validation évite beaucoup d’erreurs. Dans ce guide, vous refaites le calcul de la clé de contrôle à la main, sur un exemple complet.

La structure d’un numéro de TVA belge

Un numéro de TVA belge s’écrit BE suivi de 10 chiffres. Ces 10 chiffres sont exactement le numéro d’entreprise. Exemple : BE0821015819.

Les règles en bref :

  • Le préfixe est BE, le code du pays.
  • Viennent ensuite 10 chiffres, soit 12 caractères au total.
  • Le premier chiffre est 0 ou 1.
  • Les deux derniers chiffres forment la clé de contrôle.

Autrefois, les numéros de TVA belges comptaient 9 chiffres, sans zéro initial. On croise donc encore des écritures comme BE821015819. En ajoutant un 0 devant, on retrouve le format actuel à 10 chiffres. C’est aussi pourquoi les tableurs affichent parfois un chiffre de moins : ils suppriment le zéro initial.

Le lien entre les deux numéros est détaillé dans numéro d’entreprise et numéro de TVA : la différence.

La clé de contrôle

Les deux derniers chiffres se calculent à partir des huit premiers. La règle : divisez les huit premiers chiffres par 97, prenez le reste et retranchez-le de 97. Le résultat est la clé de contrôle.

Pourquoi 97 ? C’est un nombre premier, ce qui permet de détecter pratiquement toutes les erreurs sur un seul chiffre et la plupart des permutations de deux chiffres. Une seule faute de frappe produit toujours une clé différente.

Un calcul complet, étape par étape

Prenons BE0821015819. Les 10 chiffres sont 0821015819. La base (les huit premiers chiffres) est 08210158, soit le nombre 8 210 158. La clé figure aux deux dernières positions : 19.

Le calcul :

  1. Convertissez les huit premiers chiffres en nombre : 08210158 devient 8210158.
  2. Divisez par 97 : 8210158 / 97 vaut environ 84640,8. Le plus grand entier contenu dedans est 84640.
  3. Multipliez en retour : 84640 x 97 = 8210080.
  4. Calculez le reste : 8210158 moins 8210080 = 78.
  5. Calculez la clé : 97 moins 78 = 19.

Le résultat, 19, correspond aux deux derniers chiffres du numéro. Le numéro est donc cohérent.

Essayons avec une erreur : BE0821015818. Les huit premiers chiffres sont identiques, donc la clé attendue reste 19. Le numéro se termine par 18 et le contrôle échoue. Un seul chiffre faux suffit à le révéler.

Le contrôle en code

En JavaScript, le calcul tient en quelques lignes :

function isValidBelgianVatFormat(input) {
  let digits = String(input).toUpperCase().replace(/^BE/, "").replace(/\D/g, "");
  if (digits.length === 9) digits = "0" + digits;
  if (!/^[01]\d{9}$/.test(digits)) return false;
  const base = Number(digits.slice(0, 8));
  const check = Number(digits.slice(8));
  return 97 - (base % 97) === check;
}

console.log(isValidBelgianVatFormat("BE0821015819")); // true
console.log(isValidBelgianVatFormat("BE0821015818")); // false

Et en Python :

import re

def is_valid_be_vat_format(value: str) -> bool:
    digits = re.sub(r"\D", "", value.upper().removeprefix("BE"))
    if len(digits) == 9:
        digits = "0" + digits
    if not re.fullmatch(r"[01]\d{9}", digits):
        return False
    return 97 - (int(digits[:8]) % 97) == int(digits[8:])

L’API effectue le même contrôle. Un numéro mal formé reçoit l’erreur INVALID_CBE_NUMBER (HTTP 400) et ne coûte rien.

Une clé valide ne prouve rien d’autre

C’est le point essentiel de ce guide. Un numéro qui passe le test modulo 97 est bien construit. Cela ne dit rien sur l’existence d’une entreprise portant ce numéro, et encore moins sur son assujettissement à la TVA.

Quatre cas où un numéro cohérent reste inutilisable :

  • Le numéro n’a jamais été attribué. Beaucoup de numéros sont mathématiquement corrects sans appartenir à personne.
  • L’entreprise existe mais n’est pas assujettie : elle n’a donc pas de numéro de TVA.
  • Le numéro de TVA a été désactivé.
  • L’entreprise a cessé son activité ou est en liquidation.

Pour le commerce intracommunautaire, vérifiez donc l’état du numéro dans VIES, la base de données officielle de l’Union européenne pour la TVA. Le fonctionnement est décrit dans vérifier un numéro de TVA belge avec VIES. Sur KVKBase, une vérification VIES coûte 1 token, et le plan gratuit offre 50 tokens par mois. VIES peut aussi être indisponible momentanément : traitez une erreur comme « inconnu », jamais comme « invalide ».

Les variantes d’écriture

Un numéro de TVA circule sous de nombreuses formes :

ÉcritureExemple
ContinueBE0821015819
Avec pointsBE0821.015.819
Avec espacesBE 0821 015 819
Points et espaceBE 0821.015.819
Sans préfixe0821.015.819
Ancien formatBE821015819

Pour stocker et comparer, normalisez toujours : retirez espaces, points et tirets, passez en majuscules et contrôlez le préfixe. Conservez ensuite BE et 10 chiffres sous forme de texte, jamais de nombre. Pour l’affichage, utilisez les points, qui se lisent mieux.

Les erreurs fréquentes

  • Stocker le numéro comme un nombre. Le zéro initial disparaît.
  • Ne pas normaliser. Deux écritures du même numéro deviennent deux clients.
  • Ne contrôler que le format. Sans VIES, vous ignorez si le numéro est actif.
  • Utiliser un numéro d’établissement comme numéro de TVA. Les numéros qui commencent par 2 désignent une unité d’établissement, pas l’entreprise.

Pour aller plus loin

Vous pouvez tester un numéro tout de suite avec la vérification de numéro de TVA ou l’outil de recherche d’un numéro d’entreprise. Pour la démarche complète face à un nouveau client, lisez vérifier un client ou un fournisseur belge, et pour automatiser intégrer une API de données d’entreprises belges. Si vous avez beaucoup de numéros à contrôler, lisez vérifier des entreprises en masse.

Questions fréquentes

Comment est construit un numéro de TVA belge ?
Il se compose du préfixe BE suivi de 10 chiffres. Ces 10 chiffres sont le numéro d'entreprise, qui commence par 0 ou 1. Les deux derniers sont la clé de contrôle.
Comment calculer la clé de contrôle ?
Prenez les huit premiers chiffres comme un nombre, divisez-le par 97 et gardez le reste. La clé est 97 moins ce reste, et elle doit égaler les deux derniers chiffres.
Une clé valide prouve-t-elle que le numéro de TVA est actif ?
Non. Elle prouve seulement que le numéro est cohérent. Pour savoir si un numéro de TVA actif existe, interrogez VIES.
Peut-on écrire un numéro de TVA avec des points ou des espaces ?
Pour l'affichage, oui, par exemple BE 0821.015.819. Retirez-les avant de stocker ou de contrôler le numéro, pour ne garder que BE et 10 chiffres.