Anmelden
Für Entwickler

REST-API & Webhooks für die Kfz-Zulassung.

Zulassung, Umschreibung und Abmeldung direkt aus Ihrem System: JSON über HTTPS, ein Endpunkt je Vorgangsart, Ergebnisse als signierte Ereignisse zurück. Ohne eigene KBA-Registrierung oder mit Ihrem eigenen KoPa-Schlüssel.

  • OpenAPI-Beschreibung
  • Signierte Webhooks
  • Doppelantragsschutz
Außerbetriebsetzung per API
# BASIS: Ihre API-Adresse aus dem Dashboard
curl -u "$API_LOGIN:$API_PASSWORT" \
  -H "Content-Type: application/json" \
  --data @antrag.json \
  "$BASIS/vehicleDeregistrations/deregistrations"

# antrag.json
{
  "externalOrderId": "bestellung-4711",
  "email": "kunde@example.de",
  "customization": {
    "productType": "VEHICLE_DEREGISTRATION",
    "licensePlateNumberComponents": {
      "usageType": "EURO", "city": "HN", "middle": "LL", "end": "2418"
    },
    "vehicleIdentificationNumber": "WBA65432113218654",
    "vehicleRegistrationCertificateSecurityCode": "8407251",
    "frontLicensePlateSecurityCode": "Vbg",
    "rearLicensePlateSecurityCode": "K7m",
    "licensePlateReservationIncluded": false,
    "contractPartner": "U123456"
  }
}
# contractPartner: ohne eigenen KoPa-Schlüssel Pflicht, Ihre Vertragspartnernummer

# Antwort 200 — das Ergebnis kommt per Webhook
{ "order": { "id": 1 } }
Schnellstart

Drei Schritte bis zum ersten Antrag.

Die Antwort auf einen Antrag kommt sofort und nennt die Auftragsnummer. Der Versand an das KBA läuft im Hintergrund; das Ergebnis erfahren Sie per Webhook oder über die Vorgangsauskunft.

  1. 1Dashboard

    API-Benutzer anlegen

    Nach der Freischaltung legen Sie im Dashboard einen API-Benutzer an. Die Basis-Adresse Ihres Mandanten zeigt das Dashboard unter „Anbindung".

  2. 2lesend

    Erster Aufruf

    GET /vehicleDeregistrations/orders?limit=1 legt nichts an und zeigt, ob Adresse und Anmeldung stimmen.

  3. 3schreibend

    Erster Antrag

    Zum Beispiel eine Außerbetriebsetzung wie oben. Die Antwort nennt die Auftragsnummer order.id, mit der Sie später abfragen.

Endpunkte

Ein Endpunkt je Vorgangsart.

Die Vorgangsart steckt im Pfad, nicht im Rumpf. Umschreibung, Wiederzulassung, Neu- und Tageszulassung teilen sich ein Anfrageformat. Alle sieben Vorgangsarten sind seit dem 14.09.2026 vom KBA freigeschaltet.

POST/vehicleRegistrations/registrationsNeuzulassung (NZ)
POST/vehicleRegistrations/dayRegistrationsTageszulassung (TZ)
POST/vehicleTransfers/transfersUmschreibung (UG)
POST/vehicleReRegistrations/reRegistrationsWiederzulassung (WG)
POST/vehicleReRegistrations/sameHolderReRegistrationsWiederzulassung auf denselben Halter (WZ)
POST/vehicleHolderChanges/holderChangesHalteränderung — neue Anschrift (HA)
POST/vehicleDeregistrations/deregistrationsAußerbetriebsetzung (AB)
POST/powerOfAttorneysVollmachtsvorgang anlegen, liefert den Signaturlink
POST/gksConfigurationsEigenen KoPa-Schlüssel samt Zertifikat hinterlegen
GET/powerOfAttorneys/{processId}Stand des Vollmachtsvorgangs
GET/{prefix}/ordersAuftragsliste mit Filtern, etwa nach Stand oder Änderungszeitpunkt
GET/{prefix}/orders/{orderId}Vorgangsauskunft mit Stand, Meldungen und Belegen
GET/{prefix}/files/content/{fileAccessKey}Beleg herunterladen
GET/registrationOffices/{districtKey}/availabilityErreichbarkeit einer Zulassungsbehörde
GET/serviceStatusGemeldete Störungen und angekündigte Wartungen

Pfade relativ zur Basis-Adresse Ihres Mandanten. {prefix} ist der Pfadanfang der Vorgangsart, etwa vehicleTransfers. Alle Felder und Antwortcodes stehen in der Dokumentation nach Anmeldung.

Webhooks

Jeder Zustandswechsel als signiertes Ereignis.

Das erste Ereignis entsteht mit der Quittung des KBA, weitere folgen mit dem Bescheid und nachgereichten Belegen. Je Vorgangsgruppe gibt es einen eigenen Ereignistyp, einzeln abonnierbar.

  • Signatur: X-Signature als HMAC-SHA256 über den Rohtext des Rumpfs, dazu X-Webhook-Id, X-Event-Id und X-Webhook-Version.
  • Zustellung: mindestens einmal. Ohne 2xx gibt es insgesamt bis zu sieben Zustellversuche über rund 31 Stunden; danach lässt sich das Ereignis im Dashboard erneut anstoßen.
  • Duplikate erkennen: Jede Wiederholung trägt dieselbe X-Event-Id und einen bitgleichen Rumpf.
  • Zuordnung: order.id, Ihre order.externalId, attemptOf und attempt für Korrekturversuche, dazu licensePlate und files[].
  • Test: Ein PING von Hand aus dem Dashboard prüft Erreichbarkeit und Signaturprüfung.
