Zum Inhalt springen

Fehlercodes-Referenz

Diese Seite ist die zentrale Referenz für Fehlerantworten über alle fiskaly-APIs hinweg. Verwenden Sie den interaktiven Explorer unten, um Fehler zu suchen und zu filtern, oder scrollen Sie nach unten für die statischen Referenztabellen.

36 errors found


Beginnen Sie mit dem Fehlerbehebungs-Entscheidungsbaum, wenn Sie einen Fehler haben und eine schnelle Antwort benötigen, oder durchsuchen Sie die produktspezifischen Tabellen unten für detaillierte Fehlercodes.

Alle fiskaly-APIs geben Fehler in einem einheitlichen JSON-Format zurück:

{
"status_code": 400,
"error": "Bad Request",
"code": "E_SOME_ERROR",
"message": "Eine für Menschen lesbare Beschreibung des Fehlers"
}
FeldTypBeschreibung
status_codeintegerHTTP-Statuscode
errorstringHTTP-Statustext
codestringfiskaly-spezifischer Fehlercode (mit E_-Präfix)
messagestringFür Menschen lesbare Fehlerbeschreibung
CodeBedeutungWann Sie ihn sehen
200OKAnfrage erfolgreich, Antwort-Body enthält das Ergebnis
201CreatedRessource erfolgreich erstellt
204No ContentAnfrage erfolgreich, kein Antwort-Body (z. B. DELETE-Vorgänge)

Diese weisen auf ein Problem mit Ihrer Anfrage hin. Wiederholen Sie nicht mit demselben Payload — beheben Sie zuerst das Problem.

CodeBedeutungHäufige Ursachen
400Bad RequestFehlerhaftes JSON, fehlende Pflichtfelder, ungültige Feldwerte
401UnauthorizedAbgelaufener oder fehlender Access-Token, ungültige API-Zugangsdaten
403ForbiddenUnzureichende Berechtigungen für die angeforderte Ressource
404Not FoundRessource existiert nicht oder falscher URL-Pfad
409ConflictRessource existiert bereits (doppelter Erstellungsversuch)
422Unprocessable EntityGültiges JSON, aber semantisch falsch (z. B. ungültiger Zustandsübergang)
423LockedRessource ist derzeit durch einen anderen Vorgang gesperrt
429Too Many RequestsRate Limit überschritten — zurückhalten und mit exponentiellem Delay wiederholen

Diese weisen auf ein vorübergehendes Problem auf fiskaly-Seite hin. Sicher zum Wiederholen mit exponentiellem Backoff.

CodeBedeutungAktion
500Internal Server ErrorNach kurzer Verzögerung wiederholen; bei Persistenz status.fiskaly.com prüfen
502Bad GatewayUpstream-Dienst vorübergehend nicht verfügbar; wiederholen
503Service UnavailableDienst vorübergehend für Wartung nicht verfügbar; wiederholen
504Gateway TimeoutAnfrage upstream abgelaufen; mit längerem Timeout wiederholen

Dies sind die häufigsten Fehler, die Entwickler während der Integrierung begegnen.

