Das Format der USt-IdNr. nach Land
Eine USt-IdNr. beginnt mit dem Ländercode, gefolgt von einer Nummer, deren Aufbau vom Land abhängt. Die API prüft vor jeder Suche das Format und, wenn das Land sie vorsieht, die Prüfziffer.
| Land | Format | Beispiel |
|---|---|---|
| Frankreich | FR + 2 Zeichen Prüfschlüssel + SIREN (9 Ziffern) | FR14652014051 |
| Belgien | BE + Unternehmensnummer (10 Ziffern) | BE0417497106 |
| Schweiz | UID-Nummer, gefolgt von MWST, TVA oder IVA | CHE-105.909.036 TVA |
| Norwegen | NO + Organisationsnummer + MVA | - |
| Finnland | FI + 8 Zeichen der Y-tunnus | - |
| Lettland | LV + 11 Ziffern | - |
| Schweden | SE + Organisationsnummer (10 Ziffern) + 01 | SE556042722001 |
| Estland | EE + 9 Ziffern | EE100210460 |
| Litauen | LT + 9 Ziffern | LT110053842 |
In Frankreich wird der Prüfschlüssel aus der SIREN berechnet: (12 + 3 × (SIREN modulo 97)) modulo 97. Für die SIREN 652014051 ist der Rest 14 und die Nummer lautet FR14652014051. Die Schweiz ist kein Mitglied der Europäischen Union und das Vereinigte Königreich ist ausgetreten: Ihre Nummern sind keine innergemeinschaftlichen Nummern, und das Vereinigte Königreich wird für die USt-IdNr. nicht unterstützt. Details zu den Formaten finden Sie unter Innergemeinschaftliche USt-IdNr.: Format und Prüfung.
Gültig oder ungültig: das gelieferte Ergebnis
Der Endpunkt GET /v2/validate prüft die USt-IdNr. allein oder zusammen mit der SIREN oder SIRET des Kunden. Er antwortet 200, auch wenn die Nummer ungültig ist: Das Feld valid ist nur dann true, wenn alle Prüfungen bestanden sind, und checks führt jede einzeln auf.
| Status der USt-IdNr. | Bedeutung |
|---|---|
valid | Die Nummer ist registriert. |
invalid | Die Nummer ist nicht registriert: Die Prüfung vat_registered schlägt fehl. |
pending | Die Prüfung läuft: Versuchen Sie es in einigen Sekunden erneut. |
not_verified, unavailable | Die Prüfung konnte nicht abgeschlossen werden. Sie lässt die Validierung nicht scheitern, und Sie können sie erneut starten. |
Weitere für die Rechnungsstellung nützliche Prüfungen sind vat_format (Nummer korrekt aufgebaut), identifiers_match (SIREN, SIRET und USt-IdNr. bezeichnen dasselbe Unternehmen) und company_active (das Unternehmen ist nicht geschlossen).
Beispiel für Anfrage und Antwort
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": "..." },
"...": "..."
}
}
}
Gekürzte Antwort: Die Basisfelder des Datensatzes sind weggelassen. Um nur den USt-IdNr.-Block eines Datensatzes zu lesen, ergänzen Sie ?include=vat bei GET /v2/companies/{id}.
In 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));
In 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"]])
Anwendungsfälle in der Rechnungsstellung
- Innergemeinschaftliche Lieferung. Die Steuerbefreiung setzt eine gültige Nummer des Kunden voraus: Prüfen Sie sie, bevor Sie die Rechnung ausstellen.
- Anlage eines Kunden oder Lieferanten. Prüfen Sie die eingegebene USt-IdNr. und SIREN und füllen Sie dann Name und Adresse aus dem Datensatz vor.
- Bezahlung einer Lieferantenrechnung. Prüfen Sie, ob die USt-IdNr. tatsächlich dem Zahlungsempfänger gehört und das Unternehmen aktiv ist.
- Beobachtung über die Zeit. Die Überwachung informiert Sie per Webhook, wenn ein Unternehmen schließt oder in ein Insolvenzverfahren eintritt.
Für eine ganze Kundendatei prüft das Angebot zur Bereinigung von Kundendateien jede Zeile, ohne dass Sie Code schreiben müssen.
Preise und Limits
Entdecken für 0 €, Standard für 19 € netto pro Monat, Pro für 129 € netto pro Monat, mit 100, 1.000 und 10.000 Anfragen pro Minute und 1.000 Anfragen pro Tag. Fester Preis, keine Credits, keine Mehrkosten bei Überschreitung. Siehe die Tarife.
Häufige Fragen
Wie prüfe ich eine innergemeinschaftliche USt-IdNr. per API?+
Rufen Sie GET /v2/validate mit dem Parameter vat auf. Die Antwort zeigt, ob die Nummer korrekt aufgebaut ist, ob das Unternehmen existiert und aktiv ist, und welchen Status die Nummer hat (valid, invalid oder pending).
Welche Länder werden für die USt-IdNr. unterstützt?+
Frankreich, Belgien, die Schweiz, Norwegen, Finnland, Lettland, Schweden, Estland und Litauen. Britische Nummern werden nicht unterstützt.
Was bedeutet der Status pending?+
Die Prüfung der Nummer ist noch nicht abgeschlossen. Versuchen Sie es in einigen Sekunden erneut.
Kann man die USt-IdNr. anhand der SIREN prüfen?+
Ja. In Frankreich wird die USt-IdNr. aus der SIREN berechnet, und die API prüft anschließend, ob sie registriert ist. Übergeben Sie SIREN und USt-IdNr. gemeinsam, um zu kontrollieren, dass beide dasselbe Unternehmen bezeichnen.
Wird jede USt-IdNr.-Prüfung einzeln berechnet?+
Nein. Fester Preis, keine Credits, keine Mehrkosten bei Überschreitung. Die Rate ist je nach Tarif pro Minute begrenzt, und keine Prüfung wird von Credits abgezogen.
Weiterführende Informationen
- SIRENSIREN- und SIRET-APIUnternehmensdatensatz, Namenssuche, Autovervollständigung und Prüfung.
- DOKUMENTATIONValidierung in der DokumentationAlle Prüfungen des Validierungs-Endpunkts, eine nach der anderen.
- LEITFADENInnergemeinschaftliche USt-IdNr.: Format und PrüfungWozu die Nummer dient, häufige Fehler und die Angaben auf der Rechnung.