Zum Inhalt springen

Single-purpose vouchers: issuance and redemption

When a single-purpose voucher is sold or issued, VAT is applied immediately because the nature of the goods or services and their applicable VAT treatment are already known. Taxation occurs at the time of issuance, not at redemption.

From a technical perspective, the correct approach for issuing and redeeming single-purpose vouchers with SIGN IT lite is as follows.

Voucher issuance

  • Assign the voucher a name in entries[].data.text

  • Include the applicable VAT in entries[].data.vat

{
"content": {
"type": "TRANSACTION",
"record": {
"id": "{{recordIntentionIdA}}"
},
"operation": {
"type": "RECEIPT",
"document": {
"number": "INV-123456",
"total_vat": {
"amount": "18.03278689",
"exclusive": "81.96721311",
"inclusive": "100.00"
}
},
"entries": [
{
"type": "SALE",
"details": {
"concept": "GOOD"
},
"data": {
"type": "ITEM",
"text": "Voucher for service XYZ - Nr. 2345",
"unit": {
"quantity": "1",
"price": "100.00"
},
"value": {
"base": "81.96721311"
},
"vat": {
"type": "VAT_RATE",
"code": "STANDARD",
"percentage": "22.00",
"exclusive": "81.96721311",
"inclusive": "100",
"amount": "18.03278689"
}
}
}
],
"customer": {
"type": "EXTERNAL"
},
"payments": [
{
"type": "CASH",
"details": {
"amount":"100.00"
}
}
]
}
}
}

The payment type VOUCHER is not enabled in SIGN IT lite. However, from a technical perspective, it is possible to record the single-purpose voucher as a line-level discount.

Scenario 1 – Voucher covers part of the purchase

Example 1A €100 voucher used for the purchase of a €200 good → remaining €100 paid via another payment method. 

  • Specify the good being purchased.

  • Include the applicable VAT in entries[].data.vat

  • Record the voucher as a discount at the entry level. As a result, VAT is computed solely on the residual taxable base (vat.exclusive), net of the voucher amount. The VAT attributable to the voucher-covered portion was already settled at voucher issuance.  

{
"content": {
"type": "TRANSACTION",
"record": {
"id": "{{intentionId}}"
},
"operation": {
"type": "RECEIPT",
"document": {
"number": "INV-12345",
"total_vat": {
"exclusive": "81.96721311",
"inclusive": "100",
"amount": "18.03278689"
}
},
"entries": [
{
"type": "SALE",
"details": {
"concept": "GOOD"
},
"data": {
"type": "ITEM",
"text": "Product XYZ",
"unit": {
"quantity": "1",
"price": "200.00"
},
"value": {
"base": "163.93442623",
"discount": "100.00"
},
"vat": {
"type": "VAT_RATE",
"code": "STANDARD",
"percentage": "22.00",
"exclusive": "81.96721311",
"inclusive": "100",
"amount": "18.03278689"
}
}
}
],
"customer": {
"type": "EXTERNAL"
},
"payments": [
{
"type": "CASH",
"details": {
"amount": "100.00"
}
}
]
}
}
}

Example 1B €100 voucher used for the purchase of a €90 good and a €20 good → remaining €10 paid via another payment method. 

  • Specify the goods being purchased.

  • Include the applicable VAT in entries[].data.vat

  • Distribute the voucher as a line-level discount across the two entries, keeping each discount below the unit.price

Note: The AdE portal does not allow value.discount to be equal or higher than the total line amount (unit.price x unit.quantity), otherwise it returns a Validation Error. To avoid this issue, a possible technical representation for this example would be:

  • For the €90 entry, enter €89.99 as value.discount
  • For the €20 entry, enter €10.01 as value.discount
{
"content": {
"type": "TRANSACTION",
"record": {
"id": "{{intentionId}}"
},
"operation": {
"type": "RECEIPT",
"document": {
"number": "INV-12345",
"total_vat": {
"exclusive": "8.19672131",
"inclusive": "10.00",
"amount": "1.80327869"
}
},
"entries": [
{
"type": "SALE",
"details": {
"concept": "GOOD"
},
"data": {
"type": "ITEM",
"text": "Product A",
"unit": {
"quantity": "1",
"price": "90.00"
},
"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": "20.00"
},
"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"
}
}
}
],
"customer": {
"type": "EXTERNAL"
},
"payments": [
{
"type": "CASH",
"details": {
"amount": "10.00"
}
}
]
}
}
}

Scenario 2 – Voucher covers the entire purchase Example: €100 voucher used for the purchase of a €100 good → no additional payment required.

  • Specify the good being purchased.

  • Include the applicable VAT in entries[].data.vat

  • Record the voucher as a discount at the entry level. 

Note: The AdE portal does not allow value.discount to be equal or higher than the total line amount (unit.price x unit.quantity), otherwise it returns a Validation Error. To avoid this issue, if the voucher covers the full line price exactly — as in this scenario —, you may use the following technical workaround to satisfy the portal’s validation:

  • Add €0.01 to unit.price OR reduce value.discount by €0.01 to create a small gap between the two values.
  • Then recover that cent by applying a €0.01 discount at payment level via details.discount. This keeps the customer’s net amount correct while satisfying the portal’s validation.
{
"content": {
"type": "TRANSACTION",
"record": {
"id": "{{intentionId}}"
},
"operation": {
"type": "RECEIPT",
"document": {
"number": "INV-12345",
"total_vat": {
"exclusive": "0.00819672",
"inclusive": "0.01",
"amount": "0.00180328"
}
},
"entries": [
{
"type": "SALE",
"details": {
"concept": "GOOD"
},
"data": {
"type": "ITEM",
"text": "Product XYZ",
"unit": {
"quantity": "1",
"price": "100.01"
},
"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"
}
}
}
],
"customer": {
"type": "EXTERNAL"
},
"payments": [
{
"type": "CASH",
"details": {
"amount": "0.00",
"discount": "0.01"
}
}
]
}
}
}

Note: The €0.01 adjustment introduced to satisfy the AdE portal’s validation in Scenario 2 means that a small, non-zero VAT amount will be reported, even when the voucher fully covers the purchase. If this is undesirable, VAT_EXEMPTION can be used as a technical alternative to VAT_RATE, resulting in zero VAT reported. Either way, as this decision has VAT reporting implications, we recommend confirming the right approach with your tax consultant.

Please note: fiskaly is not allowed to provide tax advice. Please contact your tax advisor, tax auditor or lawyer for tax-related questions.

Was this page helpful?