Skip to main content

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.



This collection of business cases, comprises of all transactional business cases that need to be implemented and tested with the EFR to comply with fiscalization requirements throughout Europe. Some business cases may not apply to your business. The current applicable countries to the business case is visible via the country flag beneath the business case title. If no flags are beneath the business case title, then this applies to all countries. By implementing all of these business cases and their variants, your system will be fiscalization ready in all of the current and future country solutions from efsta. efsta recommends that all business cases, if applicable, be implemented and sent to the EFR for every country, so that your system is future-proof when some countries expand their fiscalization requirements. This will prevent your development team from having to expand or re-develop to the EFR in the future.

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

Sale of Items

The EFR service calculates the tax amounts automatically, if they are not sent. However, we recommend that the POS sends the tax groups with every fiscal receipt. For a detailed explanation of tax assignment, see Tax Group Assignment. For simplicity, the taxes are only given in one example and omitted from all other business cases.

With TaxA

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="1" T="8.38" Opr="101" OprN="Mario Rossi" OprTIN="xxx" TP="Table 1">
<PosA>
<Pos PN="1" IN="1001" SKU="456487" 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" 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="19" Net="5.78" TAmt="1.10" Amt="6.88"/>
<Tax TaxG="B" Prc="7" Net="1.40" TAmt="0.10" Amt="1.50"/>
</TaxA>
</ESR>
</Tra>

Without TaxA

If the tax array is omitted, the EFR service calculates the tax amounts automatically.

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="1" T="8.38" Opr="101" OprN="Mario Rossi" OprTIN="xxx" 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" />
<Lin Dsc="Subtotal" LAmt="5.48" />
<Pos PN="3" IN="1030" 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>
</ESR>
</Tra>

Country Specific Properties

PropertiesDescription       Countries      Mandatory
Pos.SKUStock Keeping Unit/article number[DE]

Flag-Germany

If available in POS data
Pos.Cat, Pos.CatNCategory, Category name[BE] [DE] [DK]
Flag-Belgium Flag-Germany Flag-Denmark
[NO] [SE]
Flag-Norway Flag-Sweden
If available in POS data
ESR.OprNOperator Name[BE] [DE] [DK]
Flag-Belgium Flag-Germany Flag-Denmark
[NO] [PL] [PT]
Flag-Norway Flag-Poland Flag-Portugal
[SE]
Flag-Sweden
If available in POS data
ESR.TPTransaction point[DE]
Flag-Germany
If the transactions can be assigned to different areas
(e.g. table number)
ESR.OprTINOperator Tax Number[HR] [SI]
Flag-Croatia Flag-Slovenia
Yes
ESR.OprSSNOperator Social Security Number[BE]
Flag-Belgium
Yes
ESR.TIDTSE Transaction ID[DE]
Flag-Germany
See Start Transaction

Sale of Services

A sale of a service is sent as a position and is marked with an attribute PTY="Svc

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="2" T="34.90" Opr="101" OprN="Mario Rossi" OprTIN="xxx" TP="Table 1">
<PosA>
<Pos PTY="Svc" 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>

Discount

  • Discounts are sent as a modifier element Mod with a negative amount Mod.Amt.
  • Discounts must indicate which position numbers Mod.PN they refer to. Position number * means that the discount refers to all previous positions.
Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="3" T="6.88" Opr="101" OprN="Mario Rossi" OprTIN="xxx" 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" />
<Mod PN="1" Dsc="Example line discount" Amt="-0.50" />
<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" />
<Mod PN="*" Dsc="Example receipt discount" Amt="-1.00" />
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="cash" Amt="10.00" />
<Pay Dsc="Example Change" PayG="change" Amt="-3.12" />
</PayA>
</ESR>
</Tra>

Surcharge

  • Surcharge are sent as a Modifier element Mod with a positive amount Mod.Amt
  • Surcharge must indicate which position numbers Mod.PN they refer to. Position number * means that the surcharge refers to all previous positions.
Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="4" T="4.48" Opr="101" OprN="Mario Rossi" OprTIN="xxx" 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" />
<Mod PN="1" Dsc="Example line surcharge" Amt="0.50" />
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="cash" Amt="10.00" />
<Pay Dsc="Example Change" PayG="change" Amt="-3.12" />
</PayA>
</ESR>
</Tra>

Refund

  • Refunds are sent with negative quantities Pos.Qty and negative amounts Pos.Amt.
  • Discounts/Surcharges must also be taken into account when returning items
  • Refunds must reference the original transaction by ESR.RFN or ESR.RTL & ESR.RTT & ESR.RTN, see country-specific properties
Example
<Tra>
<ESR RD="2024-06-01T08:10:15" RTL="003" RTT="2" RTN="2080" RFN="NY/Y07900042/0110/00002" Rsn="V1" D="2024-06-01T08:30:15" TL="001" TT="1" TN="5" T="-3.48" Opr="101" OprN="Mario Rossi" OprTIN="xxx">
<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" />
<Mod PN="1" Dsc="Example line discount" Amt="0.50" />
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="cash" Amt="-3.48" />
</PayA>
</ESR>
</Tra>
Attention Flag-Hungary

In Hungary the customer data is required for refunds/voids. See Ctm object in example invoice

Country Specific Properties for Refunds

PropertiesDescriptionCountries
ESR.RFNReference fiscal number[DK] [ES] [FR] [HU] [IT] [NO] [PT] [SE] [SK]
Flag-Denmark Flag-Spain Flag-France Flag-Hungary Flag-Italy Flag-Norway Flag-Portugal Flag-Sweden Flag-Slovakia
ESR.RDReference date[HU] [PT] [SE]
Flag-Hungary Flag-Portugal Flag-Sweden
ESR.RTLReference transaction location[BE] [DE] [DK]
Flag-Belgium Flag-Germany Flag-Denmark
ESR.RTTReference transaction terminal[BE] [DE] [DK]
Flag-Belgium Flag-Germany Flag-Denmark
ESR.RTNReference transaction number[BE] [DE] [DK]
Flag-Belgium Flag-Germany Flag-Denmark

Void

  • Voided transaction are marked with an attribute Void="1"
  • The signs of quantity and amount must be sent reversed (negative values).
  • Voids must reference the original transaction by ESR.RFN or ESR.RTL & ESR.RTT & ESR.RTN, see country-specific properties
Example
<Tra>
<ESR Void="1" RD="2024-06-01T08:10:15" RTL="003" RTT="2" RTN="125" RFN="NY/Y07900042/0110/00002" Rsn="V1" D="2024-06-01T08:30:15" TL="001" TT="1" TN="6" T="-3.48" Opr="101" OprN="Mario Rossi" OprTIN="xxx">
<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" />
<Mod PN="1" Dsc="Example line discount" Amt="0.50" />
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="cash" Amt="-3.48" />
</PayA>
</ESR>
</Tra>
Attention Flag-Hungary

In Hungary the customer data is required for refunds/voids. See Ctm object in example invoice

Country Specific Properties for Void

PropertiesDescriptionCountries
ESR.RFNReference fiscal number (response from fiscal authority)[DK] [ES] [FR] [HU] [IT] [NO] [PT] [SE] [SK]
Flag-Denmark Flag-Spain Flag-France Flag-Hungary Flag-Italy Flag-Norway Flag-Portugal Flag-Sweden Flag-Slovakia
ESR.RDReference date[HU] [PT] [SE]
Flag-Hungary Flag-Portugal Flag-Sweden
ESR.RTLReference transaction location[BE] [DE] [DK]
Flag-Belgium Flag-Germany Flag-Denmark
ESR.RTTReference transaction terminal[BE] [DE] [DK]
Flag-Belgium Flag-Germany Flag-Denmark
ESR.RTNReference transaction number (associated transaction)[BE] [DE] [DK]
Flag-Belgium Flag-Germany Flag-Denmark
ESR.RsnReason for cancellation/return[FR] [HU] [NO] [PT]
Flag-France Flag-Hungary Flag-Norway Flag-Portugal

Line Void

  • A voided position is marked with an attribute Void="1"
  • The signs of quantity and amount for this position must be sent reversed (negative).
Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="7" T="6.88" Opr="101" OprN="Mario Rossi" OprTIN="xxx" 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="1020" Dsc="Example Item" TaxG="B" Amt="-1.50" Cat="11" CatN="Example Category 11" Void="1" />
<Pos PN="4" IN="1030" 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>
</ESR>
</Tra>

Z-Report / End of Day

A Z-report is a daily closure report that sums totals of different payment methods, returns, voids, etc. At the end of the day, the cash register needs to generate a daily closure and send the EFR a signal that the daily closure has been made. In some countries, the EFR then automatically generates additional information for Z-reports that are needed for the country specific audit exports.

A Z-report is marked with an attribute NFS="Z"

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="8" NFS="Z" Opr="101" OprN="Mario Rossi" />
</Tra>

X-Report

  • An X-report includes the same information as a daily closure, but just reports the current totals of the day up until the time the X-report was created, it does not close the day. For protocoll purposes, when an X-report is made on the cash register, it should send the EFR a signal that it has been made.

  • An X-report is marked with an attribute NFS="X"

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="9" NFS="X" Opr="101" OprN="Mario Rossi" />
</Tra>

Training

When a test/training receipt has been made, this must be documented for audit purposes.

A training receipt is marked with an attribute NFS="TRAINING"

note

When using fiscal printers, instead of NFS="TRAINING" the printer can be set in training mode.

Example
<Tra>
<ESR NFS="TRAINING" D="2024-06-01T08:30:15" TL="001" TT="1" TN="10" T="8.38" Opr="101" OprN="Mario Rossi" OprTIN="xxx" 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="1030" 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>
</ESR>
</Tra>
PropertiesDescriptionCountries
ESR.FR_TrainerOprator ID of the trainer[FR]
Flag-France

Vouchers / Gift Certificates

  • Voucher purchase and voucher payment has to be sent as a position with a position type attribute PTY="Vou"
  • A distinction is made between single-purpose vouchers (purpose of the voucher is known) and multi-purpose vouchers (purpose of the voucher is not known).
Attention Flag-Hungary Flag-Slovakia

In Hungary and Slovakia it is not possible to mix voucher sales positions with normal sales positions.

Country Specific Properties for Vouchers

PropertiesDescriptionCountries
Pos.VouNvoucher number[DE] [SK]
Flag-Germany Flag-Slovakia

Multi-Purpose Vouchers

Multi-purpose vouchers are vouchers for businesses that sell products with different tax groups. This is the most common type of voucher / gift certificate business case. In this case, the tax of the products that will be purchased with the voucher are unknown, therefore tax is 0% at the voucher sale. The real tax needs to be charged when using the multi-purpose voucher as a payment method.

Multi-Purpose Voucher Sale

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="11" T="103.98" Opr="101" OprN="Mario Rossi" OprTIN="xxx" 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 PTY="Vou" VouN="123456789" PN="2" IN="1030" Dsc="Example Voucher" TaxG="E" Amt="100.00" />
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="cash" Amt="110.00" />
<Pay Dsc="Example Change" PayG="change" Amt="-6.02" />
</PayA>
</ESR>
</Tra>

Multi-Purpose Voucher Payment

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="12" T="19.9" Opr="101" OprN="Mario Rossi" OprTIN="xxx" TP="Table 1">
<PosA>
<Pos PN="1" IN="1001" Dsc="Example Item" TaxG="A" Amt="119.90" Qty="1" QtyU="Pc." Pri="119.90" Cat="10" CatN="Example Category 10" />
<Pos PTY="Vou" VouN="123456789" PN="2" IN="1030" Dsc="Example Voucher" TaxG="E" Amt="-100.00" />
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="cash" Amt="20.00" />
<Pay Dsc="Example Change" PayG="change" Amt="-0.10" />
</PayA>
</ESR>
</Tra>

Single-Purpose Vouchers

  • For single-purpose vouchers, the tax rate must be specified by the voucher sale.
  • On a single-purpose voucher payment, the item that is paid for must be referenced by Pos.RPN

Single-Purpose Voucher Sale

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="13" T="103.98" Opr="101" OprN="Mario Rossi" OprTIN="xxx" 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 PTY="Vou" VouN="123456789" PN="2" IN="1030" Dsc="Example Voucher" TaxG="B" Amt="100.00" />
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="cash" Amt="110.00" />
<Pay Dsc="Example Change" PayG="change" Amt="-6.02" />
</PayA>
</ESR>
</Tra>

Voucher Payment

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="14" T="19.90" Opr="101" OprN="Mario Rossi" OprTIN="xxx" TP="Table 1">
<PosA>
<Pos PN="1" IN="1001" Dsc="Example Item" TaxG="B" Amt="119.90" Qty="1" QtyU="Pc." Pri="119.90" Cat="10" CatN="Example Category 10" />
<Pos PTY="Vou" VouN="123456789" PN="2" RPN="1" IN="1030" Dsc="Example Voucher" TaxG="B" Amt="-100.00" />
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="cash" Amt="20.00" />
<Pay Dsc="Example Change" PayG="change" Amt="-0.10" />
</PayA>
</ESR>
</Tra>

Advance Payments

  • Advance payments and resolutions are sent as a position and are marked with an attribute PTY="Adv"
  • It is not allowed to make a discount on an advance payment line

Advance Payment

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="15" T="300.00" Opr="101" OprN="Mario Rossi" OprTIN="xxx" TP="Table 1">
<PosA>
<Pos PTY="Adv" PN="1" Dsc="Example advance payment" TaxG="A" Amt="300.00" RDsc="Example Item" RPri="900.00" RQty="1" />
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="creditcard" Amt="300.00" />
</PayA>
</ESR>
</Tra>

Country Specific Properties for Advance Payment Settings

PropertiesDescriptionCountries
Pos.RDscReference description of the item for which the advance payment is made[FR] [PL]
Flag-France Flag-Poland
Pos.RPriReference price per item of the item for which the advance payment is made[FR] [PL]
Flag-France Flag-Poland
Pos.RQtyReference quantity of the item for which the advance payment is made[FR] [PL]
Flag-France Flag-Poland

Advance Payment Resolution

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="16" T="600.00" Opr="101" OprN="Mario Rossi" OprTIN="xxx" TP="Table 1" RFN="4711">
<PosA>
<Pos PN="1" Dsc="Example Item" TaxG="A" Amt="900.00" Qty="1" QtyU="Pc." Pri="1.99" Cat="10" CatN="Example Category 10" />
<Pos PTY="Adv" PN="2" RPN="1" Dsc="Example advance payment resolution" TaxG="A" Amt="-300.00" />
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="creditcard" Amt="300.00" />
</PayA>
</ESR>
</Tra>

Country Specific Properties for Advance Payment Resolution

PropertiesDescriptionCountries
ESR.RFNReference fiscal number of the original advance payment[PL]
Flag-Poland
Adv.RPNReference position number of the item for which the advance payment was made[PL]
Flag-Poland

Bottle/Container Deposit

Bottle or container deposit legislation is any law that requires the collection of a monetary deposit on beverage containers at the point of sale. In many countries in Europe, this is a very common business case. Deposit sales and deposit return are sent as position and are marked with an attribute PTY="Dep"

Deposit Sale

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="17" T="24.30" Opr="101" OprN="Mario Rossi" OprTIN="xxx" TP="Table 1">
<PosA>
<Pos PN="1" IN="1001" Dsc="Example bottled item" TaxG="A" Amt="19.80" Qty="20" QtyU="Pc." Pri="0.99" Cat="10" CatN="Example Category 10" />
<Pos PTY="Dep" PN="2" IN="1030" Dsc="Example bottle deposit" TaxG="A" Amt="3.00" Qty="20" Pri="0.15" />
<Pos PTY="Dep" PN="3" IN="1030" Dsc="Example box deposit" TaxG="A" Amt="1.50" Qty="1" Pri="1.50" />
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="debitcard" Amt="24.30" />
</PayA>
</ESR>
</Tra>

Deposit Return

When the bottle is returned to the point of sale, then the entire sum is refunded.

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="18" T="-4.50" Opr="101" OprN="Mario Rossi" OprTIN="xxx" TP="Table 1">
<PosA>
<Pos PTY="Dep" PN="1" IN="1030" Dsc="Example bottle deposit" TaxG="A" Amt="-3.00" Qty="-20" Pri="0.15" />
<Pos PTY="Dep" PN="2" IN="1030" Dsc="Example box deposit" TaxG="A" Amt="-1.50" Qty="-1" Pri="1.50" />
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="cash" Amt="-4.50" />
</PayA>
</ESR>
</Tra>
warning

Please check which tax group to use for bottle deposit in your country, some may require deposits to have 0% taxes

Attention Flag-Hungary

In Hungary it is not possible to mix deposit return position with normal sales positions


Tip

Tips need to be reported in some countries and future legislation will require tips to be reported in most countries. Implementing the tips business case now will keep your point of sale future-proof.

  • Tip is sent as position and is marked with an attribute PTY="Tip"
  • Usually tip is considered 0% tax. Please consult with your tax advisor for your specific country and use case.

Registering Tip Included in the Sale

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="18" T="17.00" Opr="101" OprN="Mario Rossi" OprTIN="xxx" TP="Table 1">
<PosA>
<Pos PN="1" IN="1001" Dsc="Example Item" TaxG="A" Amt="15.70" Qty="1" QtyU="Pc." Pri="15.70" Cat="10" CatN="Example Category 10" />
<Pos PTY="Tip" PN="2" Dsc="Example Tip text" TaxG="E" Amt="1.30" />
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="cash" Amt="20.00" />
<Pay Dsc="Example Change" PayG="change" Amt="-3.00" />
</PayA>
</ESR>
</Tra>

Registering Tip after Finished Sale

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="20" T="1.30" Opr="101" OprN="Mario Rossi" OprTIN="xxx" TP="Table 1" RFN="001/1/20">
<PosA>
<Pos PTY="Tip" PN="1" Dsc="Example Tip text" TaxG="E" Amt="1.30" />
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="cash" Amt="1.30" />
</PayA>
</ESR>
</Tra>

Country Specific Properties for Tip after Sale

PropertiesDescriptionCountries
ESR.RFNReference fiscal number of the receipt for which the tip is paid[HR]
Flag-Croatia

Invoice

  • A distinction is made between a fiscal invoice and a non-fiscal invoice, which is printed in addition to a fiscal receipt
  • An invoice must contain customer data. These are sent as element ESR.Ctm

Fiscal Invoice

Fiscal invoices are marked with an attribute DT="INVOICE"

Example
<Tra>
<ESR DT="INVOICE" D="2024-06-01T08:30:15" TL="001" TT="1" TN="21" T="399.00" Opr="101" OprN="Mario Rossi" OprTIN="xxx">
<Ctm CN="12" Nam="Example Name" Adr="Example street 1" Zip="10115" City="Berlin" Ctry="DE" TaxId="DE123456789" />
<PosA>
<Pos PN="1" Dsc="Example Item" Amt="399.00" TaxG="A" Qty="1" QtyU="Pc." Pri="399.00" Cat="10" CatN="Example Category 10" />
</PosA>
<PayA>
<Pay Dsc="Example payment" PayG="creditcard" Amt="399.00" />
</PayA>
</ESR>
</Tra>

Non-Fiscal Invoice

  • Non fiscal invoices are marked with an attribute NFS="INVOICE"
  • If your POS workflow requires the invoice to be printed additionally to a receipt issued before, it has to be registered with NFS="INVOICE". This way it is declared as nonfiscal, and not included a second time in the Grand Total.
Example
<Tra>
<ESR NFS="INVOICE" D="2024-06-01T08:30:15" TL="001" TT="1" TN="22" T="399.00" Opr="101" OprN="Mario Rossi" OprTIN="xxx">
<Ctm CN="12" Nam="Example Name" Adr="Example street 1" Zip="10115" City="Berlin" Ctry="DE" TaxId="DE123456789" />
<PosA>
<Pos PN="1" Dsc="Example Item" Amt="399.00" TaxG="A" Qty="1" QtyU="Pc." Pri="399.00" Cat="10" CatN="Example Category 10" />
</PosA>
<PayA>
<Pay Dsc="Example payment" PayG="creditcard" Amt="399.00" />
</PayA>
</ESR>
</Tra>

Invoice with Open Balance

If the invoice has not been paid, the paygroup must be set to "open" PayG="open".

Example
<Tra>
<ESR DT="INVOICE" D="2024-06-01T08:30:15" TL="001" TT="1" TN="23" T="399.00" Opr="101" OprN="Mario Rossi" OprTIN="xxx">
<Ctm CN="12" Nam="Example Name" Adr="Example street 1" Zip="10115" City="Berlin" Ctry="DE" TaxId="DE123456789" />
<PosA>
<Pos PN="1" Dsc="Example Item" Amt="399.00" TaxG="A" Qty="1" QtyU="Pc." Pri="399.00" Cat="10" CatN="Example Category 10" />
</PosA>
<PayA>
<Pay Dsc="Example payment" PayG="open" Amt="399.00" />
</PayA>
</ESR>
</Tra>

Payment of the Open Balance on POS

Example
<Tra>
<ESR NFS="PAY" D="2024-06-01T08:30:15" TL="001" TT="1" TN="24" T="0.00" Opr="101" OprN="Mario Rossi" OprTIN="xxx">
<PayA>
<Pay Dsc="Example payment" PayG="creditcard" Amt="399.00" />
<Pay Dsc="Example payment" PayG="open" Amt="-399.00" />
</PayA>
</ESR>
</Tra>

Abort

The abort of a receipt before it is finished is marked with the attibute NFS="ABORT"

Example
<Tra>
<ESR NFS="ABORT" D="2024-06-01T08:30:15" TL="001" TT="1" TN="25" T="8.38" Opr="101" OprN="Mario Rossi" OprTIN="xxx" 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>

Order

An order is marked with the attibute NFS="ORDER"

Example
<Tra>
<ESR NFS="ORDER" D="2024-06-01T08:30:15" TL="001" TT="1" TN="26" T="8.38" Opr="101" OprN="Mario Rossi" OprTIN="xxx" 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>
Attention Flag-Germany

In Germany the Date/Time of the first order has to be printed on the fiscal receipt as D0.
e.g.: <Tra><ESR D="2024-06-07T17:15:12" D0="2024-06-01T08:30:15"...>...</ESR></Tra>


Payment Transactions

Attention Flag-Hungary

In Hungary it is mandatory to send a reason for payment transactions. This reason must be send as attribute ESR.Rsn e.g.: "Rsn="01". The reasons are descript in the country guide.

Opening Balance

The opening balance is marked with the attibute NFS="INI".

Example
<Tra>
<ESR NFS="INI" D="2024-06-01T08:30:15" TL="001" TT="1" TN="27" T="500.00" Opr="101" OprN="Mario Rossi" OprTIN="xxx">
<PosA>
<Pos PN="1" Dsc="Example opening balance" TaxG="E" Amt="500.00" />
</PosA>
<PayA>
<Pay Dsc="Example payment" PayG="cash" Amt="500.00" />
</PayA>
</ESR>
</Tra>
Attention Flag-Hungary

In Hungary it is mandatory to send the opening balance on start of day.

Deposit of Change

A deposit of change is marked with the attibute NFS="TRANSFER" and a positive amount.

Example
<Tra>
<ESR NFS="TRANSFER" D="2024-06-01T08:30:15" TL="001" TT="1" TN="28" T="500.00" Opr="101" OprN="Mario Rossi" OprTIN="xxx">
<PosA>
<Pos PN="1" Dsc="Example transfer" TaxG="E" Amt="500.00" />
</PosA>
<PayA>
<Pay Dsc="Example payment" PayG="cash" Amt="500.00" />
</PayA>
</ESR>
</Tra>

Daily Closure Cash Out

A daily closure cash out is marked with the attibute NFS="TRANSFER" and a negative amount.

Example
<Tra>
<ESR NFS="TRANSFER" D="2024-06-01T08:30:15" TL="001" TT="1" TN="29" T="-500.00" Opr="101" OprN="Mario Rossi" OprTIN="xxx">
<PosA>
<Pos PN="1" Dsc="Example transfer" TaxG="E" Amt="-500.00" />
</PosA>
<PayA>
<Pay Dsc="Example payment" PayG="cash" Amt="-500.00" />
</PayA>
</ESR>
</Tra>

Pay In

A pay in is marked with the attibute NFS="PAY" and a positive amount.

Example
<Tra>
<ESR NFS="PAY" D="2024-06-01T08:30:15" TL="001" TT="1" TN="30" T="500.00" Opr="101" OprN="Mario Rossi" OprTIN="xxx">
<PosA>
<Pos PN="1" Dsc="Example pay in" TaxG="E" Amt="500.00" />
</PosA>
<PayA>
<Pay Dsc="Example payment" PayG="cash" Amt="500.00" />
</PayA>
</ESR>
</Tra>

Pay Out

A pay out is marked with the attibute NFS="PAY" and a negative amount.

