Business Cases
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.
We recommand to use the predefined tax groups from efsta. Otherwise, various 0% tax rates cannot be represented and the default 0% tax group is used instead.
With TaxA
Example
- XML
- JSON
<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" 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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "cash",
"Amt": "10.00"
},
{
"_": "Pay",
"Dsc": "Example Change",
"PayG": "change",
"Amt": "-1.62"
}
],
"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"
}
]
}
}
}
Without TaxA
If the tax array is omitted, the EFR service calculates the tax amounts automatically.
Example
- XML
- JSON
<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" 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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "cash",
"Amt": "10.00"
},
{
"_": "Pay",
"Dsc": "Example Change",
"PayG": "change",
"Amt": "-1.62"
}
]
}
}
}
Country Specific Properties
Properties | Description | Countries | Mandatory |
---|---|---|---|
Pos.SKU | Stock Keeping Unit/article number | [DE] | If available in POS data |
Pos.Cat, Pos.CatN | Category, Category name | [BE] [DE] [DK] [NO] [SE] | If available in POS data |
Pos.IN | Article specific id. Used to track changes to an article's registration. | [SE] | Yes |
Pos.Resume | When a receipt was parked before all positions which are resumed need to be marked with Resume=1 | [SE] | Yes |
Pos.TS | Article registration timestamp | [SE] | Yes |
ESR.OprN | Operator Name | [BE] [DE] [DK] [NO] [PL] [PT] [SE] | If available in POS data |
ESR.TP | Transaction point | [DE] | If the transactions can be assigned to different areas (e.g. table number) |
ESR.OprTIN | Operator Tax Number | [BE] [HR] [SI] | Yes |
ESR.OprSSN | Operator Social Security Number | [BE] | Yes |
ESR.ResumeFN | If a receipt was previously parked (Parking of Receipts (SUSPEND)) this property must be included and set to the fiscal number (FN) of the previously parked receipt | [SE] | Yes *If a parked receipt is continued |
ESR.TID | TSE Transaction ID | [DE] | See Start Transaction |


In Croatia and Slovenia there is a strict length check of the TIN value and if discrepancies are detected, the request will be rejected. These are the necessary value lengths (prefix not included):
- Croatia: 10 characters
- Slovenia: 8 characters
Sale of Services
A sale of a service is sent as a position and is marked with an attribute PTY="Svc
Example
- XML
- JSON
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="2" T="34.90" Opr="101" OprN="Mario Rossi" OprTIN="12345678" 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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "cash",
"Amt": "40.00"
},
{
"_": "Pay",
"Dsc": "Example Change",
"PayG": "change",
"Amt": "-5.10"
}
]
}
}
}
Discount
- Discounts are sent as a modifier element
Mod
with a negative amountMod.Amt
. - Discounts must indicate which position numbers
Mod.PN
they refer to. Position number*
means that the discount refers to all previous positions.
Example
- XML
- JSON
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="3" T="6.88" 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" />
<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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "cash",
"Amt": "10.00"
},
{
"_": "Pay",
"Dsc": "Example Change",
"PayG": "change",
"Amt": "-3.12"
}
]
}
}
}
Surcharge
- Surcharge are sent as a Modifier element
Mod
with a positive amountMod.Amt
- Surcharge must indicate which position numbers
Mod.PN
they refer to. Position number*
means that the surcharge refers to all previous positions.
Example
- XML
- JSON
<Tra>
<ESR TL="001" TT="1" TN="4" T="4.48" 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" />
<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="-5.52" />
</PayA>
</ESR>
</Tra>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "cash",
"Amt": "10.00"
},
{
"_": "Pay",
"Dsc": "Example Change",
"PayG": "change",
"Amt": "-3.12"
}
]
}
}
}
Refund / Return of Goods
- Refunds are sent with negative quantities
Pos.Qty
and negative amountsPos.Amt
. - Discounts/Surcharges must also be taken into account when returning items
- Refunds must reference the original transaction by
ESR.RFN
orESR.RTL
&ESR.RTT
&ESR.RTN
, see country-specific properties
Example
- XML
- JSON
<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="12345678">
<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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "cash",
"Amt": "-3.48"
}
]
}
}
}

In Hungary the customer data is required for refunds/voids. See Ctm object in example invoice
Country Specific Properties for Refunds
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
orESR.RTL
&ESR.RTT
&ESR.RTN
, see country-specific properties
Example
- XML
- JSON
<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="12345678">
<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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "cash",
"Amt": "-3.48"
}
]
}
}
}

In Hungary the customer data is required for refunds/voids. See Ctm object in example invoice
Country Specific Properties for Void
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
- XML
- JSON
<Tra>
<ESR TL="001" TT="1" TN="7" T="6.88" 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="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="-3.12" />
</PayA>
</ESR>
</Tra>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "cash",
"Amt": "10.00"
},
{
"_": "Pay",
"Dsc": "Example Change",
"PayG": "change",
"Amt": "-1.62"
}
]
}
}
}
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
- XML
- JSON
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="8" NFS="Z" Opr="101" OprN="Mario Rossi" />
</Tra>
{
"Tra": {
"ESR": {
"D": "2024-06-01T08:30:15",
"TL": "001",
"TT": "1",
"TN": "8",
"NFS": "Z",
"Opr": "101",
"OprN": "Mario Rossi"
}
}
}
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
- XML
- JSON
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="9" NFS="X" Opr="101" OprN="Mario Rossi" />
</Tra>
{
"Tra": {
"ESR": {
"D": "2024-06-01T08:30:15",
"TL": "001",
"TT": "1",
"TN": "9",
"NFS": "X",
"Opr": "101",
"OprN": "Mario Rossi"
}
}
}
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"
When using fiscal printers, instead of NFS="TRAINING"
the printer can be set in training mode.
Example
- XML
- JSON
<Tra>
<ESR NFS="TRAINING" TL="001" TT="1" TN="10" T="6.88" 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="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="-3.12" />
</PayA>
</ESR>
</Tra>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "cash",
"Amt": "10.00"
},
{
"_": "Pay",
"Dsc": "Example Change",
"PayG": "change",
"Amt": "-1.62"
}
]
}
}
}
Properties | Description | Countries |
---|---|---|
ESR.FR_Trainer | Oprator ID of the trainer | [FR] |
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).


In Hungary and Slovakia it is not possible to mix voucher sales positions with normal sales positions.
Country Specific Properties for Vouchers
Properties | Description | Countries |
---|---|---|
Pos.VouN | voucher number | [DE] [SK] |
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
- XML
- JSON
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="11" T="103.98" 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 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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "cash",
"Amt": "110.00"
},
{
"_": "Pay",
"Dsc": "Example Change",
"PayG": "change",
"Amt": "-6.02"
}
]
}
}
}
Multi-Purpose Voucher Payment
Example
- XML
- JSON
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="12" T="19.9" Opr="101" OprN="Mario Rossi" OprTIN="12345678" 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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "cash",
"Amt": "20.00"
},
{
"_": "Pay",
"Dsc": "Example Change",
"PayG": "change",
"Amt": "-0.10"
}
]
}
}
}
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
- XML
- JSON
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="13" T="103.98" 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 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="110.00" />
<Pay Dsc="Example Change" PayG="change" Amt="-6.02" />
</PayA>
</ESR>
</Tra>
{
"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",
"RPN": "1",
"IN": "1030",
"Dsc": "Example Voucher",
"TaxG": "B",
"Amt": "100.00"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "cash",
"Amt": "110.00"
},
{
"_": "Pay",
"Dsc": "Example Change",
"PayG": "change",
"Amt": "-6.02"
}
]
}
}
}
Voucher Payment
Example
- XML
- JSON
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="14" T="19.90" Opr="101" OprN="Mario Rossi" OprTIN="12345678" 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>
{
"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",
"IN": "1030",
"Dsc": "Example Voucher",
"TaxG": "B",
"Amt": "-100.00"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "cash",
"Amt": "20.00"
},
{
"_": "Pay",
"Dsc": "Example Change",
"PayG": "change",
"Amt": "-0.10"
}
]
}
}
}
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
- XML
- JSON
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="15" T="300.00" Opr="101" OprN="Mario Rossi" OprTIN="12345678" 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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "creditcard",
"Amt": "300.00"
}
]
}
}
}
Country Specific Properties for Advance Payment Settings
Advance Payment Resolution
Example
- XML
- JSON
<Tra>
<ESR TL="001" TT="1" TN="16" T="600.00" Opr="101" OprN="Mario Rossi" OprTIN="12345678" TP="Table 1" RFN="4711">
<PosA>
<Pos PN="1" Dsc="Example Item" TaxG="A" Amt="900.00" Qty="100" QtyU="Pc." Pri="9.00" Cat="10" CatN="Example Category 10" />
<Pos PTY="Adv" PN="2" RPN="1" Dsc="Example advance payment redemption" TaxG="A" Amt="-300.00" />
</PosA>
<PayA>
<Pay Dsc="Example Payment" PayG="creditcard" Amt="600.00" />
</PayA>
</ESR>
</Tra>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "creditcard",
"Amt": "300.00"
}
]
}
}
}
Country Specific Properties for Advance Payment Resolution
Properties | Description | Countries |
---|---|---|
ESR.RFN | Reference fiscal number of the original advance payment | [PL] |
Adv.RPN | Reference position number of the item for which the advance payment was made | [PL] |
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
- XML
- JSON
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="17" T="24.30" Opr="101" OprN="Mario Rossi" OprTIN="12345678" 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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "debitcard",
"Amt": "24.30"
}
]
}
}
}
Deposit Return
When the bottle is returned to the point of sale, then the entire sum is refunded.
Example
- XML
- JSON
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="18" T="-4.50" Opr="101" OprN="Mario Rossi" OprTIN="12345678" 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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "cash",
"Amt": "-4.50"
}
]
}
}
}
Please check which tax group to use for bottle deposit in your country, some may require deposits to have 0% taxes


In Hungary and Sweden, 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
- XML
- JSON
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="19" T="17.00" Opr="101" OprN="Mario Rossi" OprTIN="12345678" 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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "cash",
"Amt": "20.00"
},
{
"_": "Pay",
"Dsc": "Example Change",
"PayG": "change",
"Amt": "-3.00"
}
]
}
}
}
Registering Tip after Finished Sale
Example
- XML
- JSON
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="20" T="1.30" Opr="101" OprN="Mario Rossi" OprTIN="12345678" 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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "cash",
"Amt": "1.30"
}
]
}
}
}
Country Specific Properties for Tip after Sale
Properties | Description | Countries |
---|---|---|
ESR.RFN | Reference fiscal number of the receipt for which the tip is paid | [HR] |
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"

In Spain, all data concerning Ctm (like NIF/TaxID, Name, Postal Code, Address aso.) has to be included, otherwise there will be warnings.
Example
- XML
- JSON
<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="12345678">
<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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example payment",
"PayG": "creditcard",
"Amt": "399.00"
}
]
}
}
}
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.