FehlercodeHTTP-StatusUrsacheBehebung
E_UNAUTHORIZED_ACCESS401Access-Token abgelaufen oder nicht angegebenMit API Key und Secret erneut authentifizieren
E_INVALID_CREDENTIALS401API Key oder Secret ist falschZugangsdaten im HUB prüfen
E_TOKEN_EXPIRED401JWT Access-Token ist abgelaufenRefresh-Token verwenden oder erneut authentifizieren
E_ACCESS_FORBIDDEN403Ihr API Key hat keine Berechtigung für diese RessourceAPI Key-Berechtigungen im HUB prüfen
API Key + Secret → POST /auth → access_token (24h) + refresh_token (48h)
├── Für alle API-Aufrufe verwenden
└── Bei 401 → erneut authentifizieren (nicht bei jeder Anfrage)
FehlercodeHTTP-StatusUrsacheBehebung
E_TSS_NOT_FOUND404TSS-ID existiert nichtTSS-ID prüfen; alle TSS über GET /tss auflisten
E_TSS_NOT_INITIALIZED400TSS wurde noch nicht initialisiertAlle notwendigen Schritte ausführen: TSS erstellen, auf UNINITIALIZED aktualisieren, Admin-PIN setzen, als Admin einloggen und TSS auf INITIALIZED setzen
E_TSS_DISABLED400TSS wurde deaktiviertTSS kann keine Transaktionen mehr signieren, neues TSS erstellen
E_TSS_IN_USE409TSS wird durch eine andere Anfrage geändertWarten und wiederholen
E_CLIENT_NOT_FOUND404Client-ID existiert nicht für dieses TSSClient über PUT /tss/{tss_id}/client/{client_id} erstellen
E_CLIENT_NOT_REGISTERED400Client existiert, ist aber nicht registriertClient vor dem Erstellen von Transaktionen registrieren
E_TX_NOT_FOUND404Transaktions-ID existiert nichtTransaktions-ID und TSS-Kontext prüfen
E_TX_INVALID_STATE422Transaktion ist in einem Zustand, der diesen Vorgang nicht erlaubtAktuellen Transaktionszustand prüfen; Zustandsautomat befolgen
E_EXPORT_NOT_FOUND404Export-ID existiert nichtExport-ID prüfen; Exporte benötigen möglicherweise Zeit zur Verarbeitung
E_EXPORT_IN_PROGRESS409Export wird noch generiertExport-Status abfragen bis state: COMPLETED
FehlercodeHTTP-StatusUrsacheBehebung
E_ESTABLISHMENT_NOT_FOUND404Betriebsstätten-ID nicht gefundenPrüfen, ob die Betriebsstätte für Ihre Organisation existiert
E_TAXPAYER_NOT_FOUND404Steuerpflichtigen-Datensatz nicht gefundenZuerst Steuerpflichtigen-Ressource erstellen
E_TAXPAYER_ADDRESS_NOT_FOUND404Steuerpflichtigen-Adresse nicht konfiguriertAdressdaten zur Steuerpflichtigen-Ressource hinzufügen
E_TAXPAYER_PERSON_NOT_FOUND404Steuerpflichtigen-Personen-Datensatz fehltPersonendaten zur Steuerpflichtigen-Ressource hinzufügen
E_SUBMISSION_NOT_FOUND404Einreichungs-ID nicht gefundenEinreichungs-ID prüfen; sicherstellen, dass die Einreichung erstellt wurde
E_CLIENT_ADDITIONAL_DATA_NOT_FOUND404Zusätzliche Client-Daten fehlenErforderliche zusätzliche Daten für den Client bereitstellen
E_LOCKED_RESOURCE423Ressource durch einen laufenden Vorgang gesperrtAuf den Abschluss des aktuellen Vorgangs warten, dann wiederholen
FehlercodeHTTP-StatusUrsacheBehebung
E_CASH_REGISTER_NOT_FOUND404Kassensystem nicht gefundenKassensystem zuerst über die DSFinV-K-API erstellen
E_CASH_POINT_CLOSING_NOT_FOUND404Kassenabschluss nicht gefundenAbschluss-ID prüfen
E_VAT_DEFINITION_NOT_FOUND404Mehrwertsteuerdefinition nicht konfiguriertMwSt-Definitionen vor dem Einfügen von Abschlüssen erstellen
E_INVALID_CLOSING_DATA400Abschluss-Payload entspricht nicht dem erwarteten SchemaIhren Payload gegen die DSFinV-K-Spezifikation validieren

Diese Fehler werden über alle Unified API-Produkte hinweg geteilt (SIGN FR, SIGN IT, SIGN ES). Alle drei APIs verwenden dieselbe Authentifizierungs-, Organisations- und Ressourcenverwaltungsschicht.

FehlercodeHTTP-StatusUrsacheBehebung
E_ORGANIZATION_NOT_FOUND404Organisations-ID existiert nichtOrg-ID prüfen; sicherstellen, dass sie unter der richtigen GROUP erstellt wurde
E_TAXPAYER_NOT_COMMISSIONED400Steuerpflichtiger existiert, Zustand ist nicht COMMISSIONEDSteuerpflichtigen-Zustand auf COMMISSIONED aktualisieren, bevor Vorgänge durchgeführt werden
E_IDEMPOTENCY_KEY_REUSED409Idempotenz-Key wurde bereits für eine andere Anfrage verwendetNeue UUID für jede neue Anfrage generieren
E_API_VERSION_NOT_SUPPORTED400X-Api-Version-Header enthält nicht unterstütztes DatumAktuellste unterstützte Version verwenden (z. B. 2026-02-03)
E_SCOPE_IDENTIFIER_MISSING400X-Scope-Identifier-Header nicht angegebenOrganisations-ID in X-Scope-Identifier einfügen
E_SUBJECT_NOT_FOUND404Subject (API Key) nicht gefundenPrüfen, ob Subject unter der richtigen Organisation erstellt wurde
E_TOKEN_INVALID401Token ist fehlerhaft oder abgelaufenErneut über POST /api/v1/auth/token authentifizieren
E_LOCATION_NOT_COMMISSIONED400Standort existiert, ist aber nicht in BetriebStandort-Zustand auf COMMISSIONED aktualisieren
E_SYSTEM_NOT_COMMISSIONED400System existiert, ist aber nicht in BetriebSystem-Zustand auf COMMISSIONED aktualisieren
FehlercodeHTTP-StatusUrsacheBehebung
E_RECORD_INVALID_OPERATION422Datensatz-Vorgangstyp für aktuellen Zustand ungültigIntention → Transaction-Ablauf prüfen; korrekte Reihenfolge sicherstellen
E_RECORD_INTENTION_REQUIRED400Transaktionsdatensatz ohne vorherige Intention erstelltZuerst einen Intentions-Datensatz erstellen, dann seine ID referenzieren
E_TAXPAYER_CREDENTIALS_INVALID400Französische Fiskalisierungs-Zugangsdaten (NF 525) ungültigtax_id_number (SIREN) und Zugangsdaten prüfen
E_CLOSURE_IN_PROGRESS409Ein Fiskalabschluss läuft bereitsAuf den Abschluss des aktuellen Abschlusses warten
FehlercodeHTTP-StatusUrsacheBehebung
E_RT_DEVICE_NOT_FOUND404Registratore Telematico-Gerät nicht gefundenPrüfen, ob das RT-Gerät erstellt und in Betrieb genommen wurde
E_RT_SUBMISSION_FAILED502Einreichung bei Agenzia delle Entrate fehlgeschlagenWiederholen; bei Persistenz AdE-Dienststatus prüfen
E_LOTTERY_CODE_INVALID400Belegslotterie-Code-Format ungültigSicherstellen, dass der Lotterie-Code 8 alphanumerische Zeichen hat
E_FISCAL_CODE_INVALID400Italienisches Codice fiscale-Format falsch16-stelliges Fiskalcode-Format prüfen

