eKasa – VAT rate changes since January 2025
What is changing?
The following VAT rates are being removed: 10%
, 20%
The following VAT rates are being added: 5%
, 19%
, 23%
Signs / letters identifying VAT rates printed on receipt will also change.
Letters A, B and C are now allocated to the new VAT rates, whereas old VAT rates have been assigned D and E letters.
VAT rate | Old sign / letter | New sign / letter |
---|---|---|
23% | – | A |
19% | – | B |
5% | – | C |
20% | A | D |
10% | B | E |
0% | C | N |
When is the change?
January 1st, 2025, Central European Standard Time.
UNIX timestamp: 1735686000
OneHub eKasa application will automatically switch to new VAT rates at midnight
between Tuesday, December 31st, 2024 and Wednesday, January 1st, 2025.
How does this affect the API?
The enumeration of VAT rates now includes the new VAT rates (VAT_5, VAT_19, VAT_23).
Note that the old VAT rates are still present in the enum, and will remain present essentially forever.
New validation rules are in place to enforce compliance with new VAT laws, see sections belows for more information.
See updated documentation for OneHub eKasa 2.16.0.
Usage prior to 01.01.2025 and from 01.01.2025
Prior to 01.01.2025, you can NOT use new VAT rates at all.
If you attempt to do so, your request will be rejected.
Starting on 01.01.2025, new documents can NOT contain items with an old VAT rate,
unless they fall under one of the exemptions documented below.
Old and new VAT rates can be combined on one document,
e.g. refund of an item that was sold with an old VAT rate (before 2025), and sale of an item with a new VAT rate.
Exemptions for legacy VAT usage
There are special cases when you can / have to use legacy VAT rates, even after 01.01.2025.
We outline some of the most common scenarios here, but this is still primarily a technical document.
For more details, you may want to consult your accountant.
Refund, correction
Applies to items of type REFUND
and UPDATE
.
Provision § 85 of Act no. 278/2024 Coll., which amends some laws related to further improvement of public finances (amendment to the VAT Act effective from 01.01.2025),
regulates situations when the tax base is corrected after 31.12.2024 in accordance with § 25 par. 1 of the VAT Act, i.e.
- the complete or partial cancellation of the supply of goods or services,
- the complete or partial return of the supply of goods,
- the reduction or increase in the price of goods or services
for which a tax liability arose prior to 01.01.2024.
In these cases, the merchant carrying out the correction of the tax base, according to § 25 of the VAT Act, will use the VAT rate valid at the time the tax liability arose,
while he is obliged to calculate the amount of the corrected tax proportionally according to the amount in which the reduced tax base applies to each tax liability incurred.
Put simply, items/services sold prior to 01.01.2025 are refunded (item type REFUND
) or corrected (item type UPDATE
)
with the same VAT rate as they were assigned on the original document.
Deposit deduction
Applies to items of type DEPOSIT
(deposit deduction) and SALE
(in context with DEPOSIT
).
When applying the relevant VAT rate, the decisive fact is the date of tax liability.
In the event that the advance payment was accepted until 31.12.2024 for goods or services that will be delivered after 31.12.2024,
the merchant must apply the VAT rate applicable at the time of each tax liability,
i.e. the VAT rate valid at the time of receiving the advance payment,
and the VAT rate valid at the time of delivery of the goods or services on the part of the price that is paid after 31.12.2025.See Act No. 278/2024 Coll.
What does all this legal jargon mean? It’s actually quite simple.
Deposit deduction (item type DEPOSIT
) is declared with the original VAT rate.
This means if the original advance payment had 20% VAT assigned to it, the deposit deduction will also have 20% VAT.
When using item type DEPOSIT
(deposit deduction), you are obviously also declaring the goods/services (item type SALE
) which it’s being deducted for, and possibly discounts (item type DISCOUNT
).
The sum of positive items (items of type SALE
) minus discounts (items of type DISCOUNT
) must be equal to or lower than the sum of deducted deposits (items of type DEPOSIT
) within a given (legacy) VAT rate.
If the value of the item of type SALE
after any discounts is the same as the value of the item of type DEPOSIT
, they will both use the same VAT rate.
If the price of the merchandise/service is higher than the value of DEPOSIT
, the difference will be declared as a separate item of type SALE
, but with a new VAT rate.
Example 1: sale = deposit (CORRECT)
Type | Item name | VAT | Amount |
---|---|---|---|
SALE | Sale of product/service | 20% | 50,00 |
DEPOSIT | Deducted deposit (advance payment from before 2025) | 20% | -50,00 |
{
"clientDocId": "cfd735c7-3f5a-43ec-885f-b160d75abc2d",
"type": "PD",
"amount": 0,
"documentEntries": [
{
"price": 50,
"quantity": 1,
"name": "Sale of product/service",
"vatRate": "VAT_20",
"itemType": "SALE"
},
{
"price": -50,
"quantity": 1,
"name": "Deposit deduction",
"vatRate": "VAT_20",
"itemType": "DEPOSIT"
}
]
}
Example 2: sale – discount = deposit (CORRECT)
Type | Item name | VAT | Amount |
---|---|---|---|
SALE | Sale of product/service | 20% | 60,00 |
DISCOUNT | Discount on product/service | 20% | -10,00 |
DEPOSIT | Deducted deposit (advance payment from before 2025) | 20% | -50,00 |
{
"clientDocId": "da0a14db-1f1d-443e-ab25-63fcb5db7c10",
"type": "PD",
"amount": 0,
"documentEntries": [
{
"price": 60,
"quantity": 1,
"name": "Sale of product/service",
"vatRate": "VAT_20",
"itemType": "SALE"
},
{
"price": -10,
"quantity": 1,
"name": "Discount on product/service",
"vatRate": "VAT_20",
"itemType": "DISCOUNT"
},
{
"price": -50,
"quantity": 1,
"name": "Deposit deduction",
"vatRate": "VAT_20",
"itemType": "DEPOSIT"
}
]
}
Example 3: sale > deposit (CORRECT)
Type | Item name | VAT | Amount |
---|---|---|---|
SALE | Sale of product/service (part of price paid in advance) | 20% | 50,00 |
DEPOSIT | Deducted deposit (advance payment from before 2025) | 20% | -50,00 |
SALE | Sale of product/service (part of price paid after 01.01.2025) | 23% | 25,00 |
{
"clientDocId": "9c2855b0-44a1-4f1b-90da-51cf0d9df23e",
"type": "PD",
"amount": 25,
"documentEntries": [
{
"price": 50,
"quantity": 1,
"name": "Sale of product/service - part paid in advance",
"vatRate": "VAT_20",
"itemType": "SALE"
},
{
"price": -50,
"quantity": 1,
"name": "Deposit deduction",
"vatRate": "VAT_20",
"itemType": "DEPOSIT"
},
{
"price": 25,
"quantity": 1,
"name": "Sale of product/service - additional payment",
"vatRate": "VAT_23",
"itemType": "SALE"
}
],
"payments": [
{
"method": "CASH",
"amount": 25.00,
"label": "Received cash"
}
]
}
Example 4: sale > deposit (INVALID)
Type | Item name | VAT | Amount |
---|---|---|---|
SALE | Sale of product/service (part of price paid in advance) | 20% | 75,00 |
DEPOSIT | Deducted deposit from 31.12.2024 (advance payment) | 20% | -50,00 |
{
"clientDocId": "7beeb332-978f-4264-a7db-28ae47bb2382",
"type": "PD",
"amount": 25,
"documentEntries": [
{
"price": -50,
"quantity": 1,
"name": "Deposit deduction",
"vatRate": "VAT_20",
"itemType": "DEPOSIT",
"voucherNumber": 12345
},
{
"price": 75,
"quantity": 1,
"name": "Sale of item",
"vatRate": "VAT_20",
"itemType": "SALE"
}
],
"payments": [
{
"method": "CASH",
"amount": 25.00,
"label": "Received cash"
}
]
}
Such request will be rejected and yield the following error:
ACCOUNTING ERROR!
The sum of positive items after discount (75.00) exceeds the sum of deducted deposits and single purpose vouchers (50.00) in a no longer valid VAT rate (20%).
This is not allowed, as the date of tax liability (this document’s issue date – 2025-01-01T23:59:59.999Z) for additional payments (on top of the price paid in advance during the validity of the old VAT rate) mandates the use of new VAT rate.
…
Single-purpose voucher exchange
Same rules apply as with deposit deduction (just replace DEPOSIT
with VOUCHER
).
On top of that, when the document contains an item of type single purpose voucher, it can consist of either:
- Two (2) items
- one of the items being of type
VOUCHER
in any VAT rate - the other item being of type
SALE
in the same VAT rate as the voucher AND:- if using current VAT rate: having any value
- if using legacy VAT rate: having value <= value of the VOUCHER
- one of the items being of type
- Three (3) items
- one of the items being of type
VOUCHER
in a legacy* VAT rate, - one of the items being of type
SALE
in the same VAT rate as the voucher and having the same value as that voucher - one of the items being of type
SALE
in a current** VAT rate, with any value (representing additional payment on top of advance payment)
- one of the items being of type
* legacy means no longer valid at the time the document was issued.
** current means valid at the time the document was issued.
Cancellation of discount
Discounts are cancelled using either corrective item (type=UPDATE) or positive item (type=SALE), depending on the context (see VAT law for more details).
If you need to use a positive item (type=SALE) to cancel a discount,
you MUST put the following string anywhere in the name of the item: „STORNO ZĽAVY“ (without quotes, case-insensitive).
This way, OneHub eKasa will know that you are cancelling a discount instead of selling an item, and consequently, it will disable validation preventing sale of items with legacy VAT rate unless paid in advance, for this item specifically.
Failure to clearly mark a cancellation of discount with the string mentioned above will result in the item’s price being added to the overall sale amount, which is strictly controlled when using legacy VAT rates.
This means your document will most likely be rejected by OneHub eKasa.
Integration testing
Since production app is strict in terms of which VAT rates can be used when, we provide a special test version of OneHub eKasa mock application that works as if the VAT change has already happened.
It’s programmed to act like the VAT is changing in November 2024 instead of January 2025, meaning that you can try how it’ll all work after 2025, without actually having to wait until 2025.
Contact us, and we will make sure you have everything you need to test your integration well in advance.
Example VAT super-mix document request
{
"clientDocId": "390819db-7b18-4853-82b8-0707f1936794",
"type": "PD",
"amount": 235.60,
"documentEntries": [
{
"price": 75,
"quantity": 2,
"name": "Item 1 - VAT 23%",
"vatRate": "VAT_23",
"itemType": "SALE"
},
{
"price": 87.23,
"quantity": 1,
"name": "Item 2 - VAT 19%",
"vatRate": "VAT_19",
"itemType": "SALE"
},
{
"price": 13.68,
"quantity": 1,
"name": "Item 3 - VAT 5%",
"vatRate": "VAT_5",
"itemType": "SALE"
},
{
"price": 14.56,
"quantity": 1,
"name": "Item 4 - VAT 0%",
"vatRate": "VAT_0",
"itemType": "SALE"
},
{
"price": 0.15,
"quantity": 1,
"name": "VO: PET bottle",
"vatRate": "VAT_0",
"itemType": "SALE"
},
{
"price": -20.00,
"quantity": 1,
"name": "Item 6 - VAT 20% (legacy)",
"vatRate": "VAT_20",
"itemType": "UPDATE",
"referenceDocumentId": "O-FFFFFFFFFFFFFFFFFFFFFFFFFFF-TEST"
},
{
"price": -10.00,
"quantity": 1,
"name": "Item 5 - VAT 10% (legacy)",
"vatRate": "VAT_10",
"itemType": "REFUND",
"referenceDocumentId": "O-FFFFFFFFFFFFFFFFFFFFFFFFFFF-TEST"
}
],
"payments": [
{
"method": "CARD",
"amount": 200.00,
"label": "VISA ####-####-####-1234"
},
{
"method": "CASH",
"amount": 35.60,
"label": "Received cash"
}
]
}