Vérifier un numéro de TVA intracommunautaire
Ce service vérifie la forme d’un numéro de TVA intracommunautaire : il confirme que le numéro porte un préfixe pays de l’Union reconnu et une structure de caractères cohérente.
Exécuter en ligne
Exécutez cette tâche sur nos serveurs, avec votre compte. Les outils gratuits tournent dans votre navigateur ; celui-ci est facturé sur votre solde KIT au prix affiché ci-dessus.
Il écarte les numéros mal saisis avant que vous ne facturiez un client professionnel dans l’Union. Il valide la forme ; il ne confirme pas que l’entreprise est enregistrée — cette confirmation se fait à part, auprès du système officiel européen VIES.
Pourquoi vérifier la forme d’un numéro de TVA
Quand vous facturez une entreprise d’un autre pays de l’Union européenne, vous pouvez, sous conditions, appliquer une TVA à 0 % : c’est l’autoliquidation. Encore faut-il un numéro de TVA intracommunautaire correct. Un numéro mal saisi — un chiffre en moins, un préfixe erroné — fait échouer la facture au premier contrôle. Le repérer dès la saisie, avant de facturer, évite un rejet coûteux et du retravail. Ce contrôle valide la forme du numéro : c’est la première barrière, en amont de la confirmation de validité réelle.
Ce que renvoie le contrôle
Le contrôle indique si le numéro est bien formé — préfixe pays reconnu, longueur et caractères plausibles — et renvoie le code pays lu dans le préfixe. Il ne dit pas si le numéro est réellement actif ni le nom de l’entreprise rattachée : un numéro parfaitement formé peut n’appartenir à personne, parce que l’entreprise a cessé son activité ou parce que le numéro a été inventé pour passer un contrôle de forme. Confirmer une immatriculation réelle passe par VIES, le service officiel de la Commission européenne qui interroge les administrations fiscales nationales — une étape distincte que ce contrôle n’effectue pas.
Un numéro français : structure et contrôle
Un numéro de TVA français s’écrit FR, deux caractères de clé, puis les neuf chiffres du SIREN — par exemple FR 32 123456789. L’outil vérifie cette structure et distingue une simple faute de frappe d’un numéro à la forme invalide. Vous savez ainsi s’il faut corriger la saisie ou réclamer un numéro correct au client, avant même de passer à une confirmation VIES pour la validité réelle.
Un contrôle de forme, facturé à l’usage
Le contrôle valide la forme du numéro et s’exécute sur nos serveurs : il est facturé $0.002 par vérification, tarif affiché, sans abonnement. Vous le lancez sur cette page ou via l’API, pour l’intégrer à votre facturation. Il écarte les numéros mal saisis en amont ; la confirmation d’immatriculation réelle, elle, relève d’une interrogation VIES distincte que vous menez ensuite sur les numéros bien formés.
Cas d’usage
Facturer un client dans l’Union sans TVA
Avant d’émettre une facture en autoliquidation à un client allemand, Atelier Garnier SARL vérifie la forme de son numéro de TVA : bien formé, toute faute de frappe est écartée avant que la facture ne parte.
Contrôler un nouveau fournisseur européen
À l’ouverture d’un compte fournisseur en Espagne, on vérifie la forme du numéro de TVA avant de l’enregistrer en comptabilité, puis on le confirme auprès de VIES.
Régulariser une saisie douteuse
Un numéro refusé par le contrôle de forme révèle une faute de frappe dans le SIREN ; corrigé, il repasse bien formé, prêt pour l’étape suivante.
Questions fréquentes
Ce contrôle interroge-t-il le service VIES ?
Non. Ce contrôle valide la forme du numéro — préfixe pays et structure. VIES est le système de la Commission européenne qui confirme l’immatriculation réelle auprès des administrations fiscales nationales ; c’est une étape distincte que ce contrôle n’effectue pas.
Un numéro bien formé est-il forcément valide ?
Non. La forme correcte ne prouve pas l’immatriculation : un numéro bien formé peut n’appartenir à personne. Un contrôle de forme réussi doit être suivi d’une confirmation VIES pour tout numéro sur lequel vous vous appuyez.
Le contrôle vaut-il preuve en cas de contrôle fiscal ?
Il atteste que le numéro est bien formé à l’instant du contrôle, pas son immatriculation. Pour la preuve d’immatriculation, référez-vous à VIES et aux règles de votre administration ; nous vous donnons le résultat de forme, pas un conseil fiscal.
Combien coûte une vérification ?
$0.002 par numéro contrôlé, en dollars US, tarif affiché sans abonnement. L’achat se fait par PayPal, directement, et une facture peut vous être remise sur demande.
Qu’est-ce qui distingue ce contrôle d’une confirmation VIES ?
Ce contrôle vérifie la forme, instantanément et à moindre coût, sur chaque saisie. VIES confirme l’immatriculation réelle auprès des administrations nationales. Les deux se complètent : le premier écarte les fautes de frappe, le second confirme l’existence.
Le numéro testé est-il conservé ?
Le numéro sert le temps du contrôle, puis n’est pas conservé à des fins commerciales ni revendu. Il s’agit d’une donnée professionnelle, traitée uniquement pour le contrôle demandé.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/verify/vat \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"vat":"ESB12345678"}'const res = await fetch("https://api.kit.forhosting.com/verify/vat", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"vat": "ESB12345678"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/verify/vat",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"vat": "ESB12345678"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/verify/vat", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"vat":"ESB12345678"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"vat":"ESB12345678"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/verify/vat", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"vat": "ESB12345678"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "verify.vat",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |