Quando un buono monouso viene venduto o emesso, l'IVA viene applicata immediatamente, poiché la tipologia dei beni o dei servizi e la relativa natura IVA sono già noti. La tassazione, quindi, avviene al momento dell'emissione e non al riscatto.
Dal punto di vista tecnico, l’approccio corretto per gestire l’emissione e il riscatto dei buoni monouso con SIGN IT lite è il seguente.
Nota: i seguenti payload riflettono le modifiche alla struttura introdotte con la versione API 2026-06-01. Se stai integrando una versione precedente: sostituisci il campo totals.vat (a livello di operation) con il vecchio total_vat (a livello di document), rimuovi il campo breakdown e usa il formato semplice unit.price come stringa (solo inclusive, es. "price": "100.00") al posto dell'oggetto { inclusive, exclusive } mostrato qui.
Emissione del buono
- Assegnare un nome al buono in
entries[].data.text - Indicare l'aliquota IVA in
entries[].data.vat
{
"content": {
"type": "TRANSACTION",
"record": {
"id": "{{intentionId}}"
},
"operation": {
"type": "RECEIPT",
"document": {
"number": "INV-123456"
},
"entries": [
{
"type": "SALE",
"details": {
"concept": "GOOD"
},
"data": {
"type": "ITEM",
"text": "Voucher for service XYZ - Nr. 2345",
"unit": {
"quantity": "1",
"price": {
"inclusive": "100.00",
"exclusive": "81.96721311"
}
},
"value": {
"base": "81.96721311"
},
"vat": {
"type": "VAT_RATE",
"code": "STANDARD",
"percentage": "22.00",
"exclusive": "81.96721311",
"inclusive": "100.00",
"amount": "18.03278689"
}
}
}
],
"breakdown": [
{
"type": "VAT_RATE",
"code": "STANDARD",
"percentage": "22.00",
"exclusive": "81.96721311",
"inclusive": "100.00",
"amount": "18.03278689"
}
],
"totals": {
"vat": {
"amount": "18.03278689",
"exclusive": "81.96721311",
"inclusive": "100.00"
}
},
"customer": {
"type": "EXTERNAL"
},
"payments": [
{
"type": "CASH",
"details": {
"amount": "100.00"
}
}
]
}
}
}
Riscatto del buono
Il tipo di pagamento VOUCHER non è abilitato in SIGN IT lite. Tuttavia, dal punto di vista tecnico, è possibile registrare il buono monouso come sconto a livello di riga.
Scenario 1 – Il buono copre parte dell'acquisto
Esempio 1A
Buono da €100 utilizzato per l'acquisto di un bene da €200 → i restanti €100 vengono pagati con un altro metodo di pagamento.
- Specificare il bene acquistato.
- Indicare l'aliquota IVA in
entries[].data.vat - Registrare il buono come sconto a livello di riga. In questo modo, l'IVA viene calcolata esclusivamente sulla base imponibile residua (
vat.exclusive), al netto dell'importo del buono. L'IVA relativa alla quota coperta dal buono è stata già assolta al momento dell'emissione del buono stesso.
{
"content": {
"type": "TRANSACTION",
"record": {
"id": "{{intentionId}}"
},
"operation": {
"type": "RECEIPT",
"document": {
"number": "INV-12345"
},
"entries": [
{
"type": "SALE",
"details": {
"concept": "GOOD"
},
"data": {
"type": "ITEM",
"text": "Product XYZ",
"unit": {
"quantity": "1",
"price": {
"inclusive": "200.00",
"exclusive": "163.93442623"
}
},
"value": {
"base": "163.93442623",
"discount": "100.00"
},
"vat": {
"type": "VAT_RATE",
"code": "STANDARD",
"percentage": "22.00",
"exclusive": "81.96721311",
"inclusive": "100.00",
"amount": "18.03278689"
}
}
}
],
"breakdown": [
{
"type": "VAT_RATE",
"code": "STANDARD",
"percentage": "22.00",
"exclusive": "81.96721311",
"inclusive": "100.00",
"amount": "18.03278689"
}
],
"totals": {
"vat": {
"amount": "18.03278689",
"exclusive": "81.96721311",
"inclusive": "100.00"
}
},
"customer": {
"type": "EXTERNAL"
},
"payments": [
{
"type": "CASH",
"details": {
"amount": "100.00"
}
}
]
}
}
}Esempio 1B
Buono da €100 utilizzato per l'acquisto di un bene da €90 e di un bene da €20 → i restanti €10 vengono pagati con un altro metodo di pagamento.
- Specificare i beni acquistati.
- Indicare l'aliquota IVA in
entries[].data.vat - Distribuire il buono come sconto a livello di riga tra le due voci, mantenendo ciascuno sconto al di sotto del
unit.price.
Nota: il portale AdE non consente che value.discount sia uguale o superiore all'importo totale della riga (unit.price x unit.quantity), altrimenti restituisce un Validation Error. Per evitare questo problema, una possibile rappresentazione tecnica per questo esempio è la seguente:
- Per la voce da €90, inserire €89.99 come value.discount
- Per la voce da €20, inserire €10.01 come value.discount
{
"content": {
"type": "TRANSACTION",
"record": {
"id": "{{intentionId}}"
},
"operation": {
"type": "RECEIPT",
"document": {
"number": "INV-12345"
},
"entries": [
{
"type": "SALE",
"details": {
"concept": "GOOD"
},
"data": {
"type": "ITEM",
"text": "Product A",
"unit": {
"quantity": "1",
"price": {
"inclusive": "90.00",
"exclusive": "73.77049180"
}
},
"value": {
"base": "73.77049180",
"discount": "89.99"
},
"vat": {
"type": "VAT_RATE",
"code": "STANDARD",
"percentage": "22.00",
"exclusive": "0.00819672",
"inclusive": "0.01",
"amount": "0.00180328"
}
}
},
{
"type": "SALE",
"details": {
"concept": "GOOD"
},
"data": {
"type": "ITEM",
"text": "Product B",
"unit": {
"quantity": "1",
"price": {
"inclusive": "20.00",
"exclusive": "16.39344262"
}
},
"value": {
"base": "8.18032787",
"discount": "10.01"
},
"vat": {
"type": "VAT_RATE",
"code": "STANDARD",
"percentage": "22.00",
"exclusive": "8.18852459",
"inclusive": "9.99",
"amount": "1.80147541"
}
}
}
],
"breakdown": [
{
"type": "VAT_RATE",
"code": "STANDARD",
"percentage": "22.00",
"exclusive": "8.19672131",
"inclusive": "10.00",
"amount": "1.80327869"
}
],
"totals": {
"vat": {
"amount": "1.80327869",
"exclusive": "8.19672131",
"inclusive": "10.00"
}
},
"customer": {
"type": "EXTERNAL"
},
"payments": [
{
"type": "CASH",
"details": {
"amount": "10.00"
}
}
]
}
}
}Scenario 2 – Il buono copre l'intero importo dell'acquisto
Esempio: buono da €100 utilizzato per l'acquisto di un bene da €100 → nessun pagamento aggiuntivo richiesto.
- Specificare il bene acquistato.
- Indicare l'aliquota IVA in
entries[].data.vat - Registrare il buono come sconto a livello di riga.
Nota: il portale AdE non consente che value.discount sia uguale o superiore all'importo totale della riga (unit.price x unit.quantity), altrimenti restituisce un Validation Error. Per evitare questo problema, se il voucher copre esattamente l'intero prezzo della riga — come in questo scenario —, è possibile utilizzare il seguente workaround tecnico per soddisfare la validazione del portale:
- Aggiungere €0.01 a unit.price OPPURE ridurre value.discount di €0.01, così da creare una piccola differenza tra i due valori.
- Recuperare poi quel centesimo applicando uno sconto di €0.01 a livello di pagamento tramite details.discount. In questo modo, l'importo netto addebitato al cliente rimane corretto, soddisfacendo al contempo la validazione del portale.
{
"content": {
"type": "TRANSACTION",
"record": {
"id": "{{intentionId}}"
},
"operation": {
"type": "RECEIPT",
"document": {
"number": "INV-12345"
},
"entries": [
{
"type": "SALE",
"details": {
"concept": "GOOD"
},
"data": {
"type": "ITEM",
"text": "Product XYZ",
"unit": {
"quantity": "1",
"price": {
"inclusive": "100.01",
"exclusive": "81.97540984"
}
},
"value": {
"base": "81.97540984",
"discount": "100.00"
},
"vat": {
"type": "VAT_RATE",
"code": "STANDARD",
"percentage": "22.00",
"exclusive": "0.00819672",
"inclusive": "0.01",
"amount": "0.00180328"
}
}
}
],
"breakdown": [
{
"type": "VAT_RATE",
"code": "STANDARD",
"percentage": "22.00",
"exclusive": "0.00819672",
"inclusive": "0.01",
"amount": "0.00180328"
}
],
"totals": {
"vat": {
"amount": "0.00180328",
"exclusive": "0.00819672",
"inclusive": "0.01"
}
},
"customer": {
"type": "EXTERNAL"
},
"payments": [
{
"type": "CASH",
"details": {
"amount": "0.00",
"discount": "0.01"
}
}
]
}
}
}Nota: L'aggiustamento di €0.01 introdotto per soddisfare la validazione del portale AdE nello Scenario 2 comporta che venga riportato un importo IVA piccolo ma non nullo, anche quando il voucher copre interamente l'acquisto. Se ciò non è desiderabile, è possibile utilizzare VAT_EXEMPTION come alternativa tecnica a VAT_RATE, ottenendo un'IVA pari a zero. In entrambi i casi, poiché questa scelta ha implicazioni sulla dichiarazione IVA, si raccomanda di verificare l'approccio più corretto con il proprio consulente fiscale.
Nota:
fiskaly non è autorizzata a fornire consulenza fiscale. Per domande di natura fiscale, rivolgiti al tuo consulente fiscale, revisore o avvocato.