Austria

Fiscalisation for Austria

Helps POS software vendors comply with fiscalization laws and VAT reporting for B2C, B2B and B2G sales across Europe via a single, lightweight app.

Overview

Viva Fiscal API is designed to help businesses comply with fiscalization laws, especially in countries with strict regulations on tax reporting and cash register security. It acts as an intermediary between a company’s point-of-sale (POS) system and government tax authorities, ensuring that all transactions are accurately recorded, securely signed, and transmitted in compliance with legal requirements.

Benefits

POS Integrations

Viva offers Auto Fiscalization functionality within its POS integrations, providing an electronic fiscalization service that allows businesses to record, process, and store transactions digitally. This ensures transparency, accuracy, and compliance without complex procedures.

Fiscalization is available through:

Merchants and ISV partners do not need to allocate resources for fiscalization integration, as all transactions are automatically fiscalized during payments.

Partners working with other PSPs can also use Viva’s standalone Fiscal API to transmit data to regulators and receive valid receipt information.

The fiscalisation feature is currently available exclusively on our SoftPOS for Android. Please use this link to download the demo version of the Viva Terminal app with fiscalisation enabled and try it out in demo environment.

How to Fiscalize POS Payments

Ensuring that a payment is tax-compliant is quite straightforward. Your integration remains the same, with just one additional object added to your sale requests. This object(fiscalisationData) contains essential data, including the items sold, the payment amount for each item, and the corresponding VAT details. You can find the object structure and its parameters here.

The fiscalisationData is same across all types of POS integrations. By understanding what to include in your requests, you can seamlessly integrate fiscalisation into Viva’s any POS integration. Viva Fiscalisation handles the compliance process by signing the transaction with the relevant authorities. It then returns the receipt details, including the required signature for tax authorities. This information must be printed on the receipt and provided to the customer.

Fiscalisation Data Object

The table below presents the parameter details for the fiscalization data. The fiscalization data object comprises three main components.

  1. Fiscalisation Data Parameters: Contains the core details required for tax compliance.

  2. LineItems Array: An array of objects, each representing an individual item sold, including details such as description, quantity, price, and VAT.

  3. Payment Array: An array of objects specifying the payment details, including payment method, amount, and references.

The fiscalisationData object consists of the below parts:

Fiscalisation Data Parameters

The fiscalisationData object contains the below parameters.

Value
Description
Example
Max Length
Required
processingIndicator
You can find all possible values of the Receipt Processing Indicator under each country’s Receipt Processing Indicator section
5139205309155246081
50 characters
customerVatNumber
The Vat Number to which the invoice is linked to
EL036098541
50 characters

Required only if the receipt is about B2B services/items
customerName
The customer’s name
Professional Services LTD
50 characters

Required only if the receipt is about B2B services/items
customerCountryCode
The country code of where the Vat Number is registered to.
GR
50 characters

Required only if the receipt is about B2B services/items
customerStreet
The customer’s street.
Amarousiou Chalandriou 18-20
50 characters

Required only if the receipt is about B2B services/items
customerCity
The customer’s city
Athens
50 characters

Required only if the receipt is about B2B services/items
customerZip
The customer’s zip code
15125
50 characters

Required only if the receipt is about B2B services/items
receiptDateTime
The receipt’s date & time
2025-02-03T09:32:41.604Z
The value of this constant is equivalent to 23:59:59.9999999 UTC, December 31, 9999 in the Gregorian calendar
receiptUniqueReference
A reference identification key for this specific receipt
fiscal-12345678
100 characters
lineItems
Array of Objects. Please see the next sections for more details.
payments
Array of Objects. Please see the next sections for more details.
Example

The order includes two products, one Coffee Latte and two Coffee Cappuccino, with grand total amount of 20 euro (1 item Coffee Latte x 10 euro + 2 Coffees Cappuccino x 5 euro). The payments array, will be the below:

{
   "processingIndicator":"5139205309155246081",
   "customerVatNumber":"EL036098541",
   "customerName":"Professional Services LTD",
   "customerCountryCode":"GR",
   "customerStreet":"Amarousiou Chalandriou 18-20",
   "customerCity":"Athens",
   "customerZip":"15125",
   "receiptDateTime":"2025-02-03T09:32:41.604Z",
   "receiptUniqueReference":"fiscal-12345678",
   "lineItems": [{...}],  //array of objects
   "payments": [{...}]   //array of objects
}

LineItems Array

Inside the fiscalisationData object, the LineItems array holds the product/item details that the invoice includes.

Value
Description
Example
Max Length
Required
amount
The amount with VAT of each item/product
1000 = 10 euro
4 integers where tha last two linked with the decimals
description
The description of the item/product
Coffee Latte
100 characters
position
The position on the receipt
1
An integer
productBarcode
The product barcode content passed through from the cashier system
1234567890123
50 characters
productNumber
The product number passed through from the cashier system
15709
50 characters
quantity
The quantity of this specific product item
2
An integer
vatAmount
The VAT amount that applied to this specific product
240
100 characters
vatRate
The VAT rate that applied to this specific product
2400 (as value, not 24% in percentange)
4 characters
processingIndicator
You can find all possible values of the LineItem Processing Indicator under each country’s LineItem Processing Indicator section
5139205309125846083
50 characters
Example

The order includes two products, one Coffee Latte and two Coffee Cappuccino, with grand total amount of 20 euro (1 item Coffee Latte x 10 euro + 2 Coffees Cappuccino x 5 euro). The line item array, will be the below:

"lineItems":[
      {
         "amount":1000,
         "description":"Coffee Latte",
         "position":1,
         "productBarcode":"1234567890123",
         "productNumber":15709,
         "quantity":1,
         "vatAmount":240,
         "vatRate":2400,
         "processingIndicator":"5139205309155246083"
      },
      {
         "amount":500,
         "description":"Coffee Cappuccino",
         "position":2,
         "productBarcode":"1234567890200",
         "productNumber":15710,
         "quantity":2,
         "vatAmount":120,
         "vatRate":2400,
         "processingIndicator":"5139205309125846083"
      }
   ]

Payments Array

Inside the fiscalisationData object, the payments array holds the payment details for the items in the order.

Value
Description
Example
Max Length
Required
amount
The grand total amount of the payment
2000 = 20 euro
4 integers where tha last two linked with the decimals
dateTime
The payment’s date and time
2025-02-03T09:32:41.604Z
The value of this constant is equivalent to 23:59:59.9999999 UTC, December 31, 9999 in the Gregorian calendar
description
A short description for this receipt
Order XXXX, Cashier 1, Central Store
50 characters
position
The position on the receipt for details
1
An integer
processingIndicator
You can find all possible values of the Payments Processing Indicator under each country’s Payments Processing Indicator section
5139205309155246083
50 characters
Example

The order includes two products, one Coffee Latte and two Coffee Cappuccino, with grand total amount of 20 euro (1 item Coffee Latte x 10 euro + 2 Coffees Cappuccino x 5 euro). The payments array, will be the below:

"payments":[
  {
      "amount":2000,
      "dateTime":"2025-02-03T09:32:41.604Z",
      "description":"Payment via card",
      "position":1,
      "processingIndicator":"5139205309155246083"
  }
]

Understanding processingIndicators for Austria

As you might have already noticed, the FiscalisationData object contains a parameter called processingIndicator. This parameter exists in the main object, inside lineItems object, and payments object.

Receipt processingIndicator: The ProcessingIndicator in the ‘main body’ indicates the receipt type and defines how it should be processed by the Viva Fiscalisation. The data type is Int64 and contains the country specific code, which is a value following the ISO-3166-1-ALPHA-2 standard converted from ASCII into hex and used as byte 8 and 7. For definitions regarding national laws, please refer to each country seperately.

LineItems processingIndicator: The ProcessingIndicator in the ‘lineItems’ object defines the type of service or item in the line item block and thus how Viva processes the individual receipts with regards to receipt generation. The data type is Int64 and contains a country specific code which is a value following the ISO-3166-1-ALPHA-2 standard, converted from ASCII into hex and used as byte 8 and 7.

