Fiscal Requirements
Features of EFR
The EFR serves as system interface for certified fiscal printers. It does NOT replace a fiscal printer, which is still needed to fulfill the requirements of Italian fiscal law.
EFR keeps secure journals, as it does for other fiscal countries.
Sales transactions have to be printed using the fiscal functions of the printer. For this to be successful, two elements have to be in place:
- A transaction which contains sales data, sent via REST web request to the EFR
- A formatting file, which defines formal representation of this data
VAT Handling
As in other countries transaction data is normalized upon registration (details see TaxG Tax Group Assignment). Tax rates are controlled via ESR.TaxA
, Tax.Prc
is matched against the printer configuration, which is loaded with rates valid at startup system date (and after each closure).
Current rates are:
Prc | TaxG | Epson FP Index | Description |
---|---|---|---|
22% | A | 01 | difetto |
10% | B | 02 | prodotti turistici |
5% | C | 03 | prestazioni sociali |
4% | D | 04 | prima necessità |
0% | ES | 00 | Esente |
0% | EE | 10 | Esclusa |
0% | NS | 11 | Non soggetta |
0% | NI | 12 | Non imponibile |
0% | RM | 13 | Regime del margine |
0% | AL | 14 | Operazione non IVA |
In RT mode for 0% the appropriate tax group has to be used in Field TaxG to distinguish between the different groups, otherwise ES is used by default.
Payment Types
It is possible to define different payment types in the Pay element with Pay.PayG
.
If no Pay.PayG
field is present, Pay.Dsc
is used to check for valid payment type values.
If Pay.Dsc
is different from the possible types, cash
is used.
Following payment types are possible:
General
Following efsta PayG-values will be mapped to the corresponding printer payment type:
PayG | Epson_FP | Custom |
---|---|---|
cash , change , refund , atm , foreign , resto | 0-00 | 01 |
check , cheque , assegno | 1-00 | 02 |
credit , open | 2-00 | 07 |
creditcard , ec , carta | 2-01 | 03 |
ticket | 4-01 | 05-01 |
rounding | 6-00 | 53 |
voucher | 6-01 | 53 |
Lottery Handling
Deferred Lottery
With the new receipt lottery, there is an option to send information relating to the amount on the receipt to a particular lottery Server, which will convert the amount into a virtual lottery ticket. Periodically, this virtual ticket will be sent for participation to the lottery and the result will be available on the lottery web portal.
- During transmission of the lottery receipt to the tax authority, it is required to define the company name of the location where the printer RT has been installed. This is done by setting the corresponding header line number (Ragione Sociale Esercente). Please ensure this is taken care of by your fiscal partner on printer update or installation. By default the first header line is used as company name.
- The request to participate in the lottery game is done from the customers, providing a lottery code released from the lottery web portal.
- The printer will accumulate the request to participate in the lottery in a special memory and when the number of requests is equal to 100, as well as when a Z-report is created, the accumulated requests are sent to the lottery server.
- In case of refund or void of a receipt issued on a different printer, the lottery code has to be sent again.
- Checkdigit generation can be set in EFR profile.
- To participate in the lottery, the field
IT_CodiceLotteria
needs to be included in the transaction
To add the lottery code of a customer to a request, the field ESR.Ctm.IT_CodiceLotteria
is used:
<Tra>
<ESR>
<Ctm IT_CodiceLotteria="ABCDEFGH" />
Instant Lottery
With the new instant lottery active the printer will automatically print a lottery data matrix on the receipt if the payment was > 1€ and exclusively electronic. With EFR version >= 2.3.1.1 the response includes the field IT_CodiceLotteria if the receipt participated in the lottery:
<Fis D="10-12-18 15:52" FN="0039 0002 10122018 99MEX030623" DN="0002" ZI="39" ID="99MEX030623" IT_CodiceLotteria="AAAAAAAA" />
For this to work, the printer needs to download lottery codes from Agenzia delle Entrate. The status of the connection and downloaded codes can be checked using the corresponding printer manual.
Instant Lottery refunds/voids
Currently only on Epson_FP, Custom unknown
The printer requires the fixed lottery code sequence AAAAAAAA
on refunds/voids, if they are issued on a different printer than the original sales.
EFR automatically transmits this code to the printer on all refunds and voids if the printer serial in the field RFN is different.
This behavior can be disabled with the profile attribute IT_disableLotteryRefundCode
.
If you are using this attribute the POS needs to send the code in these cases like this:
<Tra>
<ESR>
<Ctm IT_CodiceLotteria="AAAAAAAA" />
…
The field IT_CodiceLotteria="AAAAAAAA"
is ignored on refunds with the same printer serial as the original sale, so it can be sent on all instant lottery refunds.
Printer State
State varies between different printer models, fields ModuleName, ErrorCode, Warning, ID and SimpleState are unified across different printers and countries.
Element | Description |
---|---|
URL | /peri/print/state |
Method | GET |
Query | RN |
Epson FP State
{
"ModuleName": "Epson_FP",
"ID": "99MEY022311",
"Info": "",
"Drawer": "",
"PaymentRounding": 0,
"CPU": "11.02",
"MF_STAT": "0",
"MF_REL": "04.0",
"MF_STATO": "00110",
"LastStateUpdate": 1643814294263,
"ZI": 21,
"LastZIUpdate": 1643814275251,
"RT_TYPE": "M",
"RT_MAIN": "02",
"RT_SUB": "08",
"RT_DAY": "1",
"RT_NWP": "0",
"RT_SEND": "0000",
"RT_OLD": "0000",
"RT_REJ": "0059",
"RT_EXPCD": "051021",
"RT_EXPCA": "110138",
"RT_BUILD": "0255",
"RT_DGFE": "2",
"RT_TRAIN": "1",
"LT_SEND": 0,
"LT_OLD": 0,
"LT_REJ": 0,
"LT_ACC": 0,
"SimpleState": {
"DayOpen": true,
"ZRequired": false,
"DrawerOpen": false,
"PaperNearEnd": false,
"PaperEnd": false,
"CoverOpen": false,
"MemAlmostFull": false,
"MemFull": false,
"CertExpires": "2021-10-05T00:00:00"
}
}
or with request header accept=text/xml
<PrintState>
<ModuleName>Epson_FP</ModuleName>
<ID>99MEY022311</ID>
<Info/>
<Drawer/>
<PaymentRounding>0</PaymentRounding>
<CPU>11.02</CPU>
<MF_STAT>0</MF_STAT>
<MF_REL>04.0</MF_REL>
<MF_STATO>00110</MF_STATO>
<LastStateUpdate>1643814330345</LastStateUpdate>
<ZI>21</ZI>
<LastZIUpdate>1643814306309</LastZIUpdate>
<RT_TYPE>M</RT_TYPE>
<RT_MAIN>02</RT_MAIN>
<RT_SUB>08</RT_SUB>
<RT_DAY>1</RT_DAY>
<RT_NWP>0</RT_NWP>
<RT_SEND>0000</RT_SEND>
<RT_OLD>0000</RT_OLD>
<RT_REJ>0059</RT_REJ>
<RT_EXPCD>051021</RT_EXPCD>
<RT_EXPCA>110138</RT_EXPCA>
<RT_BUILD>0255</RT_BUILD>
<RT_DGFE>2</RT_DGFE>
<RT_TRAIN>1</RT_TRAIN>
<LT_SEND>0</LT_SEND>
<LT_OLD>0</LT_OLD>
<LT_REJ>0</LT_REJ>
<LT_ACC>0</LT_ACC>
<SimpleState>
<DrawerOpen>false</DrawerOpen>
<PaperNearEnd>false</PaperNearEnd>
<PaperEnd>false</PaperEnd>
<CoverOpen>false</CoverOpen>
<MemAlmostFull>false</MemAlmostFull>
<MemFull>false</MemFull>
<CertExpires>2021-10-05T00:00:00</CertExpires>
</SimpleState>
</PrintState>
ModuleName
Name of the printer moduleID
printer IDZI
Z-report indexCPU
Fiscal firmware versionMF_STAT
Fiscal memory status0
OK1
Error2
Full3
Overflow
MF_REL
Fiscal memory firmware versionMF_STATO
5 bytes- First byte: Printer State
0
OK2
paper nearly empty3
No paper or cover open
- Second byte: Electronic Journal
0
OK1
nearly full2
Unformatted3
Previous4
From another fiscal printer5
Full
- Third byte: Cash drawer state
0
open1
closed
- Fourth byte: Receipt / Credit Note / Invoice
0
Fiscal receipt, credit note or direct invoice open1
Fiscal/Non-fiscal Closed2
Non-fiscal receipt open3
Payment in progress (Fiscal receipt or direct invoice open)4
Fiscal receipt – Error whilst transmitting ESC/POS commands (at receipt ending phase)5
Negative fiscal receipt, credit note or direct invoice6
Non-fiscal receipt – Error whilst transmitting ESC/POS commands7
JavaPOS-UPOS mode – Awaiting closure command (Fiscal receipt, credit note or direct invoice)8
Free or direct invoice open9
Credit note opened via the fiscal protocol or web serviceA
Box office ticket openB
Box office ticket closed
- Fifth byte: Operative
0
Stato Registrazione (MONITOR)1
X State2
Z State3
S State4
Box office5
Keyboard opened credit note
- First byte: Printer State
RT_TYPE
RT TypeI
Internal (fixed premises)E
External (market, street, door-to-door and seasonal traders)P
PalmtopM
MF type non telematics fiscal printer converted to RTS
RT server
RT_MAIN
Main status1
Not in service2
In service
RT_SUB
Sub Status5
Da Censire6
Censito7
Attivato8
Programmato RT
RT_DAY
Daily Open0
Daily Open FALSE1
Daily Open TRUE
RT_NWP
Non working period0
ready for transactions1
Z report must be performed
RT_SEND
Number of files to sendRT_OLD
Number of files considered oldRT_REJ
Number of rejected filesRT_BUILD
Firmware build numberRT_DGFE
Type of DGFE file system0
NO RT1
RT_TypeA2
RT_typeB
RT_TRAIN
Training mode (1... enabled)RT_EXPCD
Date of expired Device CertificateRT_EXPCA
Date of expired Communication Authority certificateLT_SEND
Number of Lottery receipt in the folder TO SENDLT_OLD
Number of daily files waiting to be sent to the tax authority older than a configurable number of daysLT_REJ
Number of Lottery Receipt rejected from TALT_ACC
Number of Lottery Receipt accepted from TASimpleState
Unified printer state across different printers and countriesDrawerOpen
BooleanPaperNearEnd
BooleanPaperEnd
BooleanCoverOpen
BooleanMemAlmostFull
BooleanMemFull
BooleanCertExpires
Datetime in format2021-10-05T00:00:00
Epson FP Lottery State
Element | Description |
---|---|
URL | /peri/print/state/lottery |
Method | GET |
Query | ZI Z-index (required) D Date DDMMYY (required) DN Receipt number RN |
If receipt number is omitted, the request returns all lottery files of the current day/ZI that received an error when sending to authority.
Response:
[
{
"Code": "01",
"ErrorCode": "FFFFF",
"AnswerId": "",
"DN": "0216-0027",
"ErrorCode": "To Send"
}
]
Custom
{
"ModuleName": "Custom",
"ID": "STITE350043",
"ZI": 11,
"LastZ": "2024-03-26T09:34:44",
"Info": "",
"Drawer": "",
"Warning": [],
"LastStateUpdate": 1711719455463,
"SimpleState": {
"DayOpen": true,
"ZRequired": false,
"NextZRequired": null,
"DrawerOpen": false,
"PaperNearEnd": false,
"PaperEnd": false,
"CoverOpen": false,
"MemAlmostFull": false,
"MemFull": false,
"CertExpires": "2032-03-18TT00:00:00"
},
"RT_STATE": "1",
"RT_KEY": "1",
"RT_CENSUS": "1",
"RT_ACTIVATION": "1",
"RT_MAIN": "1",
"RT_MAIN_DATE": "000000",
"RT_SIMULATION": "0",
"RT_DEMO": "0",
"RT_VAT_SPLIT": "0",
"RT_LOTT": "2",
"RT_LOTT_CERT": "1",
"RT_EXPCD": "180332",
"RT_OUTOFSERVICE": "0",
"RT_LOTT_NEXT": "1",
"RT_LOTT_TIME_SYNC": "0",
"RT_LOTT_DATE": "1",
"RT_UPG_PENDING": "0",
"RT_Z_SERVICE": "1",
"RT_SSN": "0",
"RT_LOTT_INST_NEXT": "1",
"RT_LOTT_INST_DATE": "000000",
"EJpresent": true,
"DateTimeRequired": false,
"FiscalMemoryOk": true,
"InitRequired": false,
"InitJumper": false,
"Serialization": true,
"Printing": false,
"PrinterOk": true,
"Training": false,
"AutocutterOk": true,
"PaymentRounding": 0
}
or with request header accept=text/xml
<PrintState>
<ModuleName>Custom</ModuleName>
<ID>STITE350043</ID>
<ZI>11</ZI>
<LastZ>2024-03-26T09:34:44</LastZ>
<Info/>
<Drawer/>
<Warning/>
<LastStateUpdate>1711719513726</LastStateUpdate>
<SimpleState>
<DayOpen>true</DayOpen>
<ZRequired>false</ZRequired>
<NextZRequired/>
<DrawerOpen>false</DrawerOpen>
<PaperNearEnd>false</PaperNearEnd>
<PaperEnd>false</PaperEnd>
<CoverOpen>false</CoverOpen>
<MemAlmostFull>false</MemAlmostFull>
<MemFull>false</MemFull>
<CertExpires>2032-03-18TT00:00:00</CertExpires>
</SimpleState>
<RT_STATE>1</RT_STATE>
<RT_KEY>1</RT_KEY>
<RT_CENSUS>1</RT_CENSUS>
<RT_ACTIVATION>1</RT_ACTIVATION>
<RT_MAIN>1</RT_MAIN>
<RT_MAIN_DATE>000000</RT_MAIN_DATE>
<RT_SIMULATION>0</RT_SIMULATION>
<RT_DEMO>0</RT_DEMO>
<RT_VAT_SPLIT>0</RT_VAT_SPLIT>
<RT_LOTT>2</RT_LOTT>
<RT_LOTT_CERT>1</RT_LOTT_CERT>
<RT_EXPCD>180332</RT_EXPCD>
<RT_OUTOFSERVICE>0</RT_OUTOFSERVICE>
<RT_LOTT_NEXT>1</RT_LOTT_NEXT>
<RT_LOTT_TIME_SYNC>0</RT_LOTT_TIME_SYNC>
<RT_LOTT_DATE>1</RT_LOTT_DATE>
<RT_UPG_PENDING>0</RT_UPG_PENDING>
<RT_Z_SERVICE>1</RT_Z_SERVICE>
<RT_SSN>0</RT_SSN>
<RT_LOTT_INST_NEXT>1</RT_LOTT_INST_NEXT>
<RT_LOTT_INST_DATE>000000</RT_LOTT_INST_DATE>
<EJpresent>true</EJpresent>
<DateTimeRequired>false</DateTimeRequired>
<FiscalMemoryOk>true</FiscalMemoryOk>
<InitRequired>false</InitRequired>
<InitJumper>false</InitJumper>
<Serialization>true</Serialization>
<Printing>false</Printing>
<PrinterOk>true</PrinterOk>
<Training>false</Training>
<AutocutterOk>true</AutocutterOk>
<PaymentRounding>0</PaymentRounding>
</PrintState>
ModuleName
Name of the printer moduleID
Printer IDZI
Z-report indexLastZ
Date of last Z reportRT_STATE
0/10
Native 1983 fiscal law1
RT
RT_KEY
Key generated 0/1RT_CENSUS
Census performed 0/1RT_ACTIVATION
Activated 0/1RT_MAIN
Main status 0/10
Not in service1
In service
RT_MAIN_DATE
In service dateRT_SIMULATION
Simulation active 0/1RT_DEMO
Demo active 0/1RT_VAT_SPLIT
VAT split activated 0/1RT_LOTT
Lottery status0
Disabled1
Deferred lottery enabled2
Deferred lottery & instant lottery enabled
RT_LOTT_CERT
Lottery certificate present 0/1RT_EXPCD
Certificate expiration dateRT_OUTOFSERVICE
Out of service 0/1RT_LOTT_NEXT
Active lottery service in the next document 0/1RT_LOTT_TIME_SYNC
Replay time for lottery transmissionsRT_LOTT_DATE
Deferred lottery activation dateRT_UPG_PENDING
Availability of new firmware upgrade 0/1RT_Z_SERVICE
Z http service availability 0/1RT_SSN
National health service 0/1RT_LOTT_INST_NEXT
Active instant lottery service in the next document 0/1RT_LOTT_INST_DATE
Instant lottery activation dateEJpresent
BooleanDateTimeRequired
BooleanFiscalMemoryOk
BooleanInitRequired
BooleanInitJumper
BooleanSerialization
BooleanPrinting
BooleanPrinterOk
BooleanTraining
BooleanAutocutterOk
BooleanPaymentRounding
Automatic printer rounding active 0/1SimpleState
Unified printer state across different printers and countriesDayOpen
BooleanZRequired
BooleanDrawerOpen
BooleanPaperNearEnd
BooleanPaperEnd
BooleanCoverOpen
BooleanMemAlmostFull
BooleanMemFull
BooleanCertExpires
Datetime in format2021-10-05T00:00:00
Other Printing Functions
Codice Fiscale
Currently not supported on Custom printers
Codice Fiscale can be transmitted to the printer by sending the code in the field ESR.Ctm.IT_CodiceFiscale
:
<Tra>
<ESR>
<Ctm IT_CodiceFiscale="..........." />
Reprint Fiscal Transaction
Currently not supported on Custom printers
Element | Description |
---|---|
URL | /peri/print/reprint |
Method | POST |
Body | empty |
Query | RN |
This function invokes the reprint of the last fiscal receipt on the fiscal printer. No data can be provided with this call, which is furthermore not journalized.
Direct Printing
Other non-fiscal prints can be sent directly to the EFR print function, no journaling or logging is performed:
Element | Description |
---|---|
URL | /peri/print |
Method | POST |
Body | plain text (plain/text) |
Query | RN, lay |
If JSON or XML data is sent in the request body, you can request format transformation by specifying a pug layout name:
/peri/print?lay=report2
Therefore you have to set the content type to application/json
or application/xml
.
In a multi-client configuration you may have to specify ?RN=[clientId]
to address the correct printer.
Line Display
During position and payment entry the cash register application should send referring description and price/amount information immediately to the customer display:
Element | Description |
---|---|
URL | /peri/display |
Method | POST |
Body | text |
Query | RN |
The first two text lines are sent to the standard customer display, capacity is 20 characters per line. Like with all other requests UTF-8 encoding is expected by default.
Example Body:
Arrotondato 30,00 €
Totale 30,01 €
Alternatively the following call may be used: /peri/display?text=This+is+test+line+1+Line+2
Cash Drawer
By default the cash drawer should be managed by the cash register application. Drawer pin, pulse on time and pulse off time can be set with the attribute “Drawer_Pin=PIN:ON:OFF”
. Default value is “2:15:15”
.
Open Drawer and Wait
Element | Description |
---|---|
URL | /peri/drawer/wait |
Method | POST |
Query | RN |
The cash drawer is opened immediately, after closing the response is sent. As the drawer might be left open for a longer time, an intermediate HTTP status 102 Processing
is sent after 30 seconds. Usually the application shows a message CASSETTO APERTO
and locks further operator actions while the drawer is open.
Open Drawer and Poll
Opens and responds immediately.
Element | Description |
---|---|
URL | /peri/drawer |
Method | POST |
Query | RN |
Afterwards you can poll the drawer state using request:
Element | Description |
---|---|
URL | /peri/drawer |
Method | GET |
Query | RN |
(e.g. once per second), which will signal
{"PeriDrawer":"[ModuleName]:open"}
or when request header accept=text/xml
is set
<DrawerState>
<PeriDrawer>[ModuleName]</PeriDrawer>
</DrawerState>
until final closing
{"PeriDrawer":"[ModuleName]"}
Manual Drawer Open
Manual drawer open (with key) and close events are logged in the transaction journal.
Drawer Parameters
Some cash drawers do not work with the standard configuration. Therefore you can use the profile attribute Drawer_Pin
. e.g.: Drawer_Pin=2:15:15
First parameter: DRW PIN
Second parameter: PULSE ON Time
Third parameter: PULSE OFF Time
Specifics
Return / Void Transactions
A „DOCUMENTO COMMERCIALE emesso per RESO MERCE“ (Return) or „DOCUMENTO COMMERCIALE emesso per ANNULLAMENTO“ (Void) is printed.
Important for a return/void is the FN
(Fiscal Number) in the response of the original sale. So first make a normal transaction, and use the value of Fis.FN
as ESR.RFN
(Reference Fiscal Number).
If no FN
is available, "POS", "VR", or "ND" instead of the printer serial can be used along with ESR.RD
and ESR.RTN
. A void transaction is issued if ESR.Void="1"
is set, otherwise a return transaction is issued.
The following error codes may occur during return/void transactions:
Error |
---|
#input parameters out of range (Explanation: wrong format of RFN or incorrect date) |
#receipt already refund |
#receipt already void |
#this is a refund receipt |
#this is a void receipt |
Void special option
If voiding the transaction on the same device as the original sale, it is possible to omit PosA
, PayA
and TaxA
:
<Tra>
<ESR TL="001" TT="1" T="-11.44" RFN="0269 0013 18082020 99MEX030623" Void="1"/>
</Tra>
Rounding
Rounding can be done by either POS, EFR or Printer on receipts with cash payment only. Amounts on receipt total and items must not be rounded, only payments can be rounded.
POS Rounding
The rounded amount must be printed in the receipt footer, e.g.:
di cui Arrot. DL N.50/2017 0.02 €
In case of rounding down an additional payment with payment group "6-00 Sconto a pagare" needs to be registered to prevent underpayment errors on the printer.
POS Rounding Down
- Receipt total: 2.72 €
- Cash Payment: 2.70 €
<Tra>
<ESR T="2.72">
<PosA>
<Pos PN="1" Dsc="Snack" TaxG="A" Amt="2.72" />
</PosA>
<PayA>
<Pay Dsc="Sconto a pagare" PayG="6-00" Amt="0.02"/>
<Pay Dsc="Cash" PayG="0" Amt="3.00"/>
<Pay Dsc="Resto" PayG="0" Amt="-0.30"/>
</PayA>
<Foot>
<Txt>di cui Arrot. DL N.50/2017 0.02 €</Txt>
</Foot>
</ESR>
</Tra>
POS Rounding Up
- Receipt total: 2.73 €
- Cash Payment: 2.75 €
<Tra>
<ESR T="2.73">
<PosA>
<Pos PN="1" Dsc="Snack" TaxG="A" Amt="2.73" />
</PosA>
<PayA>
<Pay Dsc="Cash" PayG="0" Amt="3.00"/>
<Pay Dsc="Resto" PayG="0" Amt="-0.25"/>
</PayA>
<Foot>
<Txt>di cui Arrot. DL N.50/2017 0.02 €</Txt>
</Foot>
</ESR>
</Tra>
EFR Rounding
Automatic EFR rounding can be enabled with attribute Fiscal_Rounding. If enabled EFR automatically inserts additional rounding payments and the corresponding footer text.
EFR Rounding Down
- Receipt total: 2.72 €
- Cash Payment: 2.70 €
<Tra>
<ESR T="2.72">
<PosA>
<Pos PN="1" Dsc="Snack" TaxG="A" Amt="2.72" />
</PosA>
<PayA>
<Pay Dsc="Cash" PayG="0" Amt="3.00"/>
<Pay Dsc="Resto" PayG="0" Amt="-0.30"/>
</PayA>
</ESR>
</Tra>
Missing 0.02 € payment with payment group "Sconto a pagare" and footer line di cui Arrot. DL N.50/2017 0.02 €
is inserted by EFR.
EFR Rounding Up
- Receipt total: 2.73 €
- Cash Payment: 2.75 €
<Tra>
<ESR T="2.73">
<PosA>
<Pos PN="1" Dsc="Snack" TaxG="A" Amt="2.73" />
</PosA>
<PayA>
<Pay Dsc="Cash" PayG="0" Amt="3.00"/>
<Pay Dsc="Resto" PayG="0" Amt="-0.25"/>
</PayA>
</ESR>
</Tra>
Footer line di cui Arrot. DL N.50/2017 0.02 €
is inserted by EFR.
EFR No Rounding
- Receipt total: 2.73 €
- Cash Payment: 2.73 €
<Tra>
<ESR T="2.73">
<PosA>
<Pos PN="1" Dsc="Snack" TaxG="A" Amt="2.73" />
</PosA>
<PayA>
<Pay Dsc="Cash" PayG="0" Amt="3.00"/>
<Pay Dsc="Resto" PayG="0" Amt="-0.27"/>
</PayA>
</ESR>
</Tra>
EFR will not apply rounding because the payment was exactly 2.73 €.
Printer Automatic Rounding
Epson Rounding Information
Setting automatic rounding on the printer is not recommended due to problems related to refunds. Automatic Rounding behavior of the printer can be set to
- 0 - Rounding disabled (printer default)
- 1 - Full Rounding
- 2 - Only Rounding down
- 3 - Only Rounding up Check with your tax counselor which option you have to choose. Keep in mind only cash payments have to be rounded! Only round in the Pay element. Split payments or payments with e.g: credit cards have to be accurate.
Printer Rounding Down
Rounded Payment
- Receipt total: 2.72 €
- Cash Payment: 2.70 €
<Tra>
<ESR T="2.72">
<PosA>
<Pos PN="1" Dsc="Snack" TaxG="A" Amt="2.72" />
</PosA>
<PayA>
<Pay Dsc="Cash" PayG="0" Amt="2.70"/>
</PayA>
</ESR>
</Tra>
Printout:
TOTALE COMPLESSIVO 2.72
di cui IVA 0.49
PAGAMENTO CONTANTE 2.70
SCONTO A PAGARE 0.02
IMPORTO PAGATO 2.70
...
Arro. DL N.50/2017 -0.02
Printout will look the same if automatic rounding is enabled and the payment is sent exact, e.g.: 2.72
Epson printer will decline the transaction if automatic rounding is disabled.
Printer Rounding Up
- Receipt total: 2.78 €
- Cash Payment: 2.80 €
<Tra>
<ESR T="2.78">
<PosA>
<Pos PN="1" Dsc="Snack" TaxG="A" Amt="2.78" />
</PosA>
<PayA>
<Pay Dsc="Cash" PayG="0" Amt="2.80"/>
</PayA>
</ESR>
</Tra>
Printout:
TOTALE COMPLESSIVO 2.78
di cui IVA 0.50
PAGAMENTO CONTANTE 2.80
IMPORTO PAGATO 2.80
...
Arro. DL N.50/2017 0.02
Printout will look the same if automatic rounding is enabled and the payment is sent exact, e.g.: 2.78
Free of Charge
Currently not supported on Custom printers
Free of Charge lines are negative Pos with PTY="FoC"
, RPN=[PN of item]
and TaxG 0%.
<Tra>
<ESR TL="001" TT="1" T="2000.00">
<PosA>
<Pos PN="1" Dsc="Item 1" TaxG="A" Amt="2500.00"/>
<Pos PTY="FoC" RPN="1" PN="2" Dsc="Free of Charge" TaxG="ES" Amt="-500.00"/>
</PosA>
...
</ESR>
</Tra>
Sale of Services
Service items are Pos-elements with PTY="Svc"
.
see business case Sale of Services
Lottery Code
This section is about the "deferred" lottery, not the instant lottery
To add a customer's lottery code to the receipt, specify Ctm.IT_CodiceLotteria
:
<Tra>
<ESR TL="001" TT="1">
<Ctm IT_CodiceLotteria="ABCDEFGH" />
<PosA>
<Pos PN="1" Dsc="Menu1" Qty="2" Pri="25.00" TaxG="A" Amt="50.00"/>
</PosA>
<PayA>
<Pay Dsc="Cash" PayG="0" Amt="50.00"/>
</PayA>
</ESR>
</Tra>
Invoice
Currently not supported on Custom printers
To print a fiscal invoice tag the transaction with Document Type ("Invoice") and – if available – Document Number (range 1-99999): On fiscal invoices, quantity and price are printed for every position.
see business case Invoice
Daily Closure / Chiusura / Z-report
The fiscal printer's closure function ("CHIUSURA FISCALE") is invoked by sending a non-fiscal signed transaction "Z Report".
see business case Z-Report / End of Day
Response for Italy
Element | Description |
---|---|
T | Daily Total |
CAmt | Daily Refund Amount (compatibility with MF) |
RAmt | Daily Refund Amount |
VAmt | Daily Void Amount |
ZTax
elements are given per TaxI
, the index in the printer's tax accumulators. ZTax
elements are omitted if Amt
is 0.