← User guide

Slovak eKasa Receipt Lookup

Reads the QR code on a Slovak cash-register receipt (bloček) and fetches the receipt the seller registered in eKasa — items, VAT rates and the per-rate VAT recap — from Finančná správa's document-verification service.

Version19.0.1.1.1
EditionCommunity and Enterprise
LicenceAGPL-3
Requiresl10n_cssk_receipt_capture

What it is for

Every receipt printed by a Slovak cash register (pokladnica eKasa) carries a QR code. Behind it, Finančná správa holds the receipt exactly as the seller registered it: every item with its quantity and VAT rate, the VAT recap per rate, and the seller's identification.

This module is a provider for l10n_cssk_receipt_capture, the receipt-capture framework. When a captured receipt has a Slovak eKasa QR code, it asks the state's verification service for that receipt and fills the captured receipt with the seller's own registered figures instead of a reading of the photograph. Posting the receipt as a bill or expense is then the framework's job.

Two kinds of QR code are understood:

Receipt What the QR code holds
On-line (the normal case) only the receipt identifier: O- and 32 hexadecimal characters, or V- for a receipt from the virtual cash register (VRP)
Off-line (the till could not reach eKasa in time) OKP:cash-register code:date-time:number:total, which the service accepts as a lookup key

An off-line receipt receives its real identifier once the till has sent it to eKasa; that identifier is what the module stores, so the same purchase cannot be captured twice.

Since 1 January 2026 receipts are governed by the act on the recording of sales (zákon o evidencii tržieb), which replaced the former act No. 289/2008 Z. z. on electronic cash registers (§ 21).

The module cannot check that the notification has been made, so it asks you to declare it and refuses every lookup until you do (see Setting it up). When this version was written, the conditions of use had not been published; until they are, the notification means writing to Finančné riaditeľstvo yourself.

Setting it up

Accounting → Configuration → Settings, block Slovak eKasa Receipt Lookup (below Fiscal Receipt Capture):

Setting What it does
Enable eKasa Lookup Switches the lookup on for the current company. Off by default.
IP Address Notified (§ 18/11) Tick it only once Finančné riaditeľstvo has been notified of the public IP address your Odoo server calls from. Until it is ticked, every lookup is refused with an explanation.
Notified IP Address, Notified On The address you declared and the date. A record for you; the module does not compare it with the address actually in use.
Hourly Lookup Budget Maximum lookups per clock hour, default 60. Zero means no lookups at all.
Lookup Timeout (s) How long to wait for the service, default 30 seconds.

Why the budget: the service allows roughly 60 lookups per clock hour (hh:00–hh:59) per IP address and blocks an address that exceeds it. The module counts its own calls per company and stops before the limit. The real limit is per address: if several companies, or several databases, call from one address, lower their budgets so that together they stay under it.

On installation, companies that already exist receive the default budget of 60.

The provider itself — Slovak eKasa (QR lookup), limited to Slovakia — is created by the module and is listed with the other capture providers.

Capturing a receipt

Use the receipt-capture framework as usual (Accounting → Vendors → Fiscal Receipts): scan the QR code with the camera, type it in, or upload a photo.

How the figures are read matters for posting, so it is worth knowing:

When the lookup fails, the receipt says why:

Result What happens
Switched off, IP not declared, budget spent The eKasa provider steps aside and the next provider (for example the AI reader) may read the receipt instead.
Network failure The receipt is left untouched and retried automatically later.
Not registered Finančná správa holds no receipt for this code. Either the code was misread or the seller never registered the sale — which may be worth reporting.
Refused by the service Usually the service's firewall rather than the receipt; not retried automatically.

The verification log

Every call to the service is recorded: Accounting → Vendors → Fiscal Receipts → eKasa Verification Log, and from a receipt through its Lookups button. Each row shows when the call was made, the identifier or key asked about, the receipt and the outcome (Receipt found, Not registered, Refused by the service, Network or transport error). Refused and failed calls count against the hourly budget too.

The log is your own record of what was verified. Users with invoicing rights can read it; only accounting managers can edit or delete rows.

Limitations