SIGN ES gibt Validierungsfehler in einem validations-Array in der Antwort zurück, jedes mit einem code und einer description. Diese sind spezifisch für TicketBAI / Verifactu / SII-Einreichungen.

ValidierungscodeUrsache
V_TICKETBAIUnbekannter oder unbehandelter Fehler von TicketBAI
V_XSD_SCHEMA_NOT_COMPLYXML-Datei entspricht nicht dem XML-Schema
V_INVOICE_WITHOUT_LINESXML-Datei enthält keine Detailzeilen
V_REQUIRED_FIELD_MISSING_OR_INCORRECTPflichtdaten fehlen oder sind falsch
V_INVOICE_ALREADY_REGISTEREDRechnung mit derselben Nummer/Serie/Jahr wurde bereits registriert
V_SERVICE_NOT_AVAILABLEEmpfangsdienst ist nicht verfügbar
V_INCORRECT_SENDER_CERTIFICATEAbsender-Zertifikat ist unbekannt
V_INVALID_SENDER_CERTIFICATEAbsender-Zertifikat ist nicht gültig
V_WRONG_SIGNATURESignaturvalidierung fehlgeschlagen
V_INCORRECT_INVOICE_CHAININGRechnungsverkettung war falsch
V_INVALID_TBAI_LICENSETicketBAI-Lizenz nicht registriert oder ungültig
V_DEVICE_NOT_REGISTEREDGerätezertifikat zum Senden ist noch nicht registriert
V_EXPIRED_SIGNATURE_CERTIFICATEZum Signieren der TicketBAI-Datei verwendetes Zertifikat ist abgelaufen
V_EXPIRED_SENDER_CERTIFICATEAbsender-Zertifikat ist nicht gültig oder abgelaufen
V_EXPIRED_SIGNER_CERTIFICATEZum Signieren verwendetes Zertifikat ist nicht gültig oder abgelaufen
V_FULL_AMOUNT_MISMATCHSumme der Zeilen-full_amount-Einträge stimmt nicht mit der Rechnungs-full_amount überein
V_ISSUE_DATE_OUT_OF_RANGEAusstellungsdatum ist älter als 20 Jahre oder liegt in der Zukunft
V_INVALID_VAT_RATEMehrwertsteuersatz ist kein gültiger Wert für die Region des Steuerpflichtigen
V_INVOICE_ALREADY_CANCELLEDRechnung wurde bereits storniert
V_INVOICE_ALREADY_CORRECTEDRechnung wurde bereits korrigiert
V_INCOMPATIBLE_VAT_SYSTEMSBereitgestellte Rechnungssysteme sind nicht miteinander kompatibel
V_INCORRECT_ITEM_VAT_CALCULATIONEin Rechnungsposten hat eine falsch angewendete Mehrwertsteuerberechnung

Verschiedene Vorgänge haben unterschiedliche erwartete Dauern. Konfigurieren Sie Ihre Timeouts entsprechend:

VorgangEmpfohlenes TimeoutHinweise
Authentifizierung (POST /auth)3–4 SekundenSchneller Vorgang; blockiert nicht den Kassiervorgang
Transaktionssignierung (PUT /tx)3–5 SekundenSollte den POS niemals blockieren
TSS-Erstellung / -Initialisierung30 SekundenEinmalige Einrichtung; aufwändigere Verarbeitung
DSFinV-K-KassenabschlüsseBis zu 10 MinutenAufwändige Verarbeitung mit großen Datensätzen
Export-GenerierungPolling-basiertAsynchrones Polling verwenden, keine synchrone Wartezeit

