Warum die Nummern vor der Rechnung prüfen
Diese Seite zeigt, wie Sie diese Nummern mit einem API-Aufruf prüfen, bevor Sie eine Rechnung ausstellen oder die eines Lieferanten verbuchen, mit Beispielen in curl, JavaScript, Python, PHP und Ruby.
Die E-Rechnung wird in Frankreich schrittweise eingeführt: Alle Unternehmen müssen ab September 2026 elektronische Rechnungen empfangen können, und die Ausstellungspflicht erreicht ab September 2027 kleine und Kleinstunternehmen. Der offizielle Zeitplan steht auf impots.gouv.fr (auf Französisch). Die SIREN des Kunden wird zur Angabe auf der Rechnung: siehe was die E-Rechnung für die SIREN ändert und die Liste der Pflichtangaben.
Zwei Zeitpunkte eignen sich für eine automatische Prüfung. Bei der Ausstellung prüfen Sie den Käufer: Die Nummer existiert, das Unternehmen ist aktiv, SIRET und USt-IdNr. gehören zum selben Unternehmen. Beim Empfang prüfen Sie den Verkäufer, bevor Sie verbuchen und zahlen, was auch das Risiko einer gefälschten Rechnung senkt.
Ein Aufruf für SIRET und USt-IdNr.
Die Route GET /v2/validate nimmt eine globale Kennung, eine SIRET, eine USt-IdNr. oder mehrere zugleich. Jede Prüfung kommt mit ihrem Ergebnis zurück, und valid ist nur wahr, wenn alle Prüfungen bestehen. Der API-Schlüssel gehört in den Header X-API-Key.
curl "https://api.jsonpage.com/v2/validate?siret=55203253400646&vat=FR27552032534" \
-H "X-API-Key: $JSONPAGE_API_KEY"
Antwort (Auszug):
{
"data": {
"valid": true,
"checks": [
{ "code": "siret_format", "ok": true, "value": "55203253400646" },
{ "code": "siret_key", "ok": true, "value": "55203253400646" },
{ "code": "vat_format", "ok": true, "value": "FR27552032534" },
{ "code": "identifiers_match", "ok": true, "value": "FR-552032534" },
{ "code": "company_exists", "ok": true, "value": "FR-552032534" },
{ "code": "company_active", "ok": true, "value": "active" },
{ "code": "vat_registered", "ok": true, "value": "valid" }
],
"company": { "id": "FR-552032534", "name": "DANONE", "status": "active" }
}
}
Leerzeichen, Punkte und Bindestriche werden in SIRET und USt-IdNr. ignoriert, Sie müssen die Eingabe also nicht vorab bereinigen. USt-IdNr. aller Länder der Europäischen Union werden akzeptiert, nicht nur französische.
Das Ergebnis lesen und entscheiden
Bleiben Sie nicht bei valid stehen: Die Liste checks sagt, welche Prüfung fehlgeschlagen ist und was Sie Ihrem Gegenüber also fragen müssen.
| Ergebnis | Was es bedeutet | Was vor der Rechnung zu tun ist |
|---|---|---|
valid: true | Alle Prüfungen sind bestanden. | Weitermachen: Rechnung ausstellen oder verbuchen. |
siret_key oder vat_format fehlgeschlagen | Die Nummer ist falsch eingegeben: Tippfehler oder falsche Prüfziffer. | Die Nummer an der Quelle korrigieren und die Prüfung wiederholen. |
company_active fehlgeschlagen | Die Nummer existiert, aber das Unternehmen oder die Niederlassung ist geschlossen. | Vor dem Weitermachen beim Kunden oder Lieferanten eine aktuelle Nummer erfragen. |
identifiers_match fehlgeschlagen | SIRET und USt-IdNr. gehören nicht zum selben Unternehmen. | Das richtige Nummernpaar bestätigen lassen. |
vat unverifiable | Der Dienst des Landes hat nicht geantwortet: Die Nummer gilt nicht als falsch. | Später erneut versuchen; nicht als ungültig behandeln. |
Für viele Nummern auf einmal, etwa eine ganze Kundendatei vor dem ersten Rechnungslauf, übernimmt die Seite Kundendatei die Prüfung ohne Programmierung, und das Vorgehen zum Bereinigen einer Kundendatei beschreibt die Schritte.
Codebeispiele
Dieselbe Prüfung in vier Sprachen, zum Einbinden in Ihre Rechnungssoftware oder Ihr ERP. Der Schlüssel wird aus einer Umgebungsvariablen gelesen: Legen Sie ihn nie in eine Seite oder in eine an Nutzer verteilte Anwendung.
JavaScript
async function checkParty(siret, vat) {
const url = new URL("https://api.jsonpage.com/v2/validate");
url.searchParams.set("siret", siret);
url.searchParams.set("vat", vat);
const res = await fetch(url, { headers: { "X-API-Key": process.env.JSONPAGE_API_KEY } });
if (!res.ok) throw new Error("HTTP " + res.status);
const { data } = await res.json();
const failed = data.checks.filter((c) => !c.ok).map((c) => c.code);
return { valid: data.valid, failed, company: data.company };
}
Python
import os
import requests
def check_party(siret, vat):
r = requests.get(
"https://api.jsonpage.com/v2/validate",
params={"siret": siret, "vat": vat},
headers={"X-API-Key": os.environ["JSONPAGE_API_KEY"]},
timeout=10,
)
r.raise_for_status()
data = r.json()["data"]
failed = [c["code"] for c in data["checks"] if not c["ok"]]
return data["valid"], failed, data["company"]
PHP
function checkParty(string $siret, string $vat): array
{
$url = "https://api.jsonpage.com/v2/validate?" . http_build_query(["siret" => $siret, "vat" => $vat]);
$context = stream_context_create(["http" => [
"header" => "X-API-Key: " . getenv("JSONPAGE_API_KEY"),
"timeout" => 10,
]]);
$body = file_get_contents($url, false, $context);
if ($body === false) {
throw new RuntimeException("Request failed");
}
$data = json_decode($body, true)["data"];
$failed = array_column(array_filter($data["checks"], fn ($c) => !$c["ok"]), "code");
return [$data["valid"], $failed, $data["company"]];
}
Ruby
require "net/http"
require "json"
def check_party(siret, vat)
uri = URI("https://api.jsonpage.com/v2/validate")
uri.query = URI.encode_www_form(siret: siret, vat: vat)
req = Net::HTTP::Get.new(uri, "X-API-Key" => ENV.fetch("JSONPAGE_API_KEY"))
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |http| http.request(req) }
raise "HTTP #{res.code}" unless res.is_a?(Net::HTTPSuccess)
data = JSON.parse(res.body)["data"]
failed = data["checks"].reject { |c| c["ok"] }.map { |c| c["code"] }
[data["valid"], failed, data["company"]]
end
Was die API nicht tut
Die API prüft Nummern und das Unternehmen, auf das sie verweisen. Sie validiert nicht die Rechnungsdatei (Struktur, Felder, Übereinstimmung mit dem geforderten Format), übermittelt die Rechnung nicht an eine Plattform und ersetzt nicht den Rat Ihrer Steuerberatung. Eine USt-IdNr. mit dem Ergebnis „derzeit nicht prüfbar“ ist keine falsche Nummer: Versuchen Sie es später erneut.
Beim Volumen sind die Routen pro Minute begrenzt; darüber ist die Antwort 429 mit einem Header Retry-After: Warten Sie so lange, bevor Sie es erneut versuchen. Für eine große Menge senkt die Batch-Route (100 Unternehmen pro Aufruf) die Zahl der Aufrufe. Siehe die Dokumentation.
Häufige Fragen
Sollte ich die SIREN vor jeder Rechnung prüfen?+
Mindestens beim Anlegen des Kunden oder Lieferanten, danach wenn eine Rechnung abgelehnt wird oder sich eine Zahlungsangabe ändert. Eine Prüfung bei der Ausstellung vermeidet, dass eine Rechnung an ein geschlossenes Unternehmen oder eine falsche Nummer geht.
Validiert die API meine E-Rechnung?+
Nein. Sie prüft die Identifikationsnummern (SIREN, SIRET, USt-IdNr.) und das Unternehmen, auf das sie verweisen. Format und Inhalt der Rechnungsdatei hängen von Ihrer Software oder Plattform ab.
Kann ich die USt-IdNr. eines ausländischen Lieferanten prüfen?+
Ja. Die Prüfroute akzeptiert USt-IdNr. der Länder der Europäischen Union. Antwortet der Dienst des Landes nicht, lautet das Ergebnis „nicht prüfbar“, was nicht dasselbe ist wie eine ungültige Nummer.
Brauche ich ein kostenpflichtiges Konto?+
Nein, das kostenlose Konto bietet alle Routen, mit 100 Anfragen pro Minute und 1.000 Anfragen pro Tag. Kostenpflichtige Tarife heben die Tagesgrenze auf.
Was, wenn SIRET und USt-IdNr. nicht zusammenpassen?+
Bitten Sie Ihr Gegenüber, das Nummernpaar vor der Rechnung zu bestätigen. Die Liste der Prüfungen zeigt, ob die SIRET existiert, aktiv ist und zum selben Unternehmen gehört wie die USt-IdNr.
Weiterlesen
- E-RECHNUNGE-Rechnung Frankreich 2026: die Liste der Pflichtangaben auf der RechnungCheckliste der Pflichtangaben einer französischen Rechnung und die vier neuen der Reform: SIREN, Lieferung, Art, Sollbesteuerung.
- RECHNUNGSSTELLUNGFranzösischer Kunde: E-Rechnungen empfangen?Die zugelassene Plattform eines französischen Kunden im offiziellen Verzeichnis finden und was der Zeitplan 2026-2027 vorsieht.
- E-RECHNUNGE-Rechnung in Frankreich 2026: warum die SIREN Ihrer Kunden zur Pflicht wirdDie vier neuen Pflichtangaben, der Zeitplan 2026-2027 und die Prüfung der SIREN Ihrer Kunden.
- APIAPI zur Prüfung der innergemeinschaftlichen USt-IdNr.USt-IdNr. in einem Aufruf prüfen: Format, Unternehmen, Status gültig oder ungültig. Frankreich, Belgien, Schweiz, Norwegen, Finnland, Lettland, Schweden, Estland, Litauen. Festpreis.