Skip to main content

Country specific Business Cases

Important Information to the generic Interface

The API is a generic interface that can be used for all countries. If there are additional country-specific requirements, these are described in the country-specific guides. The generic interface is available from EFR version 2.5.0. The changes to the interface are backwards compatible.



These additional country specific business cases are rare, but if applicable to your business, need to be implemented and tested. The applicable country to the business case is visible via the country flag beneath the business case title.

If your business has any additional business cases that are not included on this list or if you have any comments or questions, please contact us at: ticket@efsta.eu

Start Transaction

custom icon 1[DE]

Every business case must be started by sending a request with a <TraS> Tag, as soon as the first article has been recorded. The response contains the fiscal TSE signature, the transaction ID (TID), and the timestamp of the process start. At the completion of a transaction the whole transaction data has to be sent to the EFR within a <Tra> Tag per /register request with the TID from the start request.

  • A transaction will be startetd with TraS request. The TID from the response must be stored in the POS.
  • The transaction will be finished with a Tra request and the TID has to be sent in the request.
Example: Start request
<TraS>
<ESR TL="001" TT="1"/>
</TraS>
Example: Response of start transaction
<TraSC SQ="360">
<Result RC="OK"/>
<Fis TID ="292" StartD="2024-06-01T08:30:02"/>
</TraSC>
Example: Transaction with TID
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="100" T="34.90" Opr="101" OprN="Mario Rossi" OprTIN="12345678" TP="Table 1" TID="292">
<PosA>
<Pos PN="1" IN="1030" Dsc="Example Service" TaxG="A" Amt="34.90" />
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="cash" Amt="40.00" />
<Pay Dsc="Example Change" PayG="change" Amt="-5.10" />
</PayA>
</ESR>
</Tra>

Use of input devices (handheld device)

custom icon 1[DE]

If a POS is used by input devices (handheld device), the input device ID must also be specified with the transaction. The input device data can be maintained via the basis data in the portal.

The Device Id must be sent as an attribute Pos.Dev

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="101" T="34.90" Opr="101" OprN="Mario Rossi" TP="Table 1">
<PosA>
<Pos PN="1" IN="1030" Dsc="Item 1" TaxG="A" Amt="34.90" Dev="101"/>
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="cash" Amt="40.00" />
<Pay Dsc="Example Change" PayG="change" Amt="-5.10" />
</PayA>
</ESR>
</Tra>

Invoices in the name of third parties

custom icon 1[DE]

If amounts are recorded "on behalf of third parties", the third party is responsible for the correct recording of sales tax (e.g. shop-in-shop). To do this, you can set the agency ID (DE_AGENTUR_ID) in the position. The agency data can be maintained in the basis data via the portal.

The agency ID Id has to be sent as an attribute DE_AGENTUR_ID

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="102" T="34.90" Opr="101" OprN="Mario Rossi" TP="Table 1">
<PosA>
<Pos PN="1" IN="1030" Dsc="Item 1" TaxG="A" Amt="34.90" DE_AGENTUR_ID="5"/>
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="cash" Amt="40.00" />
<Pay Dsc="Example Change" PayG="change" Amt="-5.10" />
</PayA>
</ESR>
</Tra>

Private payment

custom icon 1[DE]

Private pay in

The business transaction type "private pay in" documents the pay in of cash from the businessperson's private accounts into the cash register.

A private payment is marked with an attribute NFS="CAPITAL" and a positive amount.

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="103" T="200.00" Opr="101" OprN="Mario Rossi" NFS="CAPITAL">
<PosA>
<Pos PN="1" Dsc="Private pay in" Amt="200.00"/>
</PosA>
<PayA>
<Pay Dsc="Cash" PayG="0" Amt="200.00"/>
</PayA>
</ESR>
</Tra>

Private pay out

The business transaction type "private pay out" documents the taking of cash from the cash register by the business owner for private purposes.

A private payment is marked with an attribute NFS="CAPITAL" and a negative amount.

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="104" T="-400.00" Opr="101" OprN="Mario Rossi" NFS="CAPITAL">
<PosA>
<Pos PN="1" Dsc="Private removal" Amt="-400.00"/>
</PosA>
<PayA>
<Pay Dsc="Cash" PayG="0" Amt="-400.00"/>
</PayA>
</ESR>
</Tra>

Variance analysis / difference

custom icon 1[DE]

During the cash closure money count, the determination of the target/actual difference takes place. Any difference must be sent to the EFR.

A variance analysis is marked with an attribute NFS="DIFF".

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="105" T="-87.00" Opr="101" OprN="Mario Rossi" NFS="DIFF">
<PosA>
<Pos PN="1" Dsc="difference" Amt="-87.00"/>
</PosA>
<PayA>
<Pay Dsc="Cash" PayG="0" Amt="-87.00"/>
</PayA>
</ESR>
</Tra>

Wage payment

[DE]Flag Germany
 
[HU]Flag Hungary

A "wage payment" represents a (partial) payment of the wage from the POS (e.g. wage advance) by the employer to the employee.

A wage payment is marked with an attribute NFS="WAGE".

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="106" T="-1000.00" Opr="101" OprN="Mario Rossi" NFS="WAGE">
<PosA>
<Pos PN="1" Dsc="wage" Amt="-1000.00"/>
</PosA>
<PayA>
<Pay Dsc="Cash" PayG="0" Amt="-1000.00"/>
</PayA>
</ESR>
</Tra>

Gastronomy consumption inhouse vs. take away

[DE]Flag Germany
 
[HU]Flag Hungary

If food is not consumed in the restaurant but taken away, a lower tax rate applies. Therefore, this must be indicated for each position.

  • The default value, if nothing is specified, is InH="1"
  • If the food is taken away the position is marked with an attribute InH="0".
Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="107" T="9.90" Opr="101" OprN="Mario Rossi" TP="Bar">
<PosA>
<Pos PN="1" IN="1030" Dsc="Example item" TaxG="B" Amt="9.90" InH="0"/>
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="cash" Amt="10.00" />
<Pay Dsc="Example Change" PayG="change" Amt="-0.10" />
</PayA>
</ESR>
</Tra>

Delivery

 
[DE]Flag Germany
[DK]Flag Denmark
[NO]Flag Norway
[SE]Flag Sweden

Delivery with an invoice afterwards

In this case the sales tax becomes due immediately upon delivery. The delivery note thus has an effect on sales.

A delivery with an invoice afterwards is marked with an attribute DT="DELIVERY".

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="108" T="399.00" DT="DELIVERY" Opr="101" OprN="Mario Rossi" TP="Bar">
<Ctm CN="12" Nam="Musterfirma GmbH" Adr="Musterstraße 1" Zip="10115" City="Berlin" Ctry="DE" TaxId="DE123456789"/>
<PosA>
<Pos PN="1" Dsc="Printer" TaxG="A" Amt="399.00"/>
</PosA>
<PayA>
<Pay Dsc="Open" PayG="8" Amt="399.00"/>
</PayA>
</ESR>
</Tra>

The invoice afterwards is non fiscal and marked with an attribute NFS="INVOICE".

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="109" T="399.00" NFS="INVOICE" Opr="101" OprN="Mario Rossi" TP="Bar">
<Ctm CN="12" Nam="Musterfirma GmbH" Adr="Musterstraße 1" Zip="10115" City="Berlin" Ctry="DE" TaxId="DE123456789"/>
<PosA>
<Pos PN="1" Dsc="Drucker" TaxG="A" Amt="399.00"/>
</PosA>
<PayA>
<Pay Dsc="Offen" PayG="8" Amt="399.00"/>
</PayA>
</ESR>
</Tra>

Delivery note is generated on the POS and passed along to an external system (accounting)

In this case, the delivery note is only a non-fiscal (signed) transaction. The sales tax accrues in the external system.

In this case the delivery is marked with an attribute NFS="DELIVERY".

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="110" T="399.00" NFS="DELIVERY" Opr="101" OprN="Mario Rossi" TP="Bar">
<Ctm CN="12" Nam="Musterfirma GmbH" Adr="Musterstraße 1" Zip="10115" City="Berlin" Ctry="DE" TaxId="DE123456789"/>
<PosA>
<Pos PN="1" Dsc="Printer" TaxG="A" Amt="399.00"/>
</PosA>
</ESR>
</Tra>

Tax of old parts (Altteilsteuer)

custom icon 1[DE]

In the german fiscal law there is a special tax for old/used parts in the vehicle sector. The tax arises, if a customer replace parts of a vehicle, the basis is the value of the new part. This tax is paid by the shop or merchant and is listed separate on the bon for the customer. The tax corresponds to the current full sales tax on the assessment basis, which is to be determined according to § 10 Abs. 2 Satz 2 UStG. The assessment basis is an average value which is defined as 10% of the list price of the equivalent new part (without discounts and without sales tax). This tax can be sent to the EFR-service with a position type PTY="TaxPos".

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="111" T="1176.00" Opr="101" OprN="Mario Rossi">
<PosA>
<Pos PN="1" Dsc="motor exchange" Amt="1160.00" TaxG="A"/>
<Pos PTY="TaxPos" PN="2" RPN="1" Dsc="tax for old parts" Amt="16.00" TaxG="A"/>
</PosA>
<PayA>
<Pay Dsc="Cash" Amt="1176.00" PayG="Cash"/>
</PayA>
<TaxA>
<Tax TaxG="A" Prc="16" Net="1000.00" TAmt="176.00" Amt="1176.00"/>
</TaxA>
</ESR>
</Tra>

Difference tax rate (Differenzbesteuerung)

[AT]Flag Austria
 
[DE]Flag Germany

If a merchant bought used objects and sells them to his customers, a difference tax rate can be used instead of the regular tax rate. E.g.: A merchant buys a used item at a price of €900. He then sells it to a private person for €1150. The tax is calculated from the difference (sales price – purchase price), in this case €1150 - €900 = €250. The tax amount would be €39.92 with a tax rate of 19%. Since the tax is not printed directly on the receipt, this article is sent to the EFR as a 0% tax rate and a correction receipt has to be created afterwards.

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="112" T="1150.00" Opr="101" OprN="Mario Rossi">
<PosA>
<Pos PN="1" Dsc="Sell of used item" Amt="1150.00" TaxG="G"/>
</PosA>
<PayA>
<Pay Dsc="Cash" Amt="1150.00" PayG="Cash"/>
</PayA>
<TaxA>
<Tax TaxG="G" Prc="0" Net="1150.00" TAmt="0.00" Amt="1150.00"/>
</TaxA>
</ESR>
</Tra>
Attention

It must be written on the bon, that the tax rate of the article is differential tax rate according to §25a UstG.

A correction bon must be created afterwards, which includes the differential tax rate. This can also be created in the accounting department and does not necessarily have to be sent to the EFR service.

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="113" T="0.00" Opr="101" OprN="Mario Rossi">
<PosA>
<Pos PN="1" Dsc="Korrektur" Amt="-250.00" TaxG="G"/>
<Pos PN="2" Dsc="Differenzbesteuerung" Amt="250.00" TaxG="A"/>
</PosA>
<TaxA>
<Tax TaxG="G" Prc="0" Net="-250.00" TAmt="0.00" Amt="-250.00"/>
<Tax TaxG="A" Prc="19" Net="210.08" TAmt="39.92" Amt="250.00"/>
</TaxA>
</ESR>
</Tra>

Alternatively, the correction of the tax can be made e.g. monthly in the accounting department via internal receipt. Please coordinate this procedure with your tax advisor


Accompanying documents

custom icon 1[HR]
info

As of 01.09.2025, this is no longer a requirement.

Accompanying documents like offers and orders may be registered before the sales receipt using ESR.NFS with any value. These documents have to be referenced by JIR (or ZKI if no JIR is available) in the related sales receipt using the property ESR.RFiscal.

Example: Accompanying document
<Tra>
<ESR NFS="ORDER" D="2024-06-01T08:30:15" TL="001" TT="1" TN="25" T="8.38" Opr="101" OprN="Mario Rossi" OprTIN="12345678" TP="Table 1">
<PosA>
<Pos PN="1" IN="1001" Dsc="Example Item" TaxG="A" Amt="3.98" Qty="2" QtyU="Pc." Pri="1.99" Cat="10" CatN="Example Category 10" />
<Pos PN="2" IN="1020" Dsc="Example Item" TaxG="B" Amt="1.50" Cat="11" CatN="Example Category 11" />
<Pos PN="3" IN="1030" Dsc="Example Item" TaxG="A" Amt="2.90" Cat="12" CatN="Example Category 12" />
</PosA>
</ESR>
</Tra>
Example: Sale with reference to accompanying document
<Tra>
<ESR RFiscal="2ac298aa-7a73-4ed6-bbf4-41ebd382cf6d" D="2024-06-02T08:30:15" TL="001" TT="1" TN="26" T="8.38" Opr="101" OprN="Mario Rossi" OprTIN="12345678" TP="Table 1">
<PosA>
<Pos PN="1" IN="1001" Dsc="Example Item" TaxG="A" Amt="3.98" Qty="2" QtyU="Pc." Pri="1.99" Cat="10" CatN="Example Category 10" />
<Pos PN="2" IN="1020" Dsc="Example Item" TaxG="B" Amt="1.50" Cat="11" CatN="Example Category 11" />
<Pos PN="3" IN="1030" Dsc="Example Item" TaxG="A" Amt="2.90" Cat="12" CatN="Example Category 12" />
</PosA>
<PayA>
<Pay PayG="cash" Dsc="Gotovina" Amt="8.38" />
</PayA>
</ESR>
</Tra>

