Skip to main content

Fiscal Requirements

Features of EFR

The EFR serves as system interface for certified fiscal printers. It does NOT replace a fiscal printer, which is still needed to fulfill the requirements of lithuanian fiscal law.

EFR keeps secure journals, as it does for other fiscal countries.

Sales transactions have to be printed using the fiscal functions of the printer. For this to be successful, two elements have to be in place:

  1. A transaction which contains sales data, sent via REST web request to the EFR
  2. A formatting file, which defines formal representation of this data

VAT Handling

As in other countries transaction data is normalized upon registration (details see TaxG Tax Group Assignment). Tax rates are controlled via ESR.TaxA, Tax.Prc is matched against the printer configuration, which is loaded with rates valid at startup system date (and after each closure).

Current rates are:

PrcTaxGDescription
21%Anormal
9%Breduced 1
5%Creduced 2
0%Dzero
-Eexcempt

Payment Types

Please make sure that the payment types are correctly configured in the Strongpoint library (details see Installation Strongpoint library).

Printer State

State varies between different printer models, fields ModuleName, ErrorCode, Warning, ID and SimpleState are unified across different printers and countries.

ElementDescription
URL/peri/print/state
MethodGET
QueryRN

Strongpoint fmNVB State

{
"ModuleName": "fmNVB",
"ID": "CR-000008758",
"ErrorCode": "",
"Warning": [
"Drawer:open"
],
"ZI": 6,
"HWVersion": "240",
"LastStateUpdate": 1726840960183,
"SimpleState": {
"DayOpen": null,
"ZRequired": false,
"NextZRequired": null,
"DrawerOpen": true,
"PaperNearEnd": false,
"PaperEnd": false,
"CoverOpen": null,
"MemAlmostFull": null,
"MemFull": false,
"CertExpires": null
},
"TT": "1234"
}

or with request header accept=text/xml

<PrintState>
<ModuleName>fmNVB</ModuleName>
<ID>CR-000008758</ID>
<ErrorCode/>
<Warning>Drawer:open</Warning>
<ZI>6</ZI>
<HWVersion>240</HWVersion>
<LastStateUpdate>1726841016979</LastStateUpdate>
<SimpleState>
<DayOpen/>
<ZRequired>false</ZRequired>
<NextZRequired/>
<DrawerOpen>true</DrawerOpen>
<PaperNearEnd>false</PaperNearEnd>
<PaperEnd>false</PaperEnd>
<CoverOpen/>
<MemAlmostFull/>
<MemFull>false</MemFull>
<CertExpires/>
</SimpleState>
<TT>1234</TT>
</PrintState>
  • ModuleName Name of the printer module
  • ID fmNVB CR ID
  • ZI Z-report index
  • HWVersion Fiscal firmware version
  • SimpleState Unified printer state across different printers and countries
    • DayOpen Boolean | null
    • ZRequired Boolean | null
    • NextZRequired Boolean | null
    • DrawerOpen Boolean | null
    • PaperNearEnd Boolean | null
    • PaperEnd Boolean | null
    • CoverOpen Boolean | null
    • MemAlmostFull Boolean | null
    • MemFull Boolean | null

Other Printing Functions

Direct Printing

Other non-fiscal prints can be sent directly to the EFR print function, no journaling or logging is performed:

ElementDescription
URL/peri/print
MethodPOST
Bodyplain text (plain/text)
QueryRN, lay

If JSON or XML data is sent in the request body, you can request format transformation by specifying a pug layout name:
/peri/print?lay=report2

Therefore you have to set the content type to application/json or application/xml.

In a multi-client configuration you may have to specify ?RN=[clientId] to address the correct printer.

Line Display

During position and payment entry the cash register application should send referring description and price/amount information immediately to the customer display:

ElementDescription
URL/peri/display
MethodPOST
Bodytext
QueryRN

The first two text lines are sent to the standard customer display, capacity is 20 characters per line. Like with all other requests UTF-8 encoding is expected by default.

Example Body:

Example Item 30,00 €
Total 30,00 €

Alternatively the following call may be used: /peri/display?text=This+is+test+line+1+Line+2

Cash Drawer

Open Drawer and Wait

ElementDescription
URL/peri/drawer/wait
MethodPOST
QueryRN

The cash drawer is opened immediately, after closing the response is sent. As the drawer might be left open for a longer time, an intermediate HTTP status 102 Processing is sent after 30 seconds. Usually the application shows a message Cash drawer open and locks further operator actions while the drawer is open.

Open Drawer and Poll

Opens and responds immediately.

ElementDescription
URL/peri/drawer
MethodPOST
QueryRN

Afterwards you can poll the drawer state using request:

ElementDescription
URL/peri/drawer
MethodGET
QueryRN

(e.g. once per second), which will signal

{"PeriDrawer":"0"}

or when request header accept=text/xml is set

<DrawerState>
<PeriDrawer>0</PeriDrawer>
</DrawerState>

until final closing

{"PeriDrawer":"1"}

Manual Drawer Open

Manual drawer open (with key) and close events are logged in the transaction journal.

Specifics

Return / Void Transactions

Return/Void transactions have to refer to the original document by giving FN of the original receipt as ESR.RFN. If no FN is available, a free-form invoice number can be used.