In Spain, RFN and RD are mandatory for NFS invoices.
Example
- XML
- JSON
<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="12345678">
<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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example payment",
"PayG": "creditcard",
"Amt": "399.00"
}
]
}
}
}
Invoice with Open Balance
If the invoice has not been paid, the paygroup must be set to "open" PayG="open"
.
Example
- XML
- JSON
<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="12345678">
<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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example payment",
"PayG": "open",
"Amt": "399.00"
}
]
}
}
}
Payment of the Open Balance on POS
Example
- XML
- JSON
<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="12345678">
<PayA>
<Pay Dsc="Example payment" PayG="creditcard" Amt="399.00" />
<Pay Dsc="Example payment" PayG="open" Amt="-399.00" />
</PayA>
</ESR>
</Tra>
{
"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"
}
]
}
}
}
Abort
The abort of a receipt before it is finished is marked with the attibute NFS="ABORT"
Example
- XML
- JSON
<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="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>
{
"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"
}
]
}
}
}
Order
An order is marked with the attibute NFS="ORDER"
Example
- XML
- JSON
<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="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>
{
"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"
}
]
}
}
}

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

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.

In Sweden, all of the Payment Transactions are mandatory!
Opening Balance
The opening balance is marked with the attibute NFS="INI"
.
Example
- XML
- JSON
<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="12345678">
<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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example payment",
"PayG": "cash",
"Amt": "500.00"
}
]
}
}
}

In Hungary, the opening balance starts the day. If no opening balance is sent, all subsequent transactions will be rejected.
Deposit of Change
A deposit of change is marked with the attibute NFS="TRANSFER"
and a positive amount.
Example
- XML
- JSON
<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="12345678">
<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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example payment",
"PayG": "cash",
"Amt": "500.00"
}
]
}
}
}
Daily Closure Cash Out
A daily closure cash out is marked with the attibute NFS="TRANSFER"
and a negative amount.
Example
- XML
- JSON
<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="12345678">
<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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example payment",
"PayG": "cash",
"Amt": "-500.00"
}
]
}
}
}
Pay In
A pay in is marked with the attibute NFS="PAY"
and a positive amount.
Example
- XML
- JSON
<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="12345678">
<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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example payment",
"PayG": "cash",
"Amt": "500.00"
}
]
}
}
}
Pay Out
A pay out is marked with the attibute NFS="PAY"
and a negative amount.
Example
- XML
- JSON
<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="12345678">
<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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example payment",
"PayG": "cash",
"Amt": "-500.00"
}
]
}
}
}
Reprints