Consumption Tax

custom icon 1[HR]

The Croatian consumption tax can be sent by specifying both the VAT group (A, B, ...) and the consumption group (V1) delimited with space in Pos.TaxG="A V1". Additionally the Tax-line in the tax array is specified with:

  • Tax.TTY="CT" TaxType is consumption tax
  • Tax.Base is set with the tax base amount (net)
  • Tax.Net and Tax.TAmt is not set
  • Tax.Amt is set with the consumption tax amount instead of the gross amount
Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="1" T="8.38" Opr="101" OprN="Mario Rossi" OprTIN="12345678" TP="Table 1">
<PosA>
<Pos PN="1" IN="1001" SKU="456487" Dsc="Example Item" TaxG="A V1" Amt="3.98" Qty="2" QtyU="Pc." Pri="1.99" Cat="10" CatN="Example Category 10" />
<Pos PN="2" IN="1020" SKU="654854" Dsc="Example Item" TaxG="B" Amt="1.50" Cat="11" CatN="Example Category 11" />
<Lin Dsc="Subtotal" LAmt="5.48" />
<Pos PN="3" IN="1030" SKU="845868" Dsc="Example Item" TaxG="A" Amt="2.90" Cat="12" CatN="Example Category 12" />
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="cash" Amt="10.00" />
<Pay Dsc="Example Change" PayG="change" Amt="-1.62" />
</PayA>
<TaxA>
<Tax TaxG="A" Prc="25" Net="5.43" TAmt="1.36" Amt="6.79"/>
<Tax TaxG="B" Prc="13" Net="1.33" TAmt="0.17" Amt="1.50"/>
<Tax TTY="CT" TaxG="V1" Prc="3" Base="3.11" Amt="0.09"/>
</TaxA>
</ESR>
</Tra>

Article Registration & Changes

custom icon 1[SE]

The export requires us to track detailed information about article registrations:

  • Registration of an article
  • Change to that registration:
    • Addition, subtraction or deletion
  • Parking of a receipt (NFS=SUSPEND)
  • Resuming a receipt, even if it is parked again
Example
<Tra>
<ESR D="2025-04-24T08:30:15" TL="001" TT="1" T="3.46" Opr="101" OprN="Sofia Eriksson" OprTaxId="xxx">
<PosA>
<!-- Cashier registers article with Qty of 2. -->
<Pos PN="1" TS="2025-04-24T08:30:15" IN="1007" Dsc="Product A" TaxG="A" Amt="0.98" Qty="2" Pri="0.49" Cat="10" CatN="Example Category" />
<!-- Cashier registers a new article. -->
<Pos PN="2" TS="2025-04-24T08:30:22" IN="3278" Dsc="Product B" TaxG="B" Amt="9.95" Qty="5" Pri="1.99" Cat="20" CatN="Example Category 2" />
<!-- Cashier changes the Qty of Product A with IN="1007", from 2 to 3. -->
<Pos PN="3" TS="2025-04-24T08:30:47" IN="1007" Dsc="Product A" TaxG="A" Amt="0.49" Qty="1" Pri="0.49" Cat="10" CatN="Example Category" />
<!-- Cashier changes the Qty of Product B from 5 to 1 using a Line Void to remove 4. -->
<Pos PN="4" TS="2025-04-24T08:30:55" IN="3278" Dsc="Product B" TaxG="B" Amt="-7.96" Qty="-4" Pri="1.99" Cat="20" CatN="Example Category 2" Void="1"/>
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="cash" Amt="5.00" />
<Pay Dsc="Example Change" PayG="change" Amt="-1.54" />
</PayA>
</ESR>
</Tra>

Parking of Receipts (SUSPEND)

custom icon 1[SE]

The parking of a receipt, where the transaction is temporarily paused and not yet finalized, is marked with the attribute NFS="SUSPEND".

PropertyDescriptionMandatory
ESR.ResumeFNIf a receipt was previously parked this property must be included and set to the fiscal number (FN) of the previously parked receiptMandatory if a parked receipt is resumed
Pos.ResumeAlready sent positions must be marked with Resume="1"Mandatory if a position is resumed
Example: Parking a receipt
<!-- Parking a transaction -->
<Tra>
<ESR NFS="SUSPEND" D="2025-04-24T08:30:15" TL="001" TT="1" T="10.93" Opr="101" OprN="Sofia Eriksson">
<PosA>
<Pos PN="1" TS="2025-04-24T08:30:15" IN="1007" Dsc="Product A" TaxG="A" Amt="0.98" Qty="2" Pri="0.49" Cat="10" CatN="Example Category" />
<Pos PN="2" TS="2025-04-24T08:30:22" IN="3278" Dsc="Product B" TaxG="B" Amt="9.95" Qty="5" Pri="1.99" Cat="20" CatN="Example Category 2" />
</PosA>
</ESR>
</Tra>

