Fiscalisation
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.
Viva Fiscalisation is available for the below countries,
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
As you may have already noticed, the FiscalisationData object includes a parameter called processingIndicator. This parameter can be found at multiple levels within the object, specifically in the main object, as well as within the lineItems and payments objects.
It’s important to note that the value and usage of processingIndicator can vary from country to country. To understand the specific implementation and requirements for each country, please refer to the links provided below.
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!