Only one single copy of a cash receipt is allowed!
- A reprint is marked with the attibute
NFS="DUP"
and a reference to the original receipt'sFN
asRFN=[original-FN]
andD
asRD=[original date]
.
Example
- XML
- JSON
<Tra>
<ESR NFS="DUP" RD="2024-06-01T08:10:15" RFiscal="GMDTPAHXUWJ4DP77FGOFE3NUXPWO6ZG7;6TTZM3BYMSKOKVHF5VM6BZAUAA" 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="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 Dsc="Example Payment" PayG="cash" Amt="10.00" />
<Pay Dsc="Example Change" PayG="change" Amt="-1.62" />
</PayA>
</ESR>
</Tra>
{
"Tra": {
"ESR": {
"NFS": "DUP",
"RD": "2024-06-01T08:10:15",
"RFiscal": "GMDTPAHXUWJ4DP77FGOFE3NUXPWO6ZG7;6TTZM3BYMSKOKVHF5VM6BZAUAA",
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "cash",
"Amt": "10.00"
},
{
"_": "Pay",
"Dsc": "Example Change",
"PayG": "change",
"Amt": "-1.62"
}
]
}
}
}
Country Specific Properties for Reprint
Rounding
- Rounding on cash payments is sent as a payment with payment group "rounding"
PayG="rounding"
Example
- XML
- JSON
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="33" 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 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>
{
"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"
}
],
"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"
}
]
}
}
}
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
- XML
- JSON
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="34" T="34.90" Opr="101" OprN="Mario Rossi" OprTIN="12345678" 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>
{
"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"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "cash",
"FAmt": "40.00",
"CC": "USD",
"Amt": "37.40"
},
{
"_": "Pay",
"Dsc": "Example Change",
"PayG": "change",
"Amt": "-2.50"
}
]
}
}
}
Cashier Log In
A cashier log in is marked with the attibute NFS="LOGIN"
.
Example
- XML
- JSON
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="35" NFS="LOGIN" Opr="101" OprN="Mario Rossi" OprTIN="12345678">
</ESR>
</Tra>
{
"Tra": {
"ESR": {
"D": "2024-06-01T08:30:15",
"TL": "001",
"TT": "1",
"TN": "35",
"NFS": "LOGIN",
"Opr": "101",
"OprN": "Mario Rossi",
"OprTIN": "xxx"
}
}
}
Cashier Log Out
A cashier log out is marked with the attibute NFS="LOGOUT"
.
Example
- XML
- JSON
<Tra>
<ESR D="2024-06-01T08:30:15" TL="001" TT="1" TN="36" NFS="LOGOUT" Opr="101" OprN="Mario Rossi" OprTIN="12345678">
</ESR>
</Tra>
{
"Tra": {
"ESR": {
"D": "2024-06-01T08:30:15",
"TL": "001",
"TT": "1",
"TN": "36",
"NFS": "LOGOUT",
"Opr": "101",
"OprN": "Mario Rossi",
"OprTIN": "xxx"
}
}
}
Proforma Invoice
A proforma invoice is marked with the attibute NFS="PROFORMA"
.
Example
- XML
- JSON
<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="12345678" TP="Table 1">
<PosA>
<Pos PN="1" IN="1030" Dsc="Example item" TaxG="A" Amt="34.90" />
</PosA>
</ESR>
</Tra>
{
"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 item",
"TaxG": "A",
"Amt": "34.90"
}
]
}
}
}
Export Events
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
- XML
- JSON
<Audit Code="DRAWER_OPEN" Dsc="Drawer open" TL="001" TT="1" Opr="1" OprN="Operator name" />
{
"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.
Code | Description |
---|---|
DRAWER_OPEN | Cash drawer open |
DRAWER_CLOSE | Cash drawer close |
SUSPEND_RECEIPT | Suspend transaction |
RESUME_RECEIPT | Resume transaction |
REPORT | Other reports or receipts |
PRICE_CHANGE | Price change |
PRICE_LOOKUP | Price look-up |
TRAINING_ON | Training mode on |
TRAINING_OFF | Training mode off |
CLOCK_RESET | Clock was reset |
MEM_FULL | Memory full (cash register) |
EMERGENCY_ON | Emergency mode on |
EMERGENCY_OFF | Emergency mode off |
ABORT | Abort receipt |
OTHER | Other event |
Non-fiscal Transaction without Printing
A non-fiscal transaction that is registered in the EFR without triggering printing is marked with the NF
or NFS
field and the DO="noprint"
attribute.
Example
- XML
- JSON
<Tra>
<ESR TL="001" TT="1" T="8.38" Opr="101" OprN="Mario Rossi" OprTIN="xxx" TP="Table 1" NF="DOC" DO="noprint">
<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>
</ESR>
</Tra>
{
"Tra": {
"ESR": {
"TL": "002",
"TT": "1",
"Opr": "101",
"OprN": "Mario Rossi",
"OprTIN": "xxx",
"TP": "Table 1",
"NF": "DOC",
"DO": "noprint",
"PosA": [
{
"_": "Pos",
"PN": "1",
"IN": "1001",
"Dsc": "Example Item",
"TaxG": "B",
"Amt": "3.98",
"Qty": "2",
"QtyU": "Pc.",
"Pri": "1.99",
"Cat": "10",
"CatN": "Example Category 10"
},
{
"_": "Pos",
"PN": "2",
"IN": "1020",
"Dsc": "Example Item xorigo",
"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": "B",
"Amt": "2.90",
"Cat": "12",
"CatN": "Example Category 12"
}
],
"PayA": [
{
"_": "Pay",
"Dsc": "Example Payment",
"PayG": "cash",
"Amt": "10.00"
},
{
"_": "Pay",
"Dsc": "Example Change",
"PayG": "change",
"Amt": "-1.62"
}
]
}
}
}