Salta ai contenuti

Riferimento codici di errore

Questa pagina è il riferimento centralizzato per le risposte di errore di tutte le API fiskaly. Usa l’explorer interattivo qui sotto per cercare e filtrare gli errori, oppure scorri verso il basso per le tabelle di riferimento statiche.

36 errors found


Inizia dall’albero decisionale per la risoluzione dei problemi se hai un errore e hai bisogno di una risposta rapida, oppure consulta le tabelle specifiche per prodotto per i codici di errore dettagliati.

Tutte le API fiskaly restituiscono gli errori in un formato JSON consistente:

{
"status_code": 400,
"error": "Bad Request",
"code": "E_SOME_ERROR",
"message": "Una descrizione leggibile di cosa è andato storto"
}
CampoTipoDescrizione
status_codeinteroCodice di stato HTTP
errorstringaTesto di stato HTTP
codestringaCodice di errore specifico di fiskaly (prefissato con E_)
messagestringaDescrizione dell’errore leggibile
CodiceSignificatoQuando appare
200OKLa richiesta è riuscita; il corpo della risposta contiene il risultato
201CreatoRisorsa creata con successo
204Nessun contenutoLa richiesta è riuscita, nessun corpo di risposta (es. operazioni DELETE)

Questi indicano un problema con la tua richiesta. Non riprovare con lo stesso payload — correggi prima il problema.

CodiceSignificatoCause comuni
400Richiesta non validaJSON malformato, campi obbligatori mancanti, valori di campo non validi
401Non autorizzatoToken di accesso scaduto o mancante, credenziali API non valide
403ProibitoPermessi insufficienti per la risorsa richiesta
404Non trovatoLa risorsa non esiste, o percorso URL errato
409ConflittoLa risorsa esiste già (tentativo di creazione duplicata)
422Entità non processabileJSON valido ma semanticamente errato (es. transizione di stato non valida)
423BloccatoLa risorsa è attualmente bloccata da un’altra operazione
429Troppe richiesteLimite di frequenza superato — attendi e riprova con ritardo esponenziale

Questi indicano un problema temporaneo sul lato fiskaly. Sicuro da riprovare con backoff esponenziale.

CodiceSignificatoAzione
500Errore interno del serverRiprova dopo un breve ritardo; se persiste, controlla status.fiskaly.com
502Gateway non validoServizio upstream temporaneamente non disponibile; riprova
503Servizio non disponibileIl servizio è temporaneamente in manutenzione; riprova
504Timeout del gatewayLa richiesta è scaduta a monte; riprova con timeout maggiore

Questi sono gli errori più comuni che gli sviluppatori incontrano durante l’integrazione.

