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
- Legal Compliance – Many countries, such as Germany and Austria, enforce strict fiscal laws requiring businesses to securely record transactions. The Viva Fiscal API ensures businesses meet these regulations seamlessly.
- Security & Integrity – Protects against tax fraud by ensuring all sales data is securely stored and transmitted in an immutable format.
- Automation & Efficiency – Reduces manual errors and administrative burdens by automating tax reporting.
- Seamless Integration – Enables businesses to integrate fiscal compliance into their existing POS systems with minimal effort.
- Handle Government-Mandated Requirements – Some countries require certified fiscalization solutions for all POS systems.
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:
- Local Terminal API – Local ECR integration
- InterApp Integration – Terminal/SoftPos Interapp integration
- Cloud Terminal API – POS integration via Cloud Terminal API
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.
Fiscalisation Data Parameters: Contains the core details required for tax compliance.
LineItems Array: An array of objects, each representing an individual item sold, including details such as description, quantity, price, and VAT.
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.
Required only if the receipt is about B2B services/items |
||||
Required only if the receipt is about B2B services/items |
||||
Required only if the receipt is about B2B services/items |
||||
Required only if the receipt is about B2B services/items |
||||
Required only if the receipt is about B2B services/items |
||||
Required only if the receipt is about B2B services/items |
||||
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.
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.
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.
- JSON Format
"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
- Base64 format
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!