API per sviluppatori
Pro, Team e prova gratuitaLe API REST di ScontrinoZero permettono di integrare l'emissione di scontrini elettronici direttamente nel tuo gestionale, POS o e-commerce. Ogni chiamata usa il collegamento all'Agenzia delle Entrate del tuo esercente (Fisconline o CIE) e trasmette il documento in tempo reale.
Prerequisiti
- Account ScontrinoZero con piano Pro o Team attivo, oppure in prova gratuita (la prova include l'accesso API con una chiave; su Pro e Team le chiavi attive sono al massimo 3). Alla scadenza della prova le chiavi smettono di autenticare e tornano attive passando a Pro o Team, senza rigenerarle.
- Credenziali AdE collegate in Impostazioni → Credenziali AdE: Fisconline oppure CIE. Con la CIE la sessione va rinnovata di tanto in tanto dall'app; finché non lo fai, l'API risponde 409 ADE_REAUTH_REQUIRED.
- Una chiave API di tipo business generata dalla dashboard: vai su Impostazioni → Altre impostazioni → API key, clicca + Nuova API key, assegnale un nome descrittivo (es. "POS principale"), clicca Genera e copia la chiave — sarà mostrata una sola volta.
Autenticazione
Includi la chiave API in ogni richiesta tramite l'header Authorization:
Authorization: Bearer szk_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXBase URL
https://api.scontrinozero.it/v1Sandbox
Per sviluppare e testare la tua integrazione senza emettere scontrini reali all'Agenzia delle Entrate, usa l'ambiente sandbox:
https://api-sandbox.scontrinozero.it/v1Il sandbox è identico alla produzione, ma ogni chiamata all'AdE è simulata — nessun documento viene trasmesso. Le risposte hanno la stessa struttura di quelle reali; il campo adeProgressive è fittizio e contiene il prefisso MOCK- (es. DCW2026/MOCK-1).
- Registra un account separato su sandbox.scontrinozero.it (non collegato alla produzione).
- Le credenziali Fisconline accettano qualsiasi valore nel sandbox.
- I dati sandbox possono essere resettati senza preavviso.
- La prova gratuita basta per generare una chiave e integrare. Per testare anche il flusso di abbonamento — o il limite di 3 chiavi dei piani Pro e Team — attiva Pro con una carta di test Stripe: numero
4242 4242 4242 4242, scadenza una qualsiasi data futura, CVC tre cifre qualsiasi. Nessun addebito: il sandbox usa Stripe in modalità test, e la stessa carta viene rifiutata in produzione. L'elenco completo delle carte di test (3D Secure, pagamenti rifiutati) è nella documentazione Stripe. - La chiave API sandbox inizia sempre con
szk_live_— è un token di accesso all'ambiente sandbox, non alla produzione.
Endpoint
| Metodo | Path | Descrizione |
|---|---|---|
| POST | /v1/receipts | Emetti uno scontrino |
| GET | /v1/receipts | Lista scontrini in un intervallo di date |
| GET | /v1/receipts/{id} | Recupera lo stato di uno scontrino |
| POST | /v1/receipts/{id}/void | Annulla uno scontrino |
| POST | /v1/receipts/{id}/return | Rende uno o più articoli (documento di reso) |
POST/v1/receipts
Emette uno scontrino elettronico e lo trasmette all'Agenzia delle Entrate.
Corpo della richiesta
| Campo | Tipo | Descrizione |
|---|---|---|
| lines | array (1–100) | Righe dello scontrino |
| lines[].description | string (1–200) | Descrizione del prodotto/servizio |
| lines[].quantity | number (> 0, ≤ 9999) | Quantità, max 3 decimali |
| lines[].grossUnitPrice | number (≥ 0) | Prezzo unitario IVA inclusa (€) |
| lines[].vatCode | string (enum) | Codice aliquota IVA (vedi tabella sotto) |
| lines[].lineDiscount | number (≥ 0, max 2 decimali), opzionale | Sconto di riga (Pro), in euro, sull'intera riga e non per pezzo: riduce la base imponibile e l'IVA. Non può superare grossUnitPrice × quantity. |
| paymentMethod | string (enum) | PC = contanti, PE = elettronico (carta, bancomat, bonifico). Alternativo a payments: indicane esattamente uno. |
| payments | array | assente | Pagamento misto (Pro): ripartisce l’incasso fra PC e PE, es. [{"type":"PC","amount":5},{"type":"PE","amount":15}]. La somma degli importi più lo sconto a pagare deve fare il totale delle righe. Col pagamento misto il codice lotteria non è ammesso. |
| idempotencyKey | string (UUID v4) | Chiave di idempotenza (vedi sezione Idempotenza) |
| lotteryCode | string (8 char [A-Z0-9]) | null | Codice lotteria scontrini (opzionale). Rilevante solo con PE e se il totale scontrino è ≥ 1,00 €; viene ignorato con PC. |
| globalDiscount | number (≥ 0, max 2 decimali), opzionale | Sconto a pagare (Pro), in euro: non riduce il corrispettivo né l'IVA, solo l'incassato (total − globalDiscount). Deve lasciare almeno un centesimo da incassare. Senza piano Pro: 402 PLAN_UPGRADE_REQUIRED. |
Esempio
curl -X POST https://api.scontrinozero.it/v1/receipts \
-H "Authorization: Bearer szk_live_XXXX" \
-H "Content-Type: application/json" \
-d '{
"lines": [
{
"description": "Pizza Margherita",
"quantity": 2,
"grossUnitPrice": 8.00,
"vatCode": "10"
},
{
"description": "Acqua naturale",
"quantity": 1,
"grossUnitPrice": 2.50,
"vatCode": "10"
}
],
"paymentMethod": "PE",
"idempotencyKey": "550e8400-e29b-41d4-a716-446655440000",
"lotteryCode": "ABCD1234"
}'Risposta — 201 Created
{
"documentId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"adeTransactionId": "151085589",
"adeProgressive": "DCW2026/5111-2188"
}GET/v1/receipts
Restituisce la lista paginata degli scontrini emessi nell'intervallo di date indicato. Utile per riconciliazione contabile, export periodico o sync verso sistemi gestionali.
Parametri query
| Parametro | Tipo | Req. | Descrizione |
|---|---|---|---|
| from | YYYY-MM-DD | Sì | Inizio intervallo (incluso, UTC) |
| to | YYYY-MM-DD | Sì | Fine intervallo (incluso, UTC). Max 31 giorni da from. |
| page | intero ≥ 1 | No | Pagina (default: 1) |
| limit | 1–100 | No | Risultati per pagina (default: 20, max: 100) |
| kind | SALE | VOID | RETURN | No | Filtra per tipo documento. Senza parametro restituisce vendite e annulli (SALE e VOID): i resi si elencano solo con kind=RETURN. |
| status | PENDING | ACCEPTED | VOID_ACCEPTED | REJECTED | ERROR | No | Filtra per stato del documento. Senza questo parametro l'elenco restituisce solo i documenti registrati all'Agenzia delle Entrate (ACCEPTED e VOID_ACCEPTED): usa status=PENDING per ritrovare gli scontrini rimasti in sospeso. |
Esempio
curl "https://api.scontrinozero.it/v1/receipts?from=2026-04-01&to=2026-04-30&limit=100" \
-H "Authorization: Bearer szk_live_XXXX"Se sono stati emessi più di 100 scontrini nel periodo, usa &page=2, &page=3, ecc. Il campo pagination.hasNextPage indica se esistono ulteriori pagine.
Risposta — 200 OK
{
"data": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"idempotencyKey": "550e8400-e29b-41d4-a716-446655440000",
"kind": "SALE",
"status": "ACCEPTED",
"adeTransactionId": "151085589",
"adeProgressive": "DCW2026/5111-2188",
"lotteryCode": null,
"globalDiscount": "0.00",
"paymentMethod": "PE",
"payments": null,
"total": "18.50",
"createdAt": "2026-04-05T10:00:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 100,
"total": 1,
"hasNextPage": false
}
}La risposta non include le righe di dettaglio. Per il contenuto completo di uno scontrino usa GET /v1/receipts/{id} (campo lines incluso).
GET/v1/receipts/{id}
Restituisce i dettagli e lo stato di uno scontrino emesso. Utile per verificare l'esito di un'emissione o per implementare l'idempotency check sul tuo client.
Esempio
curl https://api.scontrinozero.it/v1/receipts/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
-H "Authorization: Bearer szk_live_XXXX"Risposta — 200 OK
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"kind": "SALE",
"status": "ACCEPTED",
"idempotencyKey": "550e8400-e29b-41d4-a716-446655440000",
"adeTransactionId": "151085589",
"adeProgressive": "DCW2026/5111-2188",
"createdAt": "2026-03-26T10:00:00.000Z",
"paymentMethod": "PE",
"payments": null,
"lotteryCode": "ABCD1234",
"voidedDocumentId": null,
"returnedDocumentId": null,
"total": "18.50",
"globalDiscount": "0.00",
"lines": [
{
"description": "Pizza Margherita",
"quantity": "2.000",
"grossUnitPrice": "8.00",
"lineDiscount": "0.00",
"vatCode": "10",
"returnedQuantity": "1.000"
},
{
"description": "Acqua naturale",
"quantity": "1.000",
"grossUnitPrice": "2.50",
"lineDiscount": "0.00",
"vatCode": "10",
"returnedQuantity": "0.000"
}
]
}| Campo | Descrizione |
|---|---|
| kind | SALE (vendita), VOID (annullo) o RETURN (reso). |
| status | ACCEPTED, VOID_ACCEPTED, REJECTED, ERROR o PENDING. |
| paymentMethod | PC (contanti) o PE (elettronico), così come inviato in emissione. null sui documenti che non lo portano. |
| payments | Ripartizione dell'incassato fra più metodi (pagamento misto), con gli importi in euro come stringhe a 2 decimali. null sui documenti pagati con un metodo solo: lì vale paymentMethod. |
| lotteryCode | Codice lotteria scontrini, null se non fornito o se il metodo di pagamento è PC. |
| voidedDocumentId | Presente solo per documenti VOID: UUID del SALE che è stato annullato. |
| returnedDocumentId | Presente solo per documenti RETURN: UUID del SALE reso. |
| total | Totale calcolato dalle righe, con 2 decimali (es. "18.50"). |
| globalDiscount | Sconto a pagare applicato, stringa a 2 decimali, "0.00" se assente. total resta il corrispettivo pieno: l'incassato è total − globalDiscount. |
| lines[].quantity | Stringa con 3 decimali fissi (es. "2.000"). |
| lines[].grossUnitPrice | Stringa con 2 decimali fissi (es. "8.00"), in euro. |
| lines[].lineDiscount | Sconto della riga, stringa a 2 decimali ("0.00" senza sconto). total è già al netto degli sconti di riga. |
| lines[].returnedQuantity | Su un SALE, i pezzi della riga già resi con ScontrinoZero, stringa con 3 decimali (es. "1.000"); "0.000" sulle righe mai rese e sui documenti VOID e RETURN. I resi fatti dal portale dell'Agenzia qui non compaiono, ma il reso li conta comunque. |
POST/v1/receipts/{id}/void
Annulla uno scontrino precedentemente emesso. L'annullamento è irreversibile e viene trasmesso all'Agenzia delle Entrate.
Corpo della richiesta
| Campo | Tipo | Descrizione |
|---|---|---|
| idempotencyKey | string (UUID v4) | Chiave di idempotenza per l'annullamento |
Esempio
curl -X POST https://api.scontrinozero.it/v1/receipts/a1b2c3d4-e5f6-7890-abcd-ef1234567890/void \
-H "Authorization: Bearer szk_live_XXXX" \
-H "Content-Type: application/json" \
-d '{"idempotencyKey": "b2c3d4e5-f6a7-8901-bcde-f01234567890"}'Risposta — 200 OK
{
"voidDocumentId": "c3d4e5f6-a7b8-9012-cdef-012345678901",
"adeTransactionId": "151085590",
"adeProgressive": "DCW2026/5111-2189"
}POST/v1/receipts/{id}/return
Emette il documento commerciale di reso per uno o più articoli di uno scontrino (SALE) emesso con ScontrinoZero, e lo trasmette all'Agenzia delle Entrate. Il reso è irreversibile, può essere parziale e si può ripetere finché restano pezzi da rendere. Uno scontrino con almeno un reso non si può più annullare.
Corpo della richiesta
| Campo | Tipo | Descrizione |
|---|---|---|
| idempotencyKey | string (UUID v4) | Chiave di idempotenza del reso: una nuova per ogni reso |
| quantities | number[] | Pezzi da rendere per ogni riga, nello stesso ordine di lines in GET /v1/receipts/{id}; 0 per le righe che non rendi. Massimo 2 decimali, e mai oltre la differenza fra quantity e returnedQuantity della riga. |
Esempio
curl -X POST https://api.scontrinozero.it/v1/receipts/a1b2c3d4-e5f6-7890-abcd-ef1234567890/return \
-H "Authorization: Bearer szk_live_XXXX" \
-H "Content-Type: application/json" \
-d '{"idempotencyKey": "550e8400-e29b-41d4-a716-446655440002", "quantities": [1, 0]}'Risposta — 200 OK
{
"returnDocumentId": "e5f6a7b8-c9d0-1234-ef01-234567890123",
"adeTransactionId": "151085591",
"adeProgressive": "DCW2026/5111-2190"
}Il reso si legge poi con GET /v1/receipts/{returnDocumentId}: kind vale RETURN, total è l'importo reso (positivo) e lines sono i pezzi resi, con la loro quota di sconto di riga.
Codici IVA
Il campo vatCode accetta i seguenti valori:
| Valore | Aliquota | Regime |
|---|---|---|
| 4 | 4% | Ridotta (es. beni di prima necessità) |
| 5 | 5% | Ridotta (es. erbe aromatiche fresche, tartufi, cooperative sociali) |
| 10 | 10% | Ridotta (es. alimenti, ristorazione, turismo) |
| 22 | 22% | Ordinaria |
| N1 | 0% | Art. 15 DPR 633/72 — Escluso da IVA |
| N2 | 0% | Non soggetto a IVA |
| N3 | 0% | Non imponibile |
| N4 | 0% | Esente |
| N5 | 0% | Regime del margine |
| N6 | 0% | Altro non IVA |
Idempotenza
Ogni richiesta di emissione, annullamento e reso richiede un campo idempotencyKey: un UUID v4 univoco che identifichi quella specifica operazione.
Se invii la stessa richiesta due volte con lo stesso idempotencyKey (es. in seguito a un timeout di rete), il sistema restituisce il risultato dell'operazione originale senza emettere un secondo scontrino. Genera una nuova chiave per ogni scontrino distinto.
// Esempio generazione in JavaScript
const idempotencyKey = crypto.randomUUID();Rate limiting
Le finestre sono fisse e partono dalla prima richiesta: raggiunto il tetto, il contatore si azzera allo scadere della finestra (Retry-After indica i secondi mancanti). Emissione e lista hanno due finestre, un picco al minuto e una media oraria: vale la prima che si esaurisce. L'emissione conta per attività, non per chiave: tutte le chiavi e la cassa della stessa attività usano lo stesso contatore, perché trasmettono con la stessa utenza dell'Agenzia delle Entrate. Gli altri limiti sono per chiave API.
| Endpoint | Limite |
|---|---|
| POST /v1/receipts | 8 / minuto e 250 / ora, per attività |
| GET /v1/receipts | 20 / minuto e 120 / ora, per chiave |
| POST /v1/receipts/{id}/void | 20 richieste / ora |
| POST /v1/receipts/{id}/return | 20 richieste / ora |
Al superamento del limite ricevi una risposta 429 con header Retry-After che indica i secondi da attendere prima di riprovare.
Codici di errore
Tutti gli errori restituiscono lo stesso oggetto JSON, su qualsiasi endpoint e qualsiasi status:
{
"code": "PENDING_IN_PROGRESS",
"message": "Una richiesta con la stessa idempotencyKey è ancora in corso.",
"requestId": "9f1c2f5e-7b3a-4c1d-9e8f-2a6b0d4c7e11"
}code— stringa stabile: è il campo su cui costruire la logica del tuo client.message— testo pensato per una persona. Può cambiare senza preavviso: non farne parsing.requestId— identificativo della richiesta, presente anche nell'header X-Request-Id di tutte le risposte (successi inclusi). Citalo quando ci scrivi: ci permette di ritrovare la richiesta nei log.documentId— presente solo quando l'errore riguarda un documento già scritto: sugli esiti ancora aperti (ADE_UNAVAILABLE, DB_TIMEOUT, PENDING_IN_PROGRESS, VOID_PENDING_IN_PROGRESS, RETURN_PENDING_IN_PROGRESS) è l'id da interrogare con GET /v1/receipts/{id} per sapere come è andata a finire; su RETURN_SYNC_FAILED è l'id del reso, da citare quando ci scrivi. Sugli altri errori il campo non c'è.
Quando una risposta include l'header Retry-After, l'errore è temporaneo: attendi i secondi indicati e ripeti la richiesta identica, con la stessa idempotencyKey. Non generare mai una chiave nuova per un tentativo ripetuto: rischieresti un secondo scontrino, che non è più annullabile automaticamente.
| Status | Code | Causa |
|---|---|---|
| 400 | INVALID_BODY · VALIDATION_ERROR · INVALID_QUERY_PARAM · INVALID_ID | Richiesta non valida: corpo assente o non JSON, campo fuori schema (mancante, tipo errato, UUID non valido), oppure un parametro di query malformato — from/to mancanti o non in formato YYYY-MM-DD, intervallo oltre 31 giorni, page o limit non interi o minori di 1, kind diverso da SALE, VOID o RETURN; sul reso, quantities con valori negativi, con più di 2 decimali o tutti a zero. I valori malformati vengono rifiutati, non corretti in silenzio (un limit oltre 100 fa eccezione: viene ridotto a 100). |
| 401 | UNAUTHORIZED | Chiave API assente, non valida, revocata o scaduta. |
| 402 | PLAN_UPGRADE_REQUIRED | Il piano attivo non include la funzione richiesta: l'accesso alle API oppure, nel corpo di POST /v1/receipts, sconti o pagamento misto. Passa al piano Pro o Team. |
| 403 | BUSINESS_KEY_REQUIRED | Serve una business key szk_live_: hai usato una chiave di tipo diverso. |
| 404 | NOT_FOUND | Scontrino non trovato: l'ID non esiste o appartiene a un altro esercente. Vale per GET /v1/receipts/{id}, per l'annullamento e per il reso. |
| 409 | PENDING_IN_PROGRESS · VOID_PENDING_IN_PROGRESS · RETURN_PENDING_IN_PROGRESS | PENDING_IN_PROGRESS e VOID_PENDING_IN_PROGRESS: una richiesta con la stessa idempotencyKey è ancora in corso. RETURN_PENDING_IN_PROGRESS: un reso sullo stesso scontrino è in corso, con questa chiave o con un'altra; dopo il nuovo tentativo rileggi lo scontrino per il residuo. È temporaneo: attendi i secondi indicati in Retry-After e ripeti la richiesta identica. |
| 409 | ALREADY_REJECTED · ALREADY_VOIDED · VOID_ALREADY_TARGETED · IDEMPOTENCY_PAYLOAD_MISMATCH | Conflitto definitivo sulla chiave di idempotenza: il documento è già stato rifiutato o annullato, c'è già un'altra correzione in corso sullo stesso scontrino (un annullo con un'altra chiave oppure un reso), oppure la chiave è stata riusata con un contenuto diverso. Ripetere non aiuta: serve una chiave nuova per una nuova operazione. |
| 409 | ALREADY_RETURNED · RETURN_NOT_ALLOWED · RETURN_STATE_CHANGED | Correzione non ammessa nello stato attuale. ALREADY_RETURNED: lo scontrino ha già un reso, quindi non si annulla più. RETURN_NOT_ALLOWED: lo scontrino non si può rendere (è annullato, anche dal portale, ha un annullo in corso, oppure ha importi da cui il reso non si calcola con esattezza: scontrini emessi fino al 20 agosto 2026 o con quantità a tre decimali). RETURN_STATE_CHANGED: un reso precedente rimasto in sospeso risulta registrato e il residuo è cambiato: rileggi lo scontrino e rifai il reso con una chiave nuova. |
| 409 | ADE_REAUTH_REQUIRED · ADE_PASSWORD_EXPIRED | Serve un intervento dell'esercente in ScontrinoZero: la sessione CIE con l'Agenzia delle Entrate è scaduta e va rinnovata, oppure la password Fisconline è scaduta e va aggiornata. Il retry automatico è inutile finché non lo fa. |
| 413 | PAYLOAD_TOO_LARGE | Corpo della richiesta oltre il limite: 32 KB in emissione, 8 KB in annullamento e reso. |
| 422 | ADE_REJECTED | L'Agenzia delle Entrate ha rifiutato il documento nel merito, o mancano dati fiscali. Lo scontrino non è stato registrato e ripetere la stessa richiesta fallirebbe di nuovo: va corretto il contenuto. |
| 422 | RETURN_INVALID_QUANTITIES | Le quantità del reso non tornano con lo scontrino: numero di valori diverso dalle righe, oppure oltre i pezzi ancora rendibili (contando anche i resi fatti dal portale dell'Agenzia). Rileggi lo scontrino con GET /v1/receipts/{id} e ricalcola. Valori negativi, con più di 2 decimali o tutti a zero sono invece un 400 VALIDATION_ERROR. |
| 429 | RATE_LIMIT_EXCEEDED | Rate limit superato. Riprova dopo i secondi indicati in Retry-After. |
| 500 | VOID_SYNC_FAILED · RETURN_SYNC_FAILED · INTERNAL_ERROR | Errore interno. VOID_SYNC_FAILED e RETURN_SYNC_FAILED sono i casi in cui l'annullo o il reso è stato registrato sull'AdE ma la nostra sincronizzazione è fallita: scrivici citando il requestId. |
| 503 | DB_TIMEOUT | Servizio temporaneamente sovraccarico. È transitorio: riprova dopo i secondi indicati in Retry-After. |
| 503 | ADE_UNAVAILABLE | L'Agenzia delle Entrate non ha risposto (rete, errore 5xx, timeout). L'esito della trasmissione è ignoto: lo scontrino potrebbe essere già registrato. Riprova dopo i secondi indicati in Retry-After con la stessa idempotencyKey — una chiave nuova rischierebbe un secondo scontrino. |
Scontrini rimasti in sospeso
Uno scontrino resta in sospeso quando l'Agenzia delle Entrate non risponde alla trasmissione: ricevi un 503 ADE_UNAVAILABLE e l'esito è ignoto, perché il documento potrebbe essere già registrato. La mossa è una sola: ripeti la richiesta con la stessa idempotencyKey. Prima di ritrasmettere cerchiamo il documento sull'Agenzia delle Entrate e, se c'è già, lo colleghiamo a quella vendita invece di emetterne un secondo.
Se il tuo processo smette di ritentare, lo scontrino resta in sospeso e non compare nell'elenco, che di default mostra solo i documenti registrati. Due modi per ritrovarlo: il campo documentId dell'errore, da interrogare con GET /v1/receipts/{id}, e la lista filtrata per stato, che restituisce tutte le righe in sospeso del periodo.
curl "https://api.scontrinozero.it/v1/receipts?from=2026-04-01&to=2026-04-30&status=PENDING" \
-H "Authorization: Bearer szk_live_XXXX"Quando all'Agenzia delle Entrate risultano più documenti compatibili — stesso importo, emessi a pochi minuti di distanza da quello in sospeso — nessun automatismo sa quale sia il tuo, e lo scontrino resta in sospeso: sceglie l'esercente dall'app web ScontrinoZero, dove il banner in dashboard mostra i candidati e chiede quale riconosce.
Domande frequenti
Posso usare le API durante la prova gratuita?
Sì: la prova gratuita di 30 giorni include l'accesso alla Developer API con una chiave attiva, senza inserire una carta di credito. I piani Pro e Team ne consentono fino a 3. Su Starter le API non sono disponibili.
Cosa succede alle chiavi API quando scade la prova gratuita?
Smettono di autenticare: ogni richiesta riceve un errore 402 PLAN_UPGRADE_REQUIRED. Le chiavi restano nella dashboard e tornano attive appena attivi il piano Pro o Team, quindi non devi rigenerarle né aggiornare l'integrazione.
Cosa succede se l'Agenzia delle Entrate non risponde durante l'emissione?
Ricevi un errore 503 ADE_UNAVAILABLE e lo scontrino resta in sospeso: l'esito della trasmissione è ignoto. Ripeti la richiesta con la stessa idempotencyKey — prima di ritrasmettere verifichiamo sull'Agenzia delle Entrate se il documento è già registrato, così non ne emetti due. L'errore porta il campo documentId per seguire lo scontrino con GET /v1/receipts/{id}, e GET /v1/receipts?status=PENDING elenca tutti quelli rimasti in sospeso.
Dove trovo la sezione API key nella dashboard?
In Impostazioni → Altre impostazioni → API key: la sezione è chiusa di default, aprila con il pulsante “Altre impostazioni”. La card è visibile su tutti i piani; se il tuo piano non include le API mostra l'upgrade invece dell'elenco delle chiavi.
Articoli correlati
- Come emettere il primo scontrino elettronico
- Sicurezza e privacy delle credenziali
- Come contattare l'assistenza
Quando citiamo una norma indichiamo estremo e data, così puoi verificarla alla fonte. Informazione divulgativa: non sostituisce la consulenza del commercialista, e per situazioni specifiche vanno sempre verificati la normativa aggiornata e il tuo codice ATECO. Hai trovato un'imprecisione? Segnalacela a [email protected].