← User guide

SK Virtual Cash Register (VRP2) — Invoice Payments

Registers the cash or card payment of a customer invoice in Finančná správa's virtual cash register (VRP 2) as a receipt for invoice payment, keeps the official receipt in Odoo, and cancels it by storno when needed.

Version19.0.2.4.0
EditionCommunity and Enterprise
LicenceAGPL-3
Requiresl10n_sk_vrp2_base, account

What it is for

A Slovak business that takes payment for an issued invoice in cash or by card at its premises has to register that payment in a cash register as a pokladničný doklad — úhrada faktúry (receipt for invoice payment). Many small businesses use the virtual cash register (virtuálna registračná pokladnica, VRP) that Finančná správa provides free of charge instead of a hardware till.

This module connects Odoo to VRP 2 so that you do not have to retype each invoice payment into the VRP web application:

It only registers the payment with Finančná správa. Recording the payment in Odoo is your normal payment flow, and nothing about the invoice's accounting changes.

The connection itself (login, the company's register) is provided by l10n_sk_vrp2_base, installed automatically with this module and described below. Sales at a till are handled by pos_vrp2.

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

Whether a particular payment is a tržba (for instance a bank transfer is not one) is for you and your accountant to decide; the module registers whatever you tell it to.

Connecting the company's register

One VRP 2 login belongs to exactly one cash register (identified by its kód pokladnice, DKP). Invoice payments are registered on the company's register, set up in Accounting → Configuration → Settings, block VRP2 - Slovak Virtual Cash Register:

  1. VRP2 Connection — enter the register's VRP2 Login and VRP2 Password from the eKasa zone of the Finančná správa portal, and click Login. The VRP2 Status badge changes to Connected.
  2. VRP2 Cash Register Info then shows what VRP reports for the register: its DKP, business name, DIČ, IČO and IČ DPH. Check them — they are what the receipts will carry.
  3. Round to 0.05 € — mirrors the setting Zaokrúhľovať na 5 centov in the VRP web application. When on, a cash payment is rounded to the nearest 5 cents on the receipt and the difference is reported as rounding. VRP does not tell Odoo how you set it in the web application, so set it here to match. On by default.
  4. Fiscalize invoice payments — offers the VRP choice in the Pay wizard (see below). Below it, VRP2 cash rounding names the cash rounding (Accounting → Configuration → Cash Roundings) whose profit and loss accounts receive the 5-cent difference of a rounded cash payment.

The session renews itself when it expires; Logout ends it. The password and the session token are visible to administrators only. The login notification also shows the access VRP grants it (VRP2 Role: Read or Write); issuing receipts needs a login with write access.

Tills in the Point of Sale have their own registers and logins, set on each till; see pos_vrp2.

Registering an invoice payment

From the invoice

On a posted customer invoice that has no active VRP receipt, click Fiscalize in VRP2, choose how the customer paid — Cash or Card, nothing is preselected — and click Fiscalize. The module issues the receipt and downloads the official PDF.

Several invoices at once

In Accounting → Customers → Invoices, select the invoices, then Actions → Fiscalize in VRP2, then choose Cash or Card for all of them. Credit notes in the selection are skipped. Each invoice gets its own receipt (full total) and you get one PDF with all of them.

All the invoices are checked before anything is sent: if one is not posted, is not a customer invoice or already has a receipt, nothing is sent at all. If VRP refuses one invoice after others have already been registered, the registered ones are kept and the failure is recorded on that invoice (a receipt in state Error and a message in the chatter), so you can retry it.

When registering the payment

With Fiscalize invoice payments on and the company logged in, the Pay wizard on customer invoices shows two more fields after Memo:

Field Meaning
Fiscalize in VRP2 Issue a receipt for the payment being registered. Ticked by default.
VRP2 Payment Type Cash or Card. Only cash is rounded to 5 cents.

The receipt is for the payment amount, so a partial payment registers the part paid. One receipt per invoice: with several invoices, untick Group Payments, otherwise the wizard refuses.

A cash payment with Round to 0.05 € on is booked at the amount the customer actually hands over:

Cancelling a receipt (storno)

Storno (VRP2) on an invoice with an active receipt issues a VRP storno: a new receipt with one negative correction line referring to the original and paid out as an expense from the register. The storno reverses exactly the amount the original receipt registered, including any 5-cent rounding. The original receipt is then marked Cancelled and the invoice can be registered again.

A storno touches neither the invoice nor any payment in Odoo. A credit note cannot be registered as an invoice payment; cancel the original receipt instead.

The receipts

Accounting → Customers → VRP2 Receipts lists every receipt, and the invoice shows them through its VRP2 Receipts button. A hidden column VRP2 Fiscalized can be shown in the invoice list.

On a receipt:

The report VRP2 Receipt prints an Odoo summary (Pokladničný doklad — úhrada faktúry) with the register's identification and a QR code of the receipt identifier. The document to hand over is VRP's own PDF.

Limitations