Verwenden Sie für vorübergehende Fehler (5xx, Timeouts, Rate Limits) exponentiellen Backoff:

async function callWithRetry(fn, maxRetries = 3) {
for (let attempt = 0; attempt <= maxRetries; attempt++) {
try {
return await fn();
} catch (error) {
if (attempt === maxRetries) throw error;
const isRetryable =
error.status >= 500 ||
error.status === 429 ||
error.code === "ETIMEDOUT";
if (!isRetryable) throw error;
const delay = Math.min(1000 * 2 ** attempt, 30000);
await new Promise((r) => setTimeout(r, delay));
}
}
}
Einen Fehler erhalten?
├── 401 Unauthorized
│ └── Ist Ihr Token abgelaufen?
│ ├── Ja → Mit API Key + Secret erneut authentifizieren
│ └── Nein → Zugangsdaten im HUB prüfen
├── 400 Bad Request
│ └── Prüfen Sie das `message`-Feld, um zu sehen, welches Feld ungültig ist
│ └── Ihren JSON-Payload gegen das API-Schema validieren
├── 404 Not Found
│ └── Existiert die Ressource?
│ ├── ID prüfen (UUIDv4-Format)
│ └── Sicherstellen, dass die Ressource in der richtigen Umgebung erstellt wurde (TEST vs. LIVE)
├── 409 Conflict
│ └── Ressource existiert bereits oder wird geändert
│ └── GET verwenden, um aktuellen Zustand vor dem Wiederholen zu prüfen
├── 429 Rate Limited
│ └── Mit exponentiellem Delay zurückhalten
│ └── Prüfen, ob Sie sich bei jeder Anfrage neu authentifizieren (nicht tun)
└── 5xx Server Error
└── status.fiskaly.com prüfen
├── Bekannter Vorfall → Auf Lösung warten
└── Kein Vorfall → Mit exponentiellem Backoff wiederholen; bei Persistenz Support kontaktieren

Überwachen Sie den fiskaly-Dienststatus unter status.fiskaly.com.

Dies sind die Fehler, die der fiskaly-Support am häufigsten von Teams während ihrer ersten Integrierung sieht. Sie zu vermeiden spart erhebliche Debugging-Zeit.

FehlerWas passiertWie vermeiden
Erneute Authentifizierung bei jeder Anfrage429 Rate-Limit-Fehler; unnötige Latenz bei jedem KassiervorgangAccess-Token cachen (24h TTL). Nur bei 401 erneut authentifizieren.
admin_puk nicht gespeichertAdmin-PIN kann nicht am TSS gesetzt werden; verbleibt im Zustand UNINITIALIZEDDen admin_puk aus der TSS-Erstellungsantwort sofort speichern.
UUIDs wiederverwenden409 Conflict-Fehler beim Erstellen von TSS, Clients oder TransaktionenNeue UUIDv4 für jeden Ressourcen-Erstellungsaufruf generieren.
Kassiervorgang bei Signierungsfehler blockierenKunden warten unendlich, wenn das TSS langsam oder nicht verfügbar ist3–5 Sekunden Timeout für Signierungen setzen. Beleg mit “TSS nicht verfügbar” ausstellen und später wiederholen.
TEST-Zugangsdaten in LIVE verwenden (oder umgekehrt)401 Unauthorized — Zugangsdaten sind umgebungsbezogenPrüfen, ob Basis-URL zur Umgebung des API Keys passt. TEST und LIVE sind vollständig getrennt.
TSS-Initialisierung überspringen400 E_TSS_NOT_INITIALIZED beim Erstellen von Clients oder TransaktionenAlle notwendigen Schritte ausführen: TSS erstellen, auf UNINITIALIZED aktualisieren, Admin-PIN setzen, als Admin einloggen und TSS auf INITIALIZED setzen.
tx_revision nicht korrekt handhaben422 E_TX_INVALID_STATE oder doppelte TransaktionsfehlerMit tx_revision=1 beginnen (ACTIVE), mit tx_revision=2 abschließen (FINISHED). Immer inkrementieren.
Synchrones Export-PollingTimeouts bei DSFinV-K-Export-Generierung (kann bis zu 10 Minuten dauern)Asynchrones Polling verwenden: Export auslösen, dann Status-Endpunkt abfragen bis state: COMPLETED.
Timeouts fest kodierenEntwicklungsteam kann ohne Code-Release nicht anpassenTimeouts konfigurierbar machen (z. B. 1,5–5 Sekunden für Transaktionen). Admin-konfigurierbar ist ideal.

Was this page helpful?