<!-- Response -->
<TraC SQ="102">
<Result RC="OK"/>
<ESR D="2025-04-24T08:30:27" TN="71" FN="PK:001/1/1-1"/>
</TraC>
Example: Resuming a parked receipt
<!-- Resuming and finishing the transaction -->
<Tra>
<!-- ResumeFN = FN found in the previous response. -->
<ESR ResumeFN="PK:001/1/1-1" D="2025-04-24T08:33:27" TL="001" TT="1" T="11.69" Opr="101" OprN="Sofia Eriksson" OprTaxId="xxx">
<PosA>
<!-- Already registered articles are marked with Resume="1" -->
<Pos PN="1" TS="2025-04-24T08:30:15" IN="1007" Dsc="Product A" TaxG="A" Amt="0.98" Qty="2" Pri="0.49" Cat="10" CatN="Example Category" Resume="1"/>
<Pos PN="2" TS="2025-04-24T08:30:22" IN="3278" Dsc="Product B" TaxG="B" Amt="9.95" Qty="5" Pri="1.99" Cat="20" CatN="Example Category 2" Resume="1"/>
<!-- A new article gets registered -->
<Pos PN="3" TS="2025-04-24T08:33:27" IN="5112" Dsc="Product C" TaxG="B" Amt="1.25" Qty="1" Pri="1.25" Cat="20" CatN="Example Category 2"/>
<!-- Qty of Product A is reduced to 1 -->
<Pos PN="4" TS="2025-04-24T08:33:41" IN="1007" Dsc="Product A" TaxG="A" Amt="-0.49" Qty="-1" Pri="0.49" Cat="10" CatN="Example Category" Void="1"/>
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="cash" Amt="20.00" />
<Pay Dsc="Example Change" PayG="change" Amt="-8.31" />
</PayA>
</ESR>
</Tra>
Example: Aborting a parked receipt
<Tra>
<ESR NFS="ABORT" ResumeFN="PK:001/1/1-1" TL="001" TT="1" T="10.93" Opr="101" OprN="Sofia Eriksson">
<PosA>
<Pos PN="1" TS="2025-04-24T08:30:15" IN="1007" Dsc="Product A" TaxG="A" Amt="0.98" Qty="2" Pri="0.49" Cat="10" CatN="Example Category" Resume="1"/>
<Pos PN="2" TS="2025-04-24T08:30:22" IN="3278" Dsc="Product B" TaxG="B" Amt="9.95" Qty="5" Pri="1.99" Cat="20" CatN="Example Category 2" Resume="1"/>
</PosA>
</ESR>
</Tra>

Printing Periodic Reports


[LT]Flag Lithuania
[PL]Flag Poland

The FP-T88FVA and FP-T88FVA Online printers support generating periodic reports. Two types are available:

PERIODIC_REPORT — A fiscal periodic report aggregated from daily reports
PERIODIC_SUM_REPORT — A total summary periodic report

Request Format

Reports are generated using this endpoint:

POST /register


Example: Periodic Fiscal Report
{
"Tra": {
"ESR": {
"TL": "001",
"TT": "1",
"NFS": "PERIODIC_REPORT",
"Opr": "101",
"OprN": "Mario Rossi",
"FromD": "2025-08-04",
"TillD": "2025-08-05"
}
}
}
Example: Periodic Summary Report
{
"Tra": {
"ESR": {
"TL": "001",
"TT": "1",
"NFS": "PERIODIC_SUM_REPORT",
"Opr": "101",
"OprN": "Mario Rossi",
"FromD": "2025-08-04",
"TillD": "2025-08-05"
}
}
}
ParameterDescription
NFSSpecifies the report type
FromD / TillDDefines the date range for the report

Filtering by Z-Indexes

Both report types also support filtering based on Z-index ranges using FromZI and ToZI

Example
{
"Tra": {
"ESR": {
"TL": "001",
"TT": "1",
"NFS": "PERIODIC_SUM_REPORT",
"Opr": "101",
"OprN": "Mario Rossi",
"FromZI": "1",
"ToZI": "2"
}
}
}