BillySSW · Documentazione API

Riferimento errori

I codici HTTP, il corpo JSON di ciascun tipo di errore e i codici di dominio restituiti dall'API fiscale.

Accept: application/json

Invia sempre l'header Accept: application/json.

Codici HTTP

CodiceQuando si verifica
200Richiesta completata.
202Richiesta accettata ed elaborata in modo asincrono (es. segnalazione di inattività).
400Richiesta non elaborabile per un motivo diverso dalla validazione.
401Access token assente, scaduto o non valido, oppure utente non abilitato su Billy.
403Token valido ma operazione non consentita: scope non concesso o ruolo dell'utente insufficiente.
404Risorsa inesistente. Anche un PEM che esiste ma non appartiene all'esercente del token risponde 404.
409Operazione incompatibile con lo stato attuale: PEM non nello stato richiesto, Journal o documento in uno stato che non la consente.
422Payload non valido (validazione) o dato rifiutato dalle regole fiscali.
429Troppe richieste dallo stesso indirizzo IP: sul link pubblico al PDF del documento oltre 60 al minuto, sulla richiesta di registrazione dell'esercente oltre 5 al minuto o 20 all'ora.
500Errore interno, non dipendente dalla richiesta.
502Un servizio a valle (Punto di Elaborazione o identity provider) non ha risposto come atteso.

Autenticazione (401)

Il campo error dice cosa fare: rinnovare il token o ripetere l'autorizzazione dell'esercente.

401 · token scaduto
{
  "success": false,
  "message": "Il token di accesso è scaduto.",
  "error": "token_expired"
}
errorSignificatoAzione
token_expiredAccess token scaduto.Rinnovarlo con il refresh token e ripetere la richiesta.
token_invalidFirma, emittente, audience o claim obbligatori non validi.Ottenere un nuovo token con il flusso di autorizzazione.
unauthenticatedHeader Authorization assente, oppure l'utente del token non è abilitato su Billy. Questo corpo non ha il campo success.Verificare l'header; se persiste, contattare il supporto Sender.

Accesso e stato del PEM (403, 404, 409)

HTTPCorpoQuando
403{"success": false, "message": "Richiesta non autorizzata"}Scope mancante, token di un utente che non è esercente né operatore, ruolo insufficiente per l'operazione.
404{"success": false, "message": "Il PEM specificato non è stato trovato."}Seriale inesistente o PEM di un altro esercente (per un operatore: un PEM diverso dal suo).
404{"success": false, "message": "La risorsa richiesta non è stata trovata."}Altra risorsa inesistente (richiesta, documento gestionale, rotta).
409{"message": "Questa richiesta può essere elaborata solo da un PEM In servizio"}Emissione, chiusura o cambio dell'opzione buoni pasto su un PEM non In servizio.

Validazione (422)

message riporta il primo errore, errors tutti, per campo. Le regole con un testo dedicato rispondono in italiano, le altre con il messaggio predefinito in inglese: basa la logica del client sulle chiavi di errors, non sul testo.

422 · validazione
{
  "success": false,
  "message": "La somma degli importi dei pagamenti è inferiore al totale da pagare",
  "errors": {
    "pagamenti": [
      "La somma degli importi dei pagamenti è inferiore al totale da pagare"
    ]
  }
}

Codici di dominio

Gli errori del dominio fiscale portano un codice stabile in error_code, senza il campo success. La tabella elenca quelli che un client può ricevere.

409 · codice di dominio
{
  "error_code": "JN002",
  "message": "Apertura effettuata da più di 24 ore (ID: 42, Data: 2026-10-07 08:00:00)"
}
CodiceHTTPSignificato e azione
JN001409Catena hash del Journal non valida. Contattare il supporto.
JN002409Giornata aperta da più di 24 ore: eseguire la chiusura di cassa prima di emettere.
JN003404Nessun Journal da chiudere.
JN004502Il PEL non ha aperto la nuova giornata durante l'emissione. Il documento non è emesso: riprovare con la stessa idempotency_key.
JN005409Documenti commerciali ancora in attesa di invio al PEL: riprovare la chiusura dopo qualche istante.
JN006409Chiusura già effettuata.
JN007 · JN008409Stato del Journal incoerente con l'operazione. Contattare il supporto.
JN009 · JN010422Journal non ancora chiuso, oppure chiuso ma non ancora inviato al PEL.
JN011409PEM già dismesso.
JN013409Numerazione dei DC esaurita: la giornata è stata chiusa d'ufficio. Ripetere l'emissione, che riparte da una nuova serie.
JN014409Numerazione dei Journal esaurita: il PEM è dismesso.
JN015409Cambio sede approvato: l'emissione è sospesa fino alla chiusura di cassa.
PL001come il PELIl Punto di Elaborazione ha rifiutato la richiesta; message ne riporta il motivo.
XM001422Documento non conforme allo schema XML dell'AdE.
AE002422L'AdE ha restituito errori sulla richiesta; message riporta i codici della Code List AdE.
DC001404Documento commerciale, o riga del documento, non trovato.
DC002409Il documento indicato non è una vendita: non si può annullare.
DC003409Documento già annullato.
DC004409Annullo o reso di un documento di un altro dispositivo datato dopo l'attivazione del PEM.
DC005409Documento non valido per il reso.
DC006409Quantità resa superiore a quella ancora rendibile.
DC007409Le righe di servizio non sono ammesse al reso.
BP001422L'opzione buoni pasto si cambia solo a cassa chiusa: eseguire la chiusura e riprovare.