Payments processingIndicator: The ProcessingIndicator in the ‘payments’ object indicates the type of payment within the pay items block and defines how the Viva Fiscalisation processes the individual payment in terms of the receipt. The data type is Int64 and contains a country specific code which is a value following the ISO-3166-1-ALPHA-2 standard, converted from ASCII into hex and used as byte 8 and 7.

Receipt ProcessingIndicator for Austria

For Austria (AT), the country code is 4154. Thus, the value of an unknown processing indicator in Austria is 4154000000000000.

Example for POS receipt : 4154000000000000

The value 4154000000000000 is in hexadecimal format and needs to be converted to its decimal equivalent, which is 4707387510509010944. Therefore, the value to be included in the request body should be 4707387510509010944.

A helpful online tool for your converting tests is [this](https://www.rapidtables.com/convert/number/hex-to-decimal.html).

Value Description
4154000000000000 "unknown type of receipt for AT"
This receipt is processed like a cash transaction with RKSV requirement.
4154000000000001 "Cash transaction with RKSV requirement for AT"
The Viva Fiscal API decision tree is being run through, and, if needed, the signature process is started and the cumulative counter adjusted respectively.
An example of a signature being needed is an "other service" paid for with a "credit card".
An example of a case where no signature is needed is a receipt with only "no own sales" on it which has been paid for by "credit card".
4154000000000002 "zero receipt"
Charge items block (lineItems.processingIndicator) as well as pay items block (payments.processingIndicator) are empty.
The "zero receipt" can be used to test operability by collecting a service status notification, such as an out-of-service notification for FinanzOnline.
4154000000000003 "initial operation receipt"
The request is only valid as a zero receipt. The initial operation procedure is started. When using Viva Fiscalisation, the receipt will also be checked for correctness.
4154000000000004 "out of operation receipt"
The procedure to take the service out of operation is started.
The request is only valid as a zero receipt. When using the fiscalisation care free package, the receipt will also be checked for correctness, and the notification to the "FinanzOnline" will be performed automatically in the background.
4154000000000005 "monthly receipt"
The procedure for the creation of the monthly receipt is started. The request is only valid as a zero receipt.
4154000000000006 "annual receipt"
The procedure for the creation of the annual receipt is started.
The request is only valid as a zero receipt. When using the fiscalisation care free package, the receipt will also be checked for correctness, and the notification to the "FinanzOnline" will be performed automatically in the background.
4154000000000007 "cash transaction RKSV relief or cash revenue law"
This is used to process cash transactions which do not have an RKSV requirement (e.g. emptying a vending machine).
4154000000000008 "target business"
An outgoing invoice which does not necessarily have to be issued by a cash register but can also be issued by an invoicing system.
4154000000000009 "delivery note"
Information about an internal or external delivery or also a transfer into a different IT system. The sales tax statement is issued through the outgoing invoice or in the other system.
415400000000000A "cash deposit"
For example the payment of a target calculation, or deposit on the customer card.
Usually, the receipt data only includes pay items while the charge items block remains empty. Since the total amount must always be zero, you must use a negative pay item to balance the sum of pay items to zero.
415400000000000B "cash pay-out"
For example to pay for deliveries .
415400000000000C "means of payment transfer"
For example the switching between "cash", "credit card", "ATM", etc. This function is also used to issue vouchers.
415400000000000D "protocol"
Simple protocol function. For example, opening the cash drawer or changing master data.
415400000000000E "Internal / material consumption"
For example recording breakages or own consumption.
415400000000000F "sales in an online shop, telephone-/fax orders"
Through the cash revenue law, sales from online shops and similar are exempted, even if these have been paid by credit card or comparable means of payments with RKSV requirement but not paid on business premises. As a cash transaction, the issued receipt comes with a recording requirement in accordance with §131 BAO and needs to be processed in bookkeeping.
4154000000000010 "foreign sales"
Foreign sales do not have an RKSV-requirement. To be used when something sold in an other country. As a cash transaction, the issued receipt comes with a recording requirement in accordance with §131 BAO and need to be processed in bookkeeping. Foreign requirements, for example in connection with receipt generation or cash register requirements, have to be taken into account.

Linetems ProcessingIndicator for Austria

Example for lineItem processingIndicator : 4707387510509010944

Calculation: After you identify the type of service value (Eg: The value 4154000000000000 in hexadecimal format in the below table) you should convert it to its decimal equivalent(Eg: 4707387510509010944) and then include it in the request data.

A helpful online tool for your converting tests is [this](https://www.rapidtables.com/convert/number/hex-to-decimal.html).

Value Description
4154000000000000 "unknown type of service for AT"
With help of the VAT-rates table saved within Viva fiscalisation, an allocation to normal /discounted-1 /discounted-2/zero is attempted.
4154000000000001 "undefined type of service for AT discounted-1"
(as of 1.7.2016, this is calculated with 10%).
4154000000000002 "undefined type of service for AT discounted-2"
(as of 1.7.2016, this is calculated with 13%).
4154000000000003 "undefined type of service for AT normal"
(as of 1.7.2016, this is 20%).
4154000000000004 "undefined type of service for AT special"
Includes all rates which are not contained in the previous ones (as of1.7.2016, this can be for example 12% or 19%).
4154000000000005 "undefined type of service for AT zero"
Includes data which is indicated with 0% sales tax and also data where the sales tax is unknown, for example in a reference to an outgoing invoice. Also in cases where the sales tax should not be apparent, for example in the case of differential taxation, the data can be issued with this code.
4154000000000006 "reverse charge"
Reversal of tax liability.
These can e.g. include construction works, mobile phones from € 5.000,-, services abroad, etc.
4154000000000007 "not own sales"
In the data, a VAT-rate can be indicated, whereby the gross amount according to the RKSV always has to be recorded in the signature field, set zero.
4154000000000008 "delivery discounted-1"
For processing, see (4154000000000001)
4154000000000009 "delivery discounted-2"
For processing, see (4154000000000002)
415400000000000A "delivery normal"
For processing, see (4154000000000003)
415400000000000B "delivery special"
For processing, see (4154000000000004)
415400000000000C "delivery zero"
For processing, see (4154000000000005)
415400000000000D "other services discounted-1"
For processing, see (4154000000000001)
415400000000000E "other services discounted-2"
For processing, see (4154000000000002)
415400000000000F "other services normal"
For processing, see (4154000000000003)
4154000000000010 "other services special"
For processing, see (4154000000000004)
4154000000000011 "other services zero"
For processing, see (4154000000000005)
4154000000000012 "catalogue services discounted-1"
For processing, see (4154000000000001)
4154000000000013 "catalogue services discounted-2"
For processing, see (4154000000000002)
4154000000000014 "catalogue services normal"
For processing, see (4154000000000003)
4154000000000015 "catalogue services special"
For processing, see (4154000000000004)
4154000000000016 "catalogue services zero"
For processing, see (4154000000000005)
4154000000000017 "own consumption discounted-1"
For processing, see (4154000000000001)
4154000000000018 "own consumption discounted-2"
For processing, see (4154000000000002)
4154000000000019 "own consumption normal"
For processing, see (4154000000000003)
415400000000001A "own consumption special"
For processing, see (4154000000000004)
415400000000001B "own consumption zero"
For processing, see (4154000000000005)
415400000000001C "down payment discounted-1"
For processing, see (4154000000000001)
415400000000001D "down payment discounted-2"
For processing, see (4154000000000002)
415400000000001E "down payment normal"
For processing, see (4154000000000003)
415400000000001F "down payment special"
For processing, see (4154000000000004)
4154000000000020 "down payment zero"
For processing, see (4154000000000005)
4154000000000021 "account of a third party/ third party name/ collection"
For processing, see (4154000000000007)
4154000000000022 "obligation with RKSV requirement"
Obligations are to be equalized with pay items. If however, it is for technical reasons necessary to transfer obligations in the charge items block, then this code should be used for obligations with RKSV requirement. The gross amount due is recorded in the signature field, set zero, according to the RKSV.
For example, a receipt for a voucher issuance, for which the voucher is indicated as item in the charge items block and the corresponding cash amount is indicated in the pay items block.
An example for this would be a voucher intake via charge items block, or a payment of an outgoing invoice.
4154000000000023 "obligation without RKSV requirement"
Obligations are to be equalized with pay items. If however, it is systematically necessary to transfer obligations in the charge items block, then this code should be used for obligations without RKSV requirement. The gross amount due is recorded in the signature field, set zero, according to the RKSV. For processing, also see (4154000000000007).

Payments ProcessingIndicator for Austria

The format of the `processingIndicator` parameter on payments itemn level, should be as below.

Example for payments processingIndicator : 4707387510509010944

Calculation: After you identify the type of payment value (Eg: The value 4154000000000000 in hexadecimal format in the below table) you should convert it to its decimal equivalent(Eg: 4707387510509010944) and then include it in the request data.

A helpful online tool for your converting tests is [this](https://www.rapidtables.com/convert/number/hex-to-decimal.html).

Value Description
4154000000000000 "default value"
unknown payment type: automatic processing through the Viva fiscalisation settings is attempted.
4154000000000000 "unknown payment type for AT"
This is handled like a cash payment in national currency.
4154000000000001 "cash payment in national currency"
4154000000000002 "cash payment in foreign currency"
4154000000000003 "crossed cheque"
4154000000000004 "debit card payment"
4154000000000005 "credit card payment"
4154000000000006 "voucher payment (coupon)"
4154000000000007 "online payment"
4154000000000008 "customer card payment"
4154000000000009 "other debit card"
415400000000000A "other credit card"
415400000000000B "account receivable"
delivery note/ settlement in foreign currency
415400000000000C "SEPA transfer"
415400000000000D "other transfer"
415400000000000E "cash book expense"
415400000000000F "cash book contribution"
4154000000000010 "levy"
AT: Anzahlung
4154000000000011 "internal/ material consumption"
4154000000000012 "change"
tip

Examples of Usage

fiscalisationData for Cloud REST API and Local Terminal API integrations

For Cloud REST API and P2P(LOCAL Terminal API) integrations, please add fiscalisationData JSON object to the request body. This aproach is valid for both standard and ISV integrations.

"fiscalisationData":{
   "lineItems":[
      {
         "amount":1000,
         "description":"Coffee Latte",
         "position":1,
         "productBarcode":"1234567890123",
         "productNumber":15709,
         "quantity":1,
         "vatAmount":240,
         "vatRate":2400,
         "processingIndicator":"5139205309155246083"
      },
      {
         "amount":500,
         "description":"Coffee Cappuccino",
         "position":2,
         "productBarcode":"1234567890200",
         "productNumber":15710,
         "quantity":2,
         "vatAmount":120,
         "vatRate":2400,
         "processingIndicator":"5139205309125846083"
      }
   ],
   "payments":[
      {
         "amount":2000,
         "dateTime":"2025-02-03T09:32:41.604Z",
         "description":"Payment via card",
         "position":1,
         "processingIndicator":"5139205309155246083"
      }
   ],
   "processingIndicator":"5139205309155246081",
   "customerVatNumber":"EL036098541",
   "customerName":"Professional Services LTD",
   "customerCountryCode":"GR",
   "customerStreet":"Amarousiou Chalandriou 18-20",
   "customerCity":"Athens",
   "customerZip":"15125",
   "receiptDateTime":"2025-02-03T09:32:41.604Z",
   "receiptUniqueReference":"fiscal-12345678"
}

fiscalisationData for Interapp(app2app) Integration

For Interapp(app2app) integration, you should encode fiscalisationData JSON object as base64 format and pass it as uri parameter

ewogICAibGluZUl0ZW1zIjpbCiAgICAgIHsKICAgICAgICAgImFtb3VudCI6MTAwMCwKICAgICAgICAgImRlc2NyaXB0aW9uIjoiQ29mZmVlIExhdHRlIiwKICAgICAgICAgInBvc2l0aW9uIjoxLAogICAgICAgICAicHJvZHVjdEJhcmNvZGUiOiIxMjM0NTY3ODkwMTIzIiwKICAgICAgICA
gInByb2R1Y3ROdW1iZXIiOjE1NzA5LAogICAgICAgICAicXVhbnRpdHkiOjEsCiAgICAgICAgICJ2YXRBbW91bnQiOjI0MCwKICAgICAgICAgInZhdFJhdGUiOjI0MDAsCiAgICAgICAgICJwcm9jZXNzaW5nSW5kaWNhdG9yIjoiNTEzOTIwNTMwOTE1NTI0NjA4MyIKICAgICAgfSwKICAgIC
AgewogICAgICAgICAiYW1vdW50Ijo1MDAsCiAgICAgICAgICJkZXNjcmlwdGlvbiI6IkNvZmZlZSBDYXBwdWNjaW5vIiwKICAgICAgICAgInBvc2l0aW9uIjoyLAogICAgICAgICAicHJvZHVjdEJhcmNvZGUiOiIxMjM0NTY3ODkwMjAwIiwKICAgICAgICAgInByb2R1Y3ROdW1iZXIiOjE1N
zEwLAogICAgICAgICAicXVhbnRpdHkiOjIsCiAgICAgICAgICJ2YXRBbW91bnQiOjEyMCwKICAgICAgICAgInZhdFJhdGUiOjI0MDAsCiAgICAgICAgICJwcm9jZXNzaW5nSW5kaWNhdG9yIjoiNTEzOTIwNTMwOTEyNTg0NjA4MyIKICAgICAgfQogICBdLAogICAicGF5bWVudHMiOlsKICAg
ICAgewogICAgICAgICAiYW1vdW50IjoyMDAwLAogICAgICAgICAiZGF0ZVRpbWUiOiIyMDI1LTAyLTAzVDA5OjMyOjQxLjYwNFoiLAogICAgICAgICAiZGVzY3JpcHRpb24iOiJQYXltZW50IHZpYSBjYXJkIiwKICAgICAgICAgInBvc2l0aW9uIjoxLAogICAgICAgICAicHJvY2Vzc2luZ0l
uZGljYXRvciI6IjUxMzkyMDUzMDkxNTUyNDYwODMiCiAgICAgIH0KICAgXSwKICAgInByb2Nlc3NpbmdJbmRpY2F0b3IiOiI1MTM5MjA1MzA5MTU1MjQ2MDgxIiwKICAgImN1c3RvbWVyVmF0TnVtYmVyIjoiRUwwMzYwOTg1NDEiLAogICAiY3VzdG9tZXJOYW1lIjoiUHJvZmVzc2lvbmFsIF
NlcnZpY2VzIExURCIsCiAgICJjdXN0b21lckNvdW50cnlDb2RlIjoiR1IiLAogICAiY3VzdG9tZXJTdHJlZXQiOiJBbWFyb3VzaW91IENoYWxhbmRyaW91IDE4LTIwIiwKICAgImN1c3RvbWVyQ2l0eSI6IkF0aGVucyIsCiAgICJjdXN0b21lclppcCI6IjE1MTI1IiwKICAgInJlY2VpcHREY
XRlVGltZSI6IjIwMjUtMDItMDNUMDk6MzI6NDEuNjA0WiIsCiAgICJyZWNlaXB0VW5pcXVlUmVmZXJlbmNlIjoiZmlzY2FsLTEyMzQ1Njc4Igp9

E-commerce

While the Fiscal API is not yet available for web payments, it will be launching soon.

Account Setup

To activate fiscalization for your integration, please contact your sales representative.

Get Support

If you would like to integrate with Viva, or if you have any queries about our products and solutions, please see our Contact & Support page to see how we can help!