Jsonpage · API SIREN et SIRET
API DE TVA

API de vérification de numéro de TVA intracommunautaire

L'API Jsonpage vérifie un numéro de TVA en un appel : elle contrôle son format, retrouve l'entreprise qui le porte et renvoie le statut du numéro, valid ou invalid. Elle couvre la France, la Belgique, la Suisse, la Norvège, la Finlande, la Lettonie, la Suède, l'Estonie et la Lituanie, avec un forfait Découverte (gratuit) pour tester et des prix fixes ensuite.

Mis à jour le 11 octobre 2026

Le format du numéro de TVA par pays

Un numéro de TVA commence par le code du pays, suivi d'un numéro dont la forme dépend du pays. L'API contrôle le format et, quand le pays le prévoit, la clé de contrôle, avant toute recherche.

PaysFormatExemple
FranceFR + 2 caractères de clé + SIREN (9 chiffres)FR14652014051
BelgiqueBE + numéro d'entreprise (10 chiffres)BE0417497106
SuisseNuméro IDE suivi de MWST, TVA ou IVACHE-105.909.036 TVA
NorvègeNO + numéro d'organisation + MVA-
FinlandeFI + 8 caractères du Y-tunnus-
LettonieLV + 11 chiffres-
SuèdeSE + numéro d'organisation (10 chiffres) + 01SE556042722001
EstonieEE + 9 chiffresEE100210460
LituanieLT + 9 chiffresLT110053842

En France, la clé se calcule à partir du SIREN : (12 + 3 × (SIREN modulo 97)) modulo 97. Pour le SIREN 652014051, le reste est 14 et le numéro est FR14652014051. La Suisse n'est pas membre de l'Union européenne et le Royaume-Uni l'a quittée : leurs numéros ne sont pas des numéros intracommunautaires, et le Royaume-Uni n'est pas pris en charge pour la TVA. Pour le détail des formats, voir Numéro de TVA intracommunautaire : format et vérification.

Valide ou invalide : le résultat renvoyé

La route GET /v2/validate contrôle le numéro de TVA seul ou avec le SIREN ou le SIRET du client. Elle répond 200 même quand le numéro est invalide : le champ valid vaut true seulement si tous les contrôles sont réussis, et checks détaille chacun.

Statut de la TVASignification
validLe numéro est enregistré.
invalidLe numéro n'est pas enregistré : le contrôle vat_registered échoue.
pendingLa vérification est en cours : réessayez quelques secondes plus tard.
not_verified, unavailableLa vérification n'a pas abouti. Elle ne fait pas échouer la validation, et vous pouvez la relancer.

Les autres contrôles utiles à la facturation sont vat_format (numéro bien formé), identifiers_match (le SIREN, le SIRET et la TVA désignent la même entreprise) et company_active (l'entreprise n'est pas fermée).

Exemple de requête et de réponse

curl "https://api.jsonpage.com/v2/validate?vat=FR14652014051" \
  -H "X-API-Key: $JSONPAGE_API_KEY"
{
  "data": {
    "valid": true,
    "checks": [
      { "code": "vat_format", "ok": true, "value": "FR14652014051" },
      { "code": "company_exists", "ok": true, "value": "FR-652014051" },
      { "code": "company_active", "ok": true, "value": "active" },
      { "code": "vat_registered", "ok": true, "value": "valid" }
    ],
    "company": {
      "id": "FR-652014051",
      "name": "CARREFOUR",
      "status": "active",
      "vat": { "number": "FR14652014051", "status": "valid", "checked_at": "..." },
      "...": "..."
    }
  }
}

Réponse abrégée : les champs de base de la fiche sont omis. Pour lire seulement le bloc TVA d'une fiche, ajoutez ?include=vat à GET /v2/companies/{id}.

En JavaScript

const url = "https://api.jsonpage.com/v2/validate?vat=" + encodeURIComponent("FR14652014051");
const res = await fetch(url, { headers: { "X-API-Key": process.env.JSONPAGE_API_KEY } });
const { data } = await res.json();
if (!data.valid) console.log(data.checks.filter((c) => !c.ok));

En Python

import os, requests

res = requests.get(
    "https://api.jsonpage.com/v2/validate",
    params={"vat": "FR14652014051"},
    headers={"X-API-Key": os.environ["JSONPAGE_API_KEY"]},
)
data = res.json()["data"]
print(data["valid"], [c for c in data["checks"] if not c["ok"]])

Cas d'usage en facturation

  • Livraison intracommunautaire. L'exonération de TVA suppose un numéro valide pour le client : vérifiez-le avant d'émettre la facture.
  • Création d'un client ou d'un fournisseur. Contrôlez la TVA et le SIREN saisis, puis préremplissez le nom et l'adresse depuis la fiche.
  • Paiement d'une facture fournisseur. Vérifiez que le numéro de TVA appartient bien au bénéficiaire et que l'entreprise est active.
  • Suivi dans la durée. La surveillance vous prévient par webhook quand une entreprise ferme ou entre en procédure collective.

Pour un fichier complet de clients, l'offre de nettoyage de fichier clients vérifie chaque ligne sans écrire de code.

Prix et limites

Découverte à 0 €, Standard à 19 € HT par mois, Pro à 129 € HT par mois, avec 100, 1 000 et 10 000 requêtes par minute et 1 000 requêtes par jour. Prix fixe, pas de crédits, pas de dépassement facturé. Voir les tarifs.

Questions fréquentes

Comment vérifier un numéro de TVA intracommunautaire par API ?+

Appelez GET /v2/validate avec le paramètre vat. La réponse indique si le numéro est bien formé, si l'entreprise existe et est active, et le statut du numéro (valid, invalid ou pending).

Quels pays sont pris en charge pour la TVA ?+

La France, la Belgique, la Suisse, la Norvège, la Finlande, la Lettonie, la Suède, l'Estonie et la Lituanie. Les numéros britanniques ne sont pas pris en charge.

Que signifie le statut pending ?+

La vérification du numéro n'a pas encore abouti. Réessayez quelques secondes plus tard.

Peut-on vérifier la TVA à partir du SIREN ?+

Oui. En France, le numéro de TVA se calcule à partir du SIREN, et l'API vérifie ensuite qu'il est enregistré. Transmettez le SIREN et la TVA ensemble pour contrôler qu'ils désignent la même entreprise.

Une vérification de TVA est-elle facturée à l'unité ?+

Non. Prix fixe, pas de crédits, pas de dépassement facturé. Le débit est limité par minute selon le forfait, et aucune vérification n'est décomptée d'un crédit.

Pour aller plus loin

VÉRIFIER UN NUMÉRO

Testez sur vos propres numéros de TVA

Le compte gratuit est immédiat, sans carte bancaire, avec 100 requêtes par minute et 1 000 requêtes par jour.