← User guide

Point of Sale — SK Virtual Cash Register (VRP2)

Registers every paid Point of Sale order in Finančná správa's virtual cash register (VRP 2) — sales itemized with their VAT rates, returns against the original receipt, invoiced orders as invoice payments — and prints the fiscal data on the till's ticket.

Version19.0.5.1.1
EditionCommunity and Enterprise
LicenceAGPL-3
Requirespoint_of_sale, l10n_sk_vrp2_base

What it is for

With this module each Point of Sale till in Odoo works as its own virtual cash register (virtuálna registračná pokladnica, VRP) of Finančná správa. When the till syncs a paid order, Odoo issues the receipt in VRP 2 and keeps its number, identifiers and the official PDF on the order:

The ticket printed at the till carries the VRP receipt number, the cash register code, the receipt identifier, the OKP and the QR code, and the official PDF is one click away.

The products and categories each till sells must also exist in its VRP catalogue; the module pushes them there (or pulls them from VRP).

The act on the recording of sales (zákon o evidencii tržieb), in force since 1 January 2026:

Which document goes to the customer is a decision for you and your adviser. Odoo's ticket with the fiscal block reproduces the identifying data of the VRP receipt but is printed by Odoo; the official receipt is VRP's own PDF, which the module stores and opens with VRP2 doklad (PDF).

Setting it up

1. VAT mapping (once per company)

Point of Sale → Configuration → Settings, block VRP2 - Slovak Virtual Cash Register, VRP2 Tax Mapping: choose the Odoo sales tax for each VRP rate you use (VRP2 Tax 0%, 5%, 19%, 23%; the 10% and 20% slots are for rates no longer in force). Only sales taxes of the current company are offered.

The mapping decides which products are pushed to VRP (a product whose tax is not mapped is not) and which VAT a pulled product gets.

2. Payment methods

Each POS payment method has a VRP2 Payment Type, shown after its journal: Hotovosť (cash), Platobná karta (card), Poukážky (vouchers), Stravné poukážky (meal vouchers) or Iné (other). It defaults from the journal — cash journal → Hotovosť, bank journal → Platobná karta — so check vouchers and other tenders. A method with no type (a customer account) is not a cash register payment: an order paid with it cannot be registered and ends in VRP2 Error.

3. The till

Point of Sale → Configuration → Point of Sales, open the till. Block VRP2 Fiscal Receipts:

Field What it does
Enable VRP2 This till registers its sales in VRP.
Fiscalize Automatically Issue the receipt as soon as the till syncs a paid order (default). Without it, orders are registered only by hand.
Round to 0.05 € Mirrors Zaokrúhľovať na 5 centov in the VRP web application: the cash part of a payment is rounded to 5 cents.
Odoo Cash Rounding Shown when rounding is on; see below.
VRP2 Login, VRP2 Password The login of this till's register from the eKasa zone of the Finančná správa portal.

Then click Login. The line below shows the business name, the register's DKP and the access granted (Read / Write). Load Credentials from Company copies the company register's login (set up as described in l10n_sk_vrp2_account) into the till — then invoice payments and this till's sales go to the same register.

Rules the module enforces:

4. The catalogue

VRP prints item names from the register's own catalogue, and each item on a receipt refers to it by its service code. After logging in, on the till:

On the product form (tab Point of Sale, group VRP2):

Field Meaning
VRP2 Service Code, Synced to VRP2 Set by the first push. Each till sells under the code its own register gave the product; a product with no code on that till cannot be sold there.
VRP2 Returnable Packaging A deposit-bearing package (zálohovaný obal); taking it back is recorded as vrátené obaly.
VRP2 Favourite Show among the favourites in VRP.
VRP2 Special Regulation The legal wording for 0 % items (exempt, reverse charge, travel agencies, works of art, used goods, collectors' items). See Limitations.
VRP2 Note Internal note for VRP, not printed.

A top-level POS category has a VRP2 Short Name for VRP's tabs; if empty, the first two letters of the name are used.

Push again whenever you rename a product, change its price or tax, or add one.

At the till

Sell as usual. When the order is paid and synced:

  1. Odoo issues the VRP receipt (when Fiscalize Automatically is on).
  2. Before the ticket prints, the till fetches the result and prints the fiscal block: POKLADNIČNÝ DOKLAD č. 0019, Kód pokladnice, ID dokladu, OKP and the QR code of the receipt identifier.
  3. VRP2 doklad (PDF) on the receipt screen opens VRP's official PDF.

If VRP refuses or cannot be reached, the sale is never blocked: the cashier gets a warning The VRP2 receipt was NOT issued, the ticket says Doklad nebol zaevidovaný vo VRP2 instead of the fiscal block, and the order is marked VRP2 Error. The till does not retry by itself, because after a timeout VRP may already hold the receipt.

What is sent

Order Receipt in VRP
Sale Itemized: each line with its unit price incl. VAT, discount, quantity, VAT rate and service code.
Refund of an order registered in VRP Return items that refer to the original receipt and carry the item name exactly as VRP printed it; the money paid out as an expense.
Returned deposit packaging with no sale to refer to Vrátené obaly item, keeping its service code.
Invoiced order Receipt for invoice payment with the invoice number and the payments, no items.

Payments are reported by the payment method's VRP2 Payment Type. Only the cash part is rounded to 5 cents; a receipt that returns money is never rounded. VRP computes the receipt total itself; if it differs from Odoo's by tax rounding (at most 5 cents) the difference is absorbed by the largest non-cash payment.

An order is refused, and ends in VRP2 Error, when:

Orders in the back office

Point of Sale → Orders → Orders: the order form has a VRP2 Fiscalization group with the VRP2 Status (Not Fiscalized, Fiscalized, Error), receipt number, receipt UUID (what the QR code encodes), date, OKP and the error message. Print VRP2 Receipt downloads the official PDF.

Fiscalize in VRP2 (POS managers) registers a paid order that is not yet registered — after an error, or when automatic registration is off. From the order list the same action handles many orders; each failure is recorded on its order without undoing the others, and a notification tells you how many were registered, failed and skipped. The filters VRP2 Error and Not Fiscalized in VRP2 find the orders that need attention, and VRP2 Status and VRP2 Receipt Number can be shown as list columns.

Before you re-send an order in error after a timeout, check the register's receipt list in the VRP portal: VRP may already hold that receipt, and sending it again registers the sale twice.

Limitations