Example
<Tra>
<ESR NFS="PAY" D="2024-06-01T08:30:15" TL="001" TT="1" TN="31" T="-500.00" Opr="101" OprN="Mario Rossi" OprTIN="xxx">
<PosA>
<Pos PN="1" Dsc="Example pay out" TaxG="E" Amt="-500.00" />
</PosA>
<PayA>
<Pay Dsc="Example payment" PayG="cash" Amt="-500.00" />
</PayA>
</ESR>
</Tra>

Reprints

[DK] [FR] [NO] [SE]
  • A reprint is marked with the attibute NFS="DUP" and a reference to the original receipt's FN as RFN=[original-FN] and D as RD=[original date].
  • Reprint must be sent to the EFR service in:
    Flag-Denmark Flag-France Flag-Norway Flag-Sweden
Example
<Tra>
<ESR NFS="DUP" RD="2024-06-01T08:10:15" RFN="001/1/10" Rsn="printing error" D="2024-06-01T08:30:15" TL="001" TT="1" TN="32" T="8.38" Opr="101" OprN="Mario Rossi" OprTIN="xxx" 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 Dsc="Example Payment" PayG="cash" Amt="10.00" />
<Pay Dsc="Example Change" PayG="change" Amt="-1.62" />
</PayA>
</ESR>
</Tra>

Rounding

[BE] [CZ] [IT] [HU] [NO] [SE] [SK]
  • Rounding on cash payments is sent as a payment with payment group "rounding" PayG="rounding"
  • In the following countries there are currently roundings:
    Flag-Belgium Flag-Czech Flag-Italy Flag-Hungary Flag-Norway Flag-Sweden Flag-Slovakia
Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="33" T="8.38" Opr="101" OprN="Mario Rossi" OprTIN="xxx" 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 Dsc="Example Rounding" PayG="rounding" Amt="-0.02" />
<Pay Dsc="Example Payment" PayG="cash" Amt="10.00" />
<Pay Dsc="Example Change" PayG="change" Amt="-1.60" />
</PayA>
</ESR>
</Tra>

Paying with Foreign Currency

For payment in foreign currency, the currency code CC, the amount of the foreign currency FAmt and the amount in the country currency Amt must also be specified

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

Cashier Log In

A cashier log in is marked with the attibute NFS="LOGIN".

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="35" NFS="LOGIN" Opr="101" OprN="Mario Rossi" OprTIN="xxx">
</ESR>
</Tra>

Cashier Log Out

A cashier log out is marked with the attibute NFS="LOGOUT".

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="36" NFS="LOGOUT" Opr="101" OprN="Mario Rossi" OprTIN="xxx">
</ESR>
</Tra>

Proforma Invoice

A proforma invoice is marked with the attibute NFS="PROFORMA".

Example
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="37" T="34.90" NFS="PROFORMA" Opr="101" OprN="Mario Rossi" OprTIN="xxx" TP="Table 1">
<PosA>
<Pos PN="1" IN="1030" Dsc="Example Service" TaxG="A" Amt="34.90" />
</PosA>
</ESR>
</Tra>

Export Events

Flag-Denmark Flag-France Flag-Norway Flag-Sweden
Countries: [DK] [FR] [NO] [SE]

In these countries, it is also mandatory to log events from the cash register via fiscalization. The following events are covered by the business cases above:

  • Cashier log in
  • Cashier log out
  • Reprints
  • Z-report / daily closure
  • X-report

Further events must be sent to the EFR service using audit records.

Example
<Audit Code="DRAWER_OPEN" Dsc="Drawer open" TL="001" TT="1" Opr="1" OprN="Operator name" />

The following events must be sent to the EFR service using audit records.

CodeDescription
DRAWER_OPENCash drawer open
DRAWER_CLOSECash drawer close
SUSPEND_RECEIPTSuspend transaction
RESUME_RECEIPTResume transaction
REPORTOther reports or receipts
PRICE_CHANGEPrice change
PRICE_LOOKUPPrice look-up
TRAINING_ONTraining mode on
TRAINING_OFFTraining mode off
CLOCK_RESETClock was reset
MEM_FULLMemory full (cash register)
EMERGENCY_ONEmergency mode on
EMERGENCY_OFFEmergency mode off
ABORTAbort receipt
OTHEROther event