Codice di erroreStato HTTPCausaSoluzione
E_UNAUTHORIZED_ACCESS401Token di accesso scaduto o non fornitoRi-autenticati usando la tua chiave e il tuo segreto API
E_INVALID_CREDENTIALS401La chiave o il segreto API è erratoVerifica le credenziali nell’HUB
E_TOKEN_EXPIRED401Il token di accesso JWT è scadutoUsa il token di aggiornamento o ri-autenticati
E_ACCESS_FORBIDDEN403La tua chiave API non ha il permesso per questa risorsaControlla gli ambiti della chiave API nell’HUB
Chiave API + Segreto → POST /auth → access_token (24h) + refresh_token (48h)
├── Usa per tutte le chiamate API
└── Con 401 → ri-autenticati (non ad ogni richiesta)
Codice di erroreStato HTTPCausaSoluzione
E_TSS_NOT_FOUND404L’ID del TSS non esisteVerifica l’ID del TSS; elenca tutti i TSS tramite GET /tss
E_TSS_NOT_INITIALIZED400Il TSS non è ancora stato inizializzatoSegui tutti i passi necessari: crea il TSS, aggiornalo a UNINITIALIZED, imposta il PIN Admin, accedi come Admin e imposta il TSS a INITIALIZED
E_TSS_DISABLED400Il TSS è stato disabilitatoIl TSS non può più firmare transazioni; crea un nuovo TSS
E_TSS_IN_USE409Il TSS è in corso di modifica da un’altra richiestaAttendi e riprova
E_CLIENT_NOT_FOUND404L’ID del client non esiste per questo TSSCrea un client tramite PUT /tss/{tss_id}/client/{client_id}
E_CLIENT_NOT_REGISTERED400Il client esiste ma non è registratoRegistra il client prima di creare transazioni
E_TX_NOT_FOUND404L’ID della transazione non esisteVerifica l’ID della transazione e il contesto del TSS
E_TX_INVALID_STATE422La transazione è in uno stato che non permette questa operazioneControlla lo stato attuale della transazione; segui la macchina a stati
E_EXPORT_NOT_FOUND404L’ID di esportazione non esisteVerifica l’ID di esportazione; le esportazioni possono richiedere tempo per elaborarsi
E_EXPORT_IN_PROGRESS409L’esportazione è ancora in corso di generazioneSonda lo stato dell’esportazione fino a state: COMPLETED
Codice di erroreStato HTTPCausaSoluzione
E_ESTABLISHMENT_NOT_FOUND404ID stabilimento non trovatoVerifica che lo stabilimento esiste per la tua organizzazione
E_TAXPAYER_NOT_FOUND404Record del contribuente non trovatoCrea prima la risorsa contribuente
E_TAXPAYER_ADDRESS_NOT_FOUND404Indirizzo del contribuente non configuratoAggiungi dati di indirizzo alla risorsa contribuente
E_TAXPAYER_PERSON_NOT_FOUND404Record persona del contribuente mancanteAggiungi dati persona alla risorsa contribuente
E_SUBMISSION_NOT_FOUND404ID dichiarazione non trovatoVerifica l’ID dichiarazione; controlla che la dichiarazione sia stata creata
E_CLIENT_ADDITIONAL_DATA_NOT_FOUND404Dati aggiuntivi del client mancantiFornisci i dati aggiuntivi richiesti per il client
E_LOCKED_RESOURCE423La risorsa è bloccata da un’operazione in corsoAttendi il completamento dell’operazione corrente, poi riprova
Codice di erroreStato HTTPCausaSoluzione
E_CASH_REGISTER_NOT_FOUND404Registratore di cassa non trovatoCrea prima il registratore di cassa tramite l’API DSFinV-K
E_CASH_POINT_CLOSING_NOT_FOUND404Chiusura punto cassa non trovataVerifica l’ID di chiusura
E_VAT_DEFINITION_NOT_FOUND404Definizione IVA non configurataCrea le definizioni IVA prima di inserire le chiusure
E_INVALID_CLOSING_DATA400Il payload di chiusura non corrisponde allo schema attesoValida il tuo payload rispetto alla specifica DSFinV-K

Questi errori sono condivisi da tutti i prodotti dell’API Unificata (SIGN FR, SIGN IT, SIGN ES).