statusBedeutung
ACCEPTEDDas KBA hat den Antrag angenommen.
FORWARDEDAn die zuständige Zulassungsbehörde weitergeleitet.
APPROVED / APPROVED_WITH_DOCUMENTSPositiv beschieden, mit Belegen: Bescheid, vorläufiger Nachweis.
REJECTED / REJECTED_WITH_DOCUMENTSAbgelehnt, mit Code und Klartext in messages[].
FAILEDGescheitert; retryable zeigt, ob es nur vorübergehend war.
signatur.mjs
// X-Signature: HMAC-SHA256 über den Rohtext des Rumpfs
import { createHmac, timingSafeEqual } from 'node:crypto';

export function signaturIstGueltig(rohtext, signatur, secret) {
  const erwartet = Buffer.from(createHmac('sha256', secret)
    .update(rohtext).digest('hex'));
  const erhalten = Buffer.from(String(signatur ?? ''));
  return erwartet.length === erhalten.length
    && timingSafeEqual(erwartet, erhalten);
}
Zuverlässigkeit

Gebaut für Anbindungen, die unbeaufsichtigt laufen.

Was Ihre Integration wissen muss, damit sie keinen Antrag doppelt stellt, keinen verliert und Störungen erkennt.

Doppelantragsschutz

Dieselbe externalOrderId mit derselben FIN löst innerhalb von 15 Minuten am selben Endpunkt keinen zweiten Antrag aus. Mit abweichenden Daten antwortet die Schnittstelle mit 409 und sendet nichts.

Abgleich statt Hoffen

Die Auftragsliste filtert nach Stand und changedSince. So holen Sie nach, was ein ausgefallener Webhook-Empfänger verpasst hat.

Beobachtbar

X-Trace-Id in jeder Antwort, /health ohne Anmeldung, /serviceStatus mit Störungen und Wartungen, retryable für vorübergehende Fehler.

Mit eigenem KoPa-Schlüssel

Unter Ihrer eigenen Registrierung übermitteln.

Haben Sie selbst einen Zugang zur Großkundenschnittstelle (GKS) des KBA: Kennung, KoPa-Schlüssel und Zertifikat hinterlegen Sie im Dashboard. Ihre Anträge gehen dann unter Ihrer Kennung hinaus. Die amtlichen Gebühren stellen Ihnen die Zulassungsbehörden und das KBA direkt in Rechnung.

Mit oder ohne KoPa-Schlüssel

  • Per API: POST /gksConfigurations nimmt dieselben Angaben entgegen wie das Dashboard.
  • Verbindung prüfen: ein Test der Anmeldung beim KBA, ohne einen Antrag zu stellen.
  • Wählen: Die zurückgegebene id geben Sie als gksConfigurationId im Antrag mit — auch für den Testzugang.
  • Gebührenbescheide: Sammelgebührenbescheide der Zulassungsbehörden kommen als Ereignis und sind abrufbar.
Häufige Fragen

Fragen zur Anbindung.

Wo finde ich die vollständige API-Dokumentation?
Unter api.kfz-api.de/docs — nach der Anmeldung mit Ihrem Kundenkonto. Dort stehen alle Endpunkte, Pflichtfelder, Fehlerfälle, Meldungscodes und die OpenAPI-Beschreibung.
Wie authentifiziert sich meine Anwendung?
Mit HTTP Basic Authentication. Im Dashboard legen Sie einen API-Benutzer an und erhalten Login und Passwort. Für einen Passwortwechsel ohne Ausfall legen Sie einen zweiten Benutzer an und schalten danach um.
Was passiert, wenn ich einen Antrag versehentlich zweimal sende?
Dieselbe externalOrderId mit derselben FIN löst innerhalb von 15 Minuten am selben Endpunkt keinen zweiten Antrag aus. Weichen die Daten ab, antwortet die Schnittstelle mit 409 und sendet nichts.
Kann ich vor dem Produktivbetrieb testen?
Ja. Einen Testzugang richten wir auf Anfrage ein; verwaltet wird er im Dashboard unter „API & Umgebungen". Wichtig: Solange ein Test- oder eigener Zugang hinterlegt ist, gehen Anträge ohne gksConfigurationId über ihn, bei einem Testzugang also nicht wirksam. Übermitteln Sie ohne eigenen KoPa-Schlüssel, stimmen wir den Testzugang deshalb vorher mit Ihnen ab. Bei mehreren Zugängen wählen Sie ihn je Antrag mit gksConfigurationId.
Brauche ich eine eigene Registrierung beim KBA?
Nein, Sie starten ohne eigene KBA-Registrierung — oder mit Ihrem eigenen KoPa-Schlüssel. Beide Wege im Vergleich.
Was kostet die API?
Die Schnittstelle selbst kostet nichts extra. Sie zahlen je Vorgang, ohne eigenen KoPa-Schlüssel etwa eine Abmeldung ab 6,35 € und eine Zulassung ab 33,20 €, netto inklusive amtlicher Gebühren. Ein übermittelter Vorgang wird auch dann berechnet, wenn er abgelehnt wird: unsere Leistung voll, amtliche Gebühren so, wie sie anfallen. Dazu kommen je vom KBA abgewiesener Übermittlung 0,12 € netto, auch bei einer späteren Korrektur. Alle Preise

Für Software-Anbieter: Zulassung als Funktion Ihres Produkts

Direkt starten

Konto erstellen und die vollständige Dokumentation lesen.

Nach der Anmeldung finden Sie alle Endpunkte, Felder und Meldungscodes. Keine Grundgebühr, keine Mindestabnahme, keine Laufzeit.

Preise netto zzgl. USt. Auch abgelehnte Vorgänge werden berechnet, je vom KBA abgewiesener Übermittlung zusätzlich 0,12 €. Details

Geprägte Kennzeichen mit Schlüsseln und Unterlagen auf einem Schreibtisch