steuerpilot · validation API liveonline

Validate German tax returns against the official ELSTER SDK. Steuererklärungen gegen das offizielle ELSTER-SDK prüfen.

Send tax-return XML, get back ELSTER's own plausibility verdict and the official PDF rendering — the same checks Mein ELSTER runs before it accepts a filing. XML einer Steuererklärung senden, ELSTERs eigene Plausibilitätsprüfung und das amtliche PDF zurückbekommen — dieselben Prüfungen, die Mein ELSTER vor der Abgabe durchführt.

Validation only — nothing is ever transmitted to the Finanzamt. Nur Validierung — es wird niemals etwas an das Finanzamt übermittelt.
This service holds no certificates and contains no transmission code. Filing, if you choose it, happens exclusively on your own machine with your own ELSTER certificate. Dieser Dienst besitzt keine Zertifikate und enthält keinen Übermittlungscode. Die Abgabe erfolgt — wenn gewünscht — ausschließlich auf Ihrem eigenen Rechner mit Ihrem eigenen ELSTER-Zertifikat.

Part of the open-source steuer plugin for Claude Code. An API key is required; keys are currently issued manually — open an issue to request one. Teil des Open-Source-Plugins steuer für Claude Code. Ein API-Key ist erforderlich; Keys werden derzeit manuell vergeben — Issue eröffnen, um einen anzufragen.

How it worksSo funktioniert es

  1. You send XMLSie senden XML One ELSTER dataset per request, over HTTPS, key-gated. Ein ELSTER-Datensatz pro Anfrage, über HTTPS, per Key geschützt.
  2. ERiC checks itERiC prüft ihn The official SDK runs its full schema and plausibility checks in Frankfurt (eu-central-1), in memory. Das offizielle SDK führt alle Schema- und Plausibilitätsprüfungen in Frankfurt (eu-central-1) im Arbeitsspeicher aus.
  3. You get the verdictSie erhalten das Ergebnis Result code, every hint verbatim, and optionally the official PDF. Ergebniscode, jeder Hinweis im Wortlaut, optional das amtliche PDF.

Quick startSchnellstart

curl -s https://steuer.flykit.cc/api/validate \
  -H "x-api-key: $KEY" \
  -H "content-type: application/json" \
  -d '{
    "xml":      "<Elster>…</Elster>",
    "datenart": "ESt_2025",
    "pdf":      true
  }'

EndpointsEndpunkte

GET/api/health

Service check. Returns ok and the loaded ERiC library version. Dienstprüfung. Liefert ok und die geladene ERiC-Bibliotheksversion.

POST/api/validate

FieldFeld TypeTyp DescriptionBeschreibung
xmlstring The complete ELSTER dataset. Any <HerstellerID> you send is replaced server-side — you never need a vendor ID. Der vollständige ELSTER-Datensatz. Eine mitgesendete <HerstellerID> wird serverseitig ersetzt — Sie benötigen keine eigene Hersteller-ID.
datenartstring Form and year, e.g. ESt_2025, EUER_2025, USt_2025. Case-sensitive. Formular und Jahr, z. B. ESt_2025, EUER_2025, USt_2025. Groß-/Kleinschreibung ist relevant.
pdfboolean Optional. Also render the official PDF (returned base64-encoded, with a Testfall watermark). Optional. Zusätzlich das amtliche PDF erzeugen (Base64-codiert, mit Testfall-Wasserzeichen).

ResponseAntwort

{ "ok": true, "code": 610001003, "messages": ["…"], "pdf_base64": "…" }
StatusMeaningBedeutung
200 Valid. code is 0, or 610001003 — valid with hints the Finanzamt may look at; read messages. Gültig. code ist 0 oder 610001003 — gültig mit Hinweisen, die das Finanzamt prüfen kann; siehe messages.
400 Missing xml or datenart. xml oder datenart fehlt.
401 Missing or wrong x-api-key. x-api-key fehlt oder ist falsch.
422 ELSTER rejected the dataset. messages carries every validation error verbatim — field paths included. ELSTER hat den Datensatz abgelehnt. messages enthält jeden Prüfungsfehler im Wortlaut — inklusive Feldpfaden.
5xx Service problem — retry; nothing was stored either way. Dienstproblem — erneut versuchen; gespeichert wurde in keinem Fall etwas.

FAQ

Is my tax data stored anywhere? Werden meine Steuerdaten irgendwo gespeichert? No. The XML is processed in memory and gone when the response is sent. There is no database, no file storage, and logs never contain request content — only form type, result code and duration. Nein. Das XML wird im Arbeitsspeicher verarbeitet und ist mit der Antwort verworfen. Es gibt keine Datenbank, keinen Dateispeicher, und Logs enthalten niemals Anfrageinhalte — nur Formulartyp, Ergebniscode und Dauer.
Can this service file my tax return? Kann dieser Dienst meine Steuererklärung abgeben? No — by construction. The deployed code contains no certificate handling and no transmission path. Filing happens on your own machine with your own ELSTER certificate, or manually via Mein ELSTER. Nein — konstruktionsbedingt. Der Code enthält keinerlei Zertifikatsverarbeitung und keinen Übermittlungspfad. Die Abgabe erfolgt auf Ihrem eigenen Rechner mit Ihrem eigenen ELSTER-Zertifikat oder manuell über Mein ELSTER.
What does code 610001003 mean? Was bedeutet Code 610001003? "Valid, with hints" — ELSTER accepted the dataset but attached notes the Finanzamt may look at (for example, entries that trigger a manual check). Read messages; it is a pass, not an error. „Gültig, mit Hinweisen" — ELSTER akzeptiert den Datensatz, fügt aber Hinweise an, die das Finanzamt prüfen kann (z. B. Angaben, die eine manuelle Prüfung auslösen). Lesen Sie messages; es ist ein Bestehen, kein Fehler.
Which forms are supported? Welche Formulare werden unterstützt? Currently ESt (income tax), EÜR (profit calculation) and USt (VAT) for 2025. The underlying SDK supports far more — further forms and years are enabled on request. Derzeit ESt, EÜR und USt für 2025. Das zugrunde liegende SDK unterstützt deutlich mehr — weitere Formulare und Jahre werden auf Anfrage freigeschaltet.

PrivacyDatenschutz

Disclaimer