Codice di erroreStato HTTPCausaSoluzione
E_ORGANIZATION_NOT_FOUND404L’ID organizzazione non esisteVerifica l’ID org; assicurati sia stata creata sotto il GROUP corretto
E_TAXPAYER_NOT_COMMISSIONED400Il contribuente esiste ma il suo stato non è COMMISSIONEDAggiorna lo stato del contribuente a COMMISSIONED prima di operare
E_IDEMPOTENCY_KEY_REUSED409La chiave di idempotenza è già stata usata per un’altra richiestaGenera un nuovo UUID per ogni nuova richiesta
E_API_VERSION_NOT_SUPPORTED400L’header X-Api-Version contiene una data non supportataUsa la versione più recente supportata (es. 2026-02-03)
E_SCOPE_IDENTIFIER_MISSING400Header X-Scope-Identifier non fornitoIncludi l’ID organizzazione in X-Scope-Identifier
E_SUBJECT_NOT_FOUND404Subject (chiave API) non trovatoVerifica che il subject sia stato creato sotto l’organizzazione corretta
E_TOKEN_INVALID401Il token è malformato o scadutoRi-autenticati tramite POST /api/v1/auth/token
E_LOCATION_NOT_COMMISSIONED400La sede esiste ma non è comissionataAggiorna lo stato della sede a COMMISSIONED
E_SYSTEM_NOT_COMMISSIONED400Il sistema esiste ma non è commissionatoAggiorna lo stato del sistema a COMMISSIONED
Codice di erroreStato HTTPCausaSoluzione
E_RECORD_INVALID_OPERATION422Il tipo di operazione del record non è valido per lo stato correnteControlla il flusso Intention → Transaction; assicura la sequenza corretta
E_RECORD_INTENTION_REQUIRED400Record di transazione creato senza Intention precedenteCrea prima un record Intention, poi referenzia il suo ID
E_TAXPAYER_CREDENTIALS_INVALID400Le credenziali di fiscalizzazione francese (NF 525) non sono valideVerifica tax_id_number (SIREN) e le credenziali
E_CLOSURE_IN_PROGRESS409Una chiusura fiscale è già in corsoAttendi il completamento della chiusura corrente
Codice di erroreStato HTTPCausaSoluzione
E_RT_DEVICE_NOT_FOUND404Dispositivo Registratore Telematico non trovatoVerifica che il dispositivo RT sia stato creato e commissionato
E_RT_SUBMISSION_FAILED502Invio ad Agenzia delle Entrate fallitoRiprova; controlla lo stato del servizio AdE se persiste
E_LOTTERY_CODE_INVALID400Il formato del codice della lotteria degli scontrini non è validoAssicurati che il codice della lotteria sia di 8 caratteri alfanumerici
E_FISCAL_CODE_INVALID400Il formato del codice fiscale italiano è erratoVerifica il formato del codice fiscale di 16 caratteri

SIGN ES restituisce gli errori di validazione in un array validations nella risposta, ognuno con un code e una description. Questi sono specifici per le trasmissioni TicketBAI / Verifactu / SII.

Codice di validazioneCausa
V_TICKETBAIErrore sconosciuto o non gestito da TicketBAI
V_XSD_SCHEMA_NOT_COMPLYIl file XML non è conforme allo schema XML
V_INVOICE_WITHOUT_LINESIl file XML non include righe di dettaglio
V_REQUIRED_FIELD_MISSING_OR_INCORRECTDati obbligatori mancanti o errati
V_INVOICE_ALREADY_REGISTEREDUna fattura con lo stesso numero/serie/anno era già stata registrata
V_SERVICE_NOT_AVAILABLEIl servizio di ricezione non è disponibile
V_INCORRECT_SENDER_CERTIFICATEIl certificato del mittente è sconosciuto
V_INVALID_SENDER_CERTIFICATEIl certificato del mittente non è valido
V_WRONG_SIGNATURELa validazione della firma è fallita
V_INCORRECT_INVOICE_CHAININGL’incatenamento delle fatture era errato
V_INVALID_TBAI_LICENSELicenza TicketBAI non registrata o non valida
V_DEVICE_NOT_REGISTEREDIl certificato del dispositivo usato per l’invio è in attesa di registrazione
V_EXPIRED_SIGNATURE_CERTIFICATEIl certificato usato per firmare il file TicketBAI è scaduto
V_EXPIRED_SENDER_CERTIFICATEIl certificato del mittente non è valido o è scaduto
V_EXPIRED_SIGNER_CERTIFICATEIl certificato usato per la firma non è valido o è scaduto
V_FULL_AMOUNT_MISMATCHLa somma dei full_amount delle righe non è uguale al full_amount della fattura
V_ISSUE_DATE_OUT_OF_RANGELa data di emissione è precedente a 20 anni o è nel futuro
V_INVALID_VAT_RATEL’aliquota IVA non è un valore valido per la regione del contribuente
V_INVOICE_ALREADY_CANCELLEDLa fattura era già stata annullata
V_INVOICE_ALREADY_CORRECTEDLa fattura era già stata corretta
V_INCOMPATIBLE_VAT_SYSTEMSI sistemi IVA forniti non sono compatibili tra loro
V_INCORRECT_ITEM_VAT_CALCULATIONUn articolo della fattura ha un calcolo IVA applicato in modo errato

Le diverse operazioni hanno durate attese diverse. Configura i tuoi timeout di conseguenza:

OperazioneTimeout consigliatoNote
Autenticazione (POST /auth)3-4 secondiOperazione rapida; non bloccare il checkout
Firma transazione (PUT /tx)3-5 secondiNon dovrebbe mai bloccare il POS
Creazione / inizializzazione TSS30 secondiConfigurazione una tantum; elaborazione più pesante
Chiusure punto cassa DSFinV-KFino a 10 minutiElaborazione pesante con grandi dataset
Generazione esportazioneBasata su pollingUsa polling asincrono, non attesa sincrona

Per gli errori transitori (5xx, timeout, limiti di frequenza), usa il backoff esponenziale:

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));
}
}
}

Albero decisionale per la risoluzione dei problemi

Sezione intitolata “Albero decisionale per la risoluzione dei problemi”
Hai un errore?
├── 401 Unauthorized
│ └── Il tuo token è scaduto?
│ ├── Sì → Ri-autenticati con chiave API + segreto
│ └── No → Controlla le credenziali nell'HUB
├── 400 Bad Request
│ └── Controlla il campo `message` per sapere quale campo è non valido
│ └── Valida il tuo payload JSON rispetto allo schema API
├── 404 Not Found
│ └── La risorsa esiste?
│ ├── Controlla che l'ID sia corretto (formato UUIDv4)
│ └── Assicurati che la risorsa sia stata creata nell'ambiente corretto (TEST vs LIVE)
├── 409 Conflict
│ └── La risorsa esiste già o è in corso di modifica
│ └── Usa GET per controllare lo stato corrente prima di riprovare
├── 429 Rate Limited
│ └── Attendi con ritardo esponenziale
│ └── Controlla se ti stai ri-autenticando ad ogni richiesta (non farlo)
└── Errore 5xx del server
└── Controlla status.fiskaly.com
├── Incidente noto → Attendi la risoluzione
└── Nessun incidente → Riprova con backoff esponenziale; contatta il supporto se persiste

Monitora lo stato del servizio fiskaly su status.fiskaly.com.

Questi sono gli errori che il supporto fiskaly vede più spesso dai team durante la loro prima integrazione. Evitarli fa risparmiare molto tempo di debug.

ErroreCosa succedeCome evitarlo
Ri-autenticarsi ad ogni richiestaErrori di limite di frequenza 429; latenza non necessaria ad ogni checkoutMetti in cache l’access token (TTL 24h). Ri-autenticati solo con 401.
Non salvare il admin_pukImpossibile impostare il PIN Admin sul TSS; bloccato in stato UNINITIALIZEDSalva il admin_puk dalla risposta di creazione del TSS immediatamente.
Riutilizzare gli UUIDErrori 409 Conflict quando si creano TSS, client o transazioniGenera un nuovo UUIDv4 per ogni chiamata di creazione di risorse.
Bloccare il checkout su un fallimento di firmaI clienti aspettano indefinitamente se il TSS è lento o non disponibileImposta un timeout di 3-5 secondi sulla firma. Emetti la ricevuta con “TSS non disponibile” e riprova più tardi.
Usare credenziali TEST in LIVE (o viceversa)401 Unauthorized — le credenziali sono specifiche dell’ambienteVerifica che l’URL base corrisponda all’ambiente della chiave API. TEST e LIVE sono completamente separati.
Saltare l’inizializzazione del TSS400 E_TSS_NOT_INITIALIZED quando si creano client o transazioniSegui tutti i passi necessari: crea il TSS, aggiornalo a UNINITIALIZED, imposta il PIN Admin, accedi come Admin e imposta il TSS a INITIALIZED.
Non gestire correttamente tx_revision422 E_TX_INVALID_STATE o errori di transazione duplicataInizia con tx_revision=1 (ACTIVE), finisci con tx_revision=2 (FINISHED). Incrementa sempre.
Polling sincrono delle esportazioniTimeout nella generazione di esportazioni DSFinV-K (può richiedere fino a 10 minuti)Usa polling asincrono: avvia l’esportazione, poi sonda l’endpoint di stato fino a state: COMPLETED.
Hardcodare i timeoutIl team di sviluppo non può regolarli senza un rilascio di codiceRendi i timeout configurabili (es. 1,5-5 secondi per le transazioni). Regolabile dall’amministratore è l’ideale.

Was this page helpful?