0% found this document useful (0 votes)
223 views

UI Communication Protocol FISCAL PRINTERS

FISCAL PRINTER PROGRAMMING INTERFACE DESCRIPTION DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

Uploaded by

Ashok Bezawada
Copyright
© Public Domain
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
223 views

UI Communication Protocol FISCAL PRINTERS

FISCAL PRINTER PROGRAMMING INTERFACE DESCRIPTION DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

Uploaded by

Ashok Bezawada
Copyright
© Public Domain
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 52

Fiscal printer programming interface Version1.

00BG Page 1
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

FISCAL PRINTER PROGRAMMING INTERFACE DESCRIPTION


DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

Version 1.00BG

INTRODUCTION
The fiscal device is controlled by application software with which it communicates over an RS232
asynchronous serial or another interface. It is intended to execute a predefined set of commands in a logical order
depending on the types of operations to be executed. The application software has no direct access to the resources
of the fiscal device, but it can retrieve data on the status of the fiscal device and the fiscal memory.

The fiscal device executes the following types of operations:


 Store the Unique Fiscal Device ID and Fiscal Memory ID.
 Store the fiscal parameters, such as taxpayer’s UIC, VAT number, date of placing into operation, etc.
 Store owner’s information, such as address, name, etc.
 Store the sales values and generate a customer receipt.
 Store the daily sales in the fiscal memory and generate a daily financial report.
 Store the text of the fiscal receipts and the daily reports in the Electronic Journal (EJ) and generate EJ
reports on demand.
 Generate sales and fiscal memory contents reports.
 Print reports generated by the application.
 Upload data to the application software.
 Send data to the National Revenue Agency over a GPRS modem.

TAX GROUPS AND VAT CALCULATION


Each sale is assigned to a specific tax (VAT) group specifying the tax rate applicable to the base price to form
the sale price. The fiscal printer can operate with a maximum of 8 tax groups, usually coded with the first letters of
the alphabet of the country for which the fiscal printer (FP) is set up, e.g., for Bulgaria, these are ‘ А,’ ‘Б,’ ‘В,’ ‘Г,’
‘Д,’ ‘Е,’ ‘Ж’ and ‘З’.
Each tax group is assigned to a tax rate (percentage), which must be a number not higher than 99.00, with no
more than two decimal places. Some of the eight standard tax groups may be disabled by setting Enabled_taxes in
command 83 (53H).
Sale commands accept as parameters the capital letters ‘А,’ ‘Б,’ ‘В,’ ‘Г,’ ‘Д,’ ‘Е,’ ‘Ж’ and ‘З’ (DOS or 1251
codepage) or, respectively, the first Latin alphabet letters ‘A,’ ‘B,’ ‘C,’ ‘D,’ ‘E,’ ‘F,’ ‘G’ and ‘H’. The same applies
to all commands expecting a tax group as an input parameter (for instance, PLU programming in command 107).
LATIN CHARACTERS ARE ALLOWED ONLY AS AN INPUT PARAMETER! In every printout, the tax groups are in
Cyrillic!
The net sale value is calculated using the formula:
Net_Sum = ROUND(Sales/(1 + Rate))
The ROUND function performs standard rounding down to the smallest used currency unit (stotinki or leva
where integers are used).
The value of the payable tax is calculated using the formula:
Tax = Sales – Net_Sum

OPERATION MODES OF THE FISCAL DEVICE


The fiscal device can operate in two modes.
 Training mode. The device is not fiscally registered. All data required for its normal operation are
entered and stored in the fiscal memory except the owner’s UIC and the tax rates. Customer receipts may be
opened and issued, but the text ‘non-fiscal receipt’ is always printed on them. Daily financial reports with reset
may be created, but they are not stored in the fiscal memory. Printed information is not stored in the EJ.
 Normal mode. The device is fiscally registered. The owner’s UIC is entered and stored in the fiscal
memory. All fiscal rules apply. The registration with the NRA is made over the modem and the respective IDs
are received and stored.

_
Fiscal printer programming interface Version1.00BG Page 2
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

STATUSES OF THE FISCAL DEVICE


The fiscal printer may have a number of statuses. Transition from one status to another is not always possible.
Printer control and transitions between statuses, where possible, are carried out by the application software on the
Host (PC), which must be strictly consistent with the used protocol. If the protocol is incorrectly applied, the printer
may enter an undesired status or its transition through a certain status may be skipped, resulting in the printer
entering the ERROR status.

A) INITIAL STATUS
In this status, the date and time must be set, the Fiscal Memory ID, the Unique Device ID and the country code
must be programmed. THESE OPERATIONS ARE CARRIED OUT ONLY BY THE MANUFACTURER
BEFORE THE HANDOVER TO THE CUSTOMER!
The following commands must be carried out in the specified order: 61 (3DH) and 91 (5BH).

B) STATUS AFTER THE SERIAL NUMBER AND FISCAL MEMORY ID ARE SET
In this status, the following operations must be performed:
 Format the EJ using command 134 (86H).
 Set the currency name, number of decimal places and number and values of the tax rates using
command 83 (53H).

After these operations are performed, the fiscal printer is ready to be handed over to its customer/user, i.e., in
this status, the devices are held at the manufacturer’s warehouse.

C) STATUS AT THE TIME OF HANDOVER TO THE CUSTOMER


In this status, the “header” and “footer” must be set, i.e., the information printed at the top and the bottom of
each receipt. The “header” usually contains information on the owner (company name, address, etc.), while the
“footer” contains some advertisement. The command 43 (2BH) needs to be performed for each line being set.
Additional settings, such as the programming of a logo graphic, print density, serial port settings, etc., can also
be made here.

D) TRAINING MODE
The FP remains in this status until it is fiscally registered. Receipts can be issued, however, one must bear in
mind that even the customer receipts in this mode are marked as non-fiscal. A daily financial report with reset (Z-
report) can be created, but no record is made in the fiscal memory. An UIC is set, but it is not stored in the fiscal
memory and can be edited. Fiscal memory reports are not run. Memory resets, if any, are not recorded in the fiscal
memory. The clock can be set freely. In training mode, the fiscal printer CAN NOT BE USED at points of sale—
it is intended to be used for training purposes only.

E) FISCALLY REGISTERED FISCAL PRINTER


In this status, customer financial receipts marked as fiscal can be issued. When a daily financial report with
reset (Z-report) is run, it is recorded in the fiscal memory. The date can only be set after the last fiscal memory
record date. The UIC is stored in the FP and can no longer be edited. IT IS NOT POSSIBLE for the printer to exit
the fiscal mode without replacing the fiscal memory.
Before the fiscal registration, the device owner’s UIC must be set, if it was not set already (command 98
(62H)), and then command 72 (48H) must be executed. Then, the printer enters fiscal mode, but is not yet ready for
operation and will reject an attempt to print fiscal receipts. For normal operation, the printer needs to be registered at
the NRA using the software provided for this purpose.

F) IRRECOVERABLE ERROR IN THE FISCAL PRINTER


The fiscal printer enters this status when a serious hardware or logic error is detected during operation of the
device or if there is a fault in the fiscal memory unit, EJ or tax terminal. In this mode, after the printer is powered
on, it prints the “FATAL ERROR: 4” bold text for an error in the fiscal memory or a descriptive message for the
problem with any of the other printer peripherals. The printer rejects any command to open fiscal receipts or make a
record in the fiscal memory. Only diagnostic commands and regular reports can be run.
The RAM needs to be reset and a new fiscal memory unit, EJ or tax terminal needs to be installed, depending
on the fault.
THESE OPERATIONS MUST BE CARRIED OUT BY A SERVICE CENTRE, AUTHORISED BY THE
BULGARIAN INSTITUTE OF METROLOGY AND HOLDING A SERVICE CERTIFICATE FOR THE
RESPECTIVE FISCAL DEVICE MODEL, WITH WHICH THE TAXPAYER HAS EXECUTED A
SERVICE AGREEMENT.
Events leading to this status are:
 Inability to store a correct record in the fiscal memory.

_
Fiscal printer programming interface Version1.00BG Page 3
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

 Invalid checksum of the UIC, Unique Fiscal Device ID, Fiscal Memory ID or any record containing
tax rates.
 Unrecognised format of the fiscal memory unit.
 If the fiscal memory power-on check detects more than three invalid checksums of a fiscal record in
a daily financial report. The fiscal records with invalid checksums are printed on power-on (unless
the device is in the open receipt status) and also at the respective area of the fiscal memory reports.
 No communication with the tax terminal or an “unknown” tax terminal, i.e., with a serial number
other than the one stored in the fiscal memory.
 No communication with the EJ or a read-only EJ from another printer.
 The EJ is full (highly unlikely, considering the size of the EJ).

PRINTER STATUS INDICATIONS ON THE FRONT PANEL


If the printer detects a fault during operation, it can disable some commands. The printer status is indicated by
the LED on the front panel. The possible LED signals are described below:
Green light:
Continuous:
The printer is ready to execute commands.
Blinking, about 2 flashes per second:
The printer initializes and checks its performance or performs a continuous command. You have to wait.

Red light:
Off:
The peripherals are operating normally.
Continuous:
No paper or open cover. Find and clear the fault.
Blinking, about 2 flashes per second:
The printing head is overheated. Wait—printing will continue after it cools down.
Intermittent blinking: 2 flashes followed by a pause.
No communication with the EJ. Try to power the printer off and then on again to reset the EJ. If the problem
persists, service intervention is required.

FISCAL PRINTER CONFIGURATION SWITCHES


The printer uses 16 bits from the flash memory as configuration switches setting the device mode. Their values
can be changed using command 41 (29H), whereby the first 8 or all 16 bits must be set. Their functions are
described in the following table:

Switch Off On
1 Normal display mode “Transparent display” mode
2 Standard DATECS display operation Codepage 1251 display operation
3* 3-inch paper tape printing Narrow paper printing
4 No automatic cut Automatic paper cut after the receipt
5 Codepage 1251 is used for Cyrillic DOS codepage (856) is used for Cyrillic
6 Serial port baud rate setting
7 Serial port baud rate setting
8 Serial port baud rate setting
9** Not used Half Cut
10*** Not used Allows work with presenter
11 Not used
12 115200 bps modem communication 230400 bps modem communication
13 Not used
14 Not used
15 Not used
16 Not used

Serial port baud rate selection

_
Fiscal printer programming interface Version1.00BG Page 4
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

Switch 6 Switch 7 Switch 8 Baud rate (bps)


OFF OFF OFF 1200
ON OFF OFF 2400
OFF ON OFF 4800
ON ON OFF 9600
OFF OFF ON 19200
ON OFF ON 38400
OFF ON ON 57600
ON ON ON 115200

*By default, printers not supporting 3-inch paper operation, do not accept switch 3 as a valid
setting. (switch 3 will remain off).
**Allows Half Cut and automatically stops work of the presenter even it is allowed.
***Allows work of presenter in printers SK1-21F and SK1-31F

FISCAL PRINTER STATUS BITS


The current device status is coded in a 6-byte field sent in the frame of each message from the fiscal printer.
Each byte of this field is described below:

Byte 0: General purpose


0.7 Reserved: always 1.
0.6 The printer cover is open.
0.5 General error: an OR of all errors marked with the ‘#’ character.
0.4 # Printing unit fault.
0.3 No customer display is connected.
0.2 The clock is not set.
0.1 # Invalid command code received.
0.0 # Syntax error in the received data.

Byte 1: General purpose


1.7 Reserved: always 1.
1.6 The built-in tax terminal is not responding.
1.5 A service receipt with 90-degree rotated text printing is open.
1.4 A refund (storno) receipt is open.
1.3 # Low battery (the real-time clock is in RESET status).
1.2 # The RAM has been reset.
1.1 # The command is not allowed in the current fiscal mode.
1.0 The command resulted in an overflow of some amount fields. Status 1.1 will also be set and the
command will not change any data in the printer.

Byte 2: General purpose


2.7 Reserved: always 1.
2.6 The end of the EJ is very near (only certain receipts are allowed).
2.5 A service receipt is open.
2.4 The end of the EJ is near (less than 10 MB free in the EJ).
2.3 A fiscal receipt is open.
2.2 End of the EJ (less than 1 MB free in the EJ).
2.1 Low paper.
2.0 # No paper. If this flag is raised during a print command, the command is cancelled and does not
change the printer status.

Byte 3: For the status of the configuration switches


3.7 Reserved: always 1.
3.6 Sw7 status.
3.5 Sw6 status.
3.4 Sw5 status.
3.3 Sw4 status.
3.2 Sw3 status.
3.1 Sw2 status.
3.0 Sw1 status.

Byte 4: For the fiscal memory

_
Fiscal printer programming interface Version1.00BG Page 5
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

4.7 Reserved: always 1.


4.6 The printing head is overheated.
4.5 OR of all errors marked with the ‘*’ character from bytes 4 and 5.
4.4 * The fiscal memory is full.
4.3 There is space for less than 50 records remaining in the FP.
4.2 Unique Printer ID and Fiscal Memory ID are set.
4.1 BULSTAT UIC is set.
4.0 * Fiscal memory store error.

Byte 5: For the fiscal memory


5.7 Reserved: always 1.
5.6 Not used.
5.5 Fiscal memory read error.
5.4 The tax rates are set at least once.
5.3 The printer is in fiscal mode.
5.2 * The last fiscal memory store operation is not successful.
5.1 The fiscal memory is formatted.
5.0 * The fiscal memory is set in READONLY mode (locked).

_
Fiscal printer programming interface Version1.00BG Page 6
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

POWER OUTAGE
The printer status at all times is reflected in its status bytes. When the printer is powered on after a power
outage, the application software, using commands 76 (4AH) and 103 (67H), needs to query the printer status.
The application software needs to decide how to proceed depending on the printer status. It is guaranteed that
the fiscal memory will not be damaged by a power outage and that the sums accumulated in the RAM will be valid.
If there has been a power outage during printing, then, after the printer is powered on, it will print a line with the
“*VOLTAGE DROP*” text in wide letters and will complete the printout.

FISCAL AND SERVICE RECEIPTS


A) SERVICE RECEIPTS.
First, the receipt is opened, then the text is printed and, finally, the receipt is closed.
The commands used are 38 (26H), unlimited number of times 42 (2H) and, finally, 39 (27H).
Barcode printing is also enabled, using command 84 (54H).
The printer also supports printing of service receipts with 90-degree rotated text and tables. The commands
used are 122 (7AH), 123 (7BH), 124 (7CH) and, optionally, 84 (54H) for barcodes.
B) FISCAL RECEIPTS.
First, the fiscal receipt is opened, the sales are entered, the payment is made and, finally, the receipt is closed.
The commands used are 48 (30H), 49 (31H), 51 (33H), 52 (34H), 53 (35H), 54 (36H), 58 (3AH) and 56
(38H).
Barcode printing is also enabled, using command 84 (54H).
At closing time, a daily financial report with reset (Z-report) is run to store the information in the fiscal
memory. This is done using command 69 (45H).

EJ (ELECTRONIC JOURNAL)
The printer stores each line of the fiscal receipts, service receipts, service information documents during
initialisation, X- and Z-reports in the Electronic Journal (EJ). The EJ has a minimum capacity of 2 GB and, in
normal operation, should be able to store all data generated during the printer operation until the fiscal memory is
full. If it becomes damaged or full (in heavy-duty operation), the EJ can be replaced with an empty one, whereby the
old one must be stored under the terms and procedure defined in Ordinance N-18.
The following reports can be generated from the EJ:
 Print a copy of a document by number, date and time or sequential number of a Z-report.
 Download document(s) over the serial interface as text with layout as close as possible to the original
paper layout. This also can be selected by number, date and time or sequential number in a Z-report.
 Information on the capacity of the EJ, used space in bytes, numbers of the first and last documents stored
in it and the first and last Z-reports.
 SHA-1 checksum validity verifications for the documents from a complete Z-report, directly calculated by
the printer.
 Verify the SHA-1 checksums for one or more Z-reports with the ones stored in the fiscal memory and
print a report with the verification result.
Two flags in the status bytes warn of a near end (10 MB free) and end (1 MB free) of the EJ. If the “End of the
EJ” flag is raised, the following commands are disabled: 38 (Open a service receipt), 42 (Free text in a service
receipt), 48 (Open a fiscal receipt), 49 (Enter a sale), 52 (Enter and display), 54 (Print fiscal text), 58 (PLU sale) and
84 (Print a barcode).

REPORT GENERATION
The reports are generated entirely by the fiscal printer after it receives the respective command from the PC. For
these reports, the application software can not make any changes to the report appearance, i.e., they look as they are
pre-defined in the FP. They are invoked using commands:
50 (32H): tax rate and decimal place change report.
69 (45H): daily financial report with or without reset.
108 (6CH): daily financial report with or without reset, with printed totals by PLU.
117 (75H): daily financial report with or without reset, with printed totals by department.
118 (76H): daily financial report with or without reset, with printed PLUs and departments.
79 (4FH)/95 (5FH): summary fiscal memory report, from–to date/from–to fiscal block number.
73 (49H)/94 (5EH): full fiscal memory report, from–to date/from–to fiscal block number.
119 (77H): print documents from the EJ.

_
Fiscal printer programming interface Version1.00BG Page 7
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

LOW-LEVEL PROTOCOL
A) PROTOCOL TYPE. - Master (Host) / Slave
The fiscal printer executes commands sent from the Host and returns a message depending on the result.
The fiscal printer can not initiate communication. Only messages resulting from the execution of received
commands are sent to the Host.
The messages in the protocol are either packed messages or single bytes.
The fiscal printer supports communication over RS 232 at baud rates of 1200, 2400, 4800, 9600, 19200, 38400,
57600 and 115200 b/s, 8N1. The baud rate is set by configuration bits 5, 6 and 7. LAN connection is also supported,
whereby the parameters are set using command 36 (24H).
B) MESSAGE SEQUENCE
The Host sends a packed message, containing the command to the printer.
The FP executes the requested operation and responds with a packed response message.
The Host needs to wait for the response from the printer before sending another message.
The protocol uses non-packed codes with a length of one byte to process any required pauses and error
statuses.
C) NON-PACKED MESSAGES, TIME-OUT
In normal operation, the Slave responds to all Host messages not later than 60 ms either with a packed message
or a one-byte code. The Host needs a 500 ms time-out to receive a response from the Slave. If it does not receive
any response within that time, it needs to resend the message with the same sequential number and the same
command. After several unsuccessful attempts, the Host needs to indicate that there is no connection to the fiscal
printer or there is a hardware error.
The non-packed messages consist of a single byte and are:
a) NAK 15H
This code is sent by the Slave, if it detects an error in the checksum or the format of the received message.
When the Host receives a NAK, it needs to resend a message with the same sequential number
b) SYN 16H
This code is sent by the Slave, when it receives a command requiring longer execution time. SYN is sent
every 60 ms, until the packed response message is ready
D) PACKED MESSAGES
a) Host to printer. (Send)
<01><LEN><SEQ><CMD><DATA><05><BCC><03>
b) Printer to Host. (Receive)
<01><LEN><SEQ><CMD><DATA><04><STATUS><05><BCC><03>
Where:
<01> Preamble
length: 1 byte
value: 01H
<LEN> Number of bytes from <01> (not included) to <05> (included) plus a fixed offset of 20H
length: 1 byte
value: 20H - FFH
<SEQ> Sequential number of the frame
length: 1 byte
value: 20H - 7FH
The fiscal printer enters the same <SEQ> in the response message. If the FP receives a
message with the same <SEQ> as the last received message, then it takes no action, just repeats
the last sent message.
<CMD> Command code
length: 1 byte
value: 20H - FFH
The FP enters the same <CMD> in the response message. If the printer receives a non-
existing code, it responds with a packed message with zero length of the data field and sets the
respective status bit.
<DATA> Data
length: 0–218 bytes for Host to Printer.
0–213 bytes for Printer to Host.
value: 20H–FFH and, additionally, 09H and 0AH.
The data area format and length are command-dependent. If the command has no data, then
the length of this field is zero. If there is a syntax error in the data, then the respective status bit
is set and a packed message with zero length of the data field is returned.
<04> Separator (for Printer-to-Host messages only)
length: 1 byte
value: 04H

_
Fiscal printer programming interface Version1.00BG Page 8
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

<STATUS> The field with the current status of the fiscal device
length: 6 bytes
value: 80H - FFH
<05> Postamble
length: 1 byte
value: 05H
<BCC> Checksum (0000H-FFFFH)
length: 4 bytes
value: 30H - 3FH
The sum includes from <01> (not included) to <05> (included). Each digit in these two
bytes is sent with an added 30H. For instance, the sum 1AE3H is composed as 31H, 3AH, 3EH,
33H.
<03> Terminator
length: 1 byte
value: 03H

MESSAGE COMPOSITION, SYNTAX AND USED SYMBOLS


a) The data area is command-dependent.
b) Parameters sent to the printer may be either comma-delimited and/or have a fixed length.
c) If there is a comma between the parameters, it means that it is required.
d) The command syntax must be followed LITERALLY—even a space or tab added between or at the end of
the data is considered an error!
When the individual parameters are enclosed in sharp brackets < >, it means that the parameters themselves are
required, but the brackets are not included in the message.
When a parameter is enclosed in square brackets [ ] , it means that it is optional. The brackets themselves are
not sent with the message.
The characters with ASCII codes below 32 (20H) have special meanings and their use is clearly indicated in
the description as needed. If, for some reason, such a character needs to be dent (for instance, in an ESCAPE
command to the display), then it must be preceded by 16 (10H) with an added offset of 40H.
For example: When we write for the data area 2500,100,Text, then, in the data area, we have 2D 32 35 30 30
2C 31 30 30 2C 54 65 78 74, where each hexadecimal number represents an ASCII value.

_
Fiscal printer programming interface Version1.00BG Page 9
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

LIST OF COMMANDS WITH THEIR INTENDED USE


This section contains the list of the fiscal printer commands, divided into groups depending on their intended
use:

INITIALISATION
29H (41) Store the settings, the logo graphic and the switches in the flash memory.
2BH (43) Set the HEADER, FOOTER and print options.
3DH (61) Set the date and time.
42H (66) Set the allowable invoice number range.
48H (72) Fiscal registration.
53H (83) Set the multiplier, decimal digits, currency name and tax rates.
55H (85) Program the additional payment types.
57H (87) Set a department name.
5BH (91) Program the Unique Printer ID, FP ID and country code.
62H (98) Set the UIC.
65H (101) Set an operator password.
66H (102) Set an operator name.
6BH (107) Specify and record PLUs.
73H (115) Upload a logo graphic.

SALES

2EH (46) Print a refund (storno) receipt.


30H (48) Open a fiscal receipt.
31H (49) Enter a sale.
33H (51) Subtotal.
34H (52) Enter and display a sale.
35H (53) Calculate a sum (Payment).
36H (54) Print free text in a fiscal receipt.
38H (56) Close a fiscal receipt.
39H (57) Print customer information.
3AH (58) Enter a sale of a programmed PLU.
3CH (60) Terminate (cancel) a fiscal receipt.
54H (84) Print a barcode.
6DH (109) Print a duplicate receipt.

CLOSING TIME
45H (69) Daily financial report (with or without reset).
6CH (108) Extended daily financial report (with PLU printout).
75H (117) Extended daily financial report (with department printout).
76H (118) Extended daily financial report (with department and PLU printout).

REPORTS
22H (34) Report of the registered service agreements.
32H (50) Report of the changes in the tax rates and decimal digits made during the respective period.
49H (73) Detailed fiscal memory report (from-to number).
4FH (79) Summary fiscal memory report (from-to date).
5EH (94) Detailed fiscal memory report (from-to date).
5FH (95) Summary fiscal memory report (from-to number).
69H (105) Operator report.
6FH (111) PLU report.

INFORMATION TO HOST
22H (34) Last service agreement information.
25H (37) Read the NRA data.
3EH (62) Read the date and time.
40H (64) Last fiscal record information.
41H (65) Information on the sums for the day.
44H (68) Number of free records in the fiscal memory.
4AH (74) Obtain the status bytes.
4CH (76) Fiscal transaction status.
56H (86) Last fiscal memory record date.
58H (88) Information on the accumulated sums in a department.
5AH (90) Obtain diagnostic information.
61H (97) Obtain the tax rates.

_
Fiscal printer programming interface Version1.00BG Page 10
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

63H (99) Obtain the UIC.


67H (103) Current receipt information.
6EH (110) Obtain information on sums by payment types.
70H (112) Obtain operator information.
71H (113) Obtain the last printed document number.
72H (114) Obtain information on a fiscal record or set period.
74H (116) Read a fiscal memory block.

PRINTER COMMANDS
2CH (44) Paper feed.
2DH (45) Paper cut.

DISPLAY
21H (33) Clear the display.
23H (35) Show text (lower line).
2FH (47) Show text (upper line).
3FH (63) Show date and time.
64H (100) Display—full control.

OTHER
20H (32) Extended information on the last error.
26H (38) Open a service receipt.
27H (39) Close a service receipt.
2AH (42) Print free text in a service receipt.
46H (70) Service money deposit and withdrawal.
47H (71) Print diagnostic information.
50H (80) Beep.
59H (89) Program the production test area.
5AH (92) Print a divider line.
6AH (106) Open the drawer.
67H (119) EJ maintenance—read, print and information.
7AH (122) Open a rotated service receipt.
7BH (123) Print information on a rotated service receipt.
7CH (124) Close a rotated service receipt.

SERVICE COMMAND
79H (121) Read a firmware block.
80H (128) Service software RAM reset.
85H (133) Temporary disable printing for testing purposes.
86H (134) Service EJ maintenance.
87H (135) GPRS modem test.
90H (144) Initialise and read data from the tax terminal.

_
Fiscal printer programming interface Version1.00BG Page 11
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

DETAILED COMMAND DESCRIPTIONS

Note: All examples assume operation of a fiscal printer configured for Bulgaria. Country-specific
clarifications are provided as appropriate.

20h (32) EXTENDED INFORMATION ON THE LAST ERROR


Data area: [<Clear>]
Response: <Command>,<ErrCode>,<DateTime>,<ErrText>
The command allows to obtain information on the last command completed with an error. This information is
saved for successfully completed commands and also after the printer is powered off. It is cleared only on RAM
reset and on execution of the command with a “CLEAR” text input. An error code list is provided at the end of the
documentation. The command returns a result for any input.
Clear Fixed text contents: “CLEAR”.
ErrCode Number: error code.
DateTime Error date and time in the DD-MM-YY hh:mm:ss format.
ErrText Text description of the last error.

21h (33) CLEAR THE DISPLAY


Data area: No data
Response: No data
A command to clear the display is sent. If there is an open fiscal receipt and Sw4 is OFF, only the lower line is
cleared.

22h (34) SERVICE AGREEMENT INFORMATION AND REPORT


Data area: [<“P”>]
Response: <Left>,<RegDtTm>,<EIK>,<EndDate>
or
“F”
Date New service agreement expiration date in the “DD-MM-YY” format.
Left Integer: number of remaining service agreement registration fields.
RegDtTm Service agreement date and time: “DD-MM-YYYY hh:mm:ss”.
EndDate Last service agreement expiration date in the “DD-MM-YYYY” format.
UIC 9 or 13 digits: service provider’s UIC.
The command returns or prints information on the service agreements. The expiration date of the current
service agreement is printed at the end of each daily report with reset. Returns data on the expiration date of the last
registered agreement (or “F” if no agreement is registered). On input “P”, a report of all registered agreements based
on the data from the fiscal memory is printed.

23h (35) SHOW TEXT ON THE LOWER LINE OF THE DISPLAY


Data area: <Text>
Response: No data
Text Text, up to 20 characters, sent directly to the display. Before the text, a lower line
positioning and clearing command is sent.

24H (36) LAN SETTINGS


Data area: [<IPAddr>,<SubnetMask>,<TCPPort>,<Gateway>[,*<DHCP>][,<MACAddr>]]
Response: [<IPAddr>,<SubnetMask>,<TCPPort>,<Gateway>,<DHCP>,<MACAddr>]
IPAddr 4 numbers, between 0 and 255, separated by a dot, representing the IP address of the
device.
SubnetMask 4 numbers, between 0 and 255, separated by a dot, representing the Subnet mask of the
device.
TCPPort Number, between 1 and 65535, representing the IP port of the device.
DefGateway 4 numbers, between 0 and 255, separated by a dot, representing the Default Gateway
address of the device.

_
Fiscal printer programming interface Version1.00BG Page 12
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

DHCP One character: "0" or "1". Enables or disables DHCP (Receiving automatic LAN settings
from the server).
MACAddr Up to 12 hexadecimal characters representing the MAC address of the device. Works only
if the service jumper is present!!!

If there is no data area, the command returns the current settings.

25h (37) READ NRA DATA


Data area: <Type>[,<Closure>]
Response: P,<Data> or F

Type Type of requested information:


 ‘1’ DT,Closure,FiscRec,LastFiscal,LastDoc,Journal
 ‘2’ S1,S2,S3,S4,S5,S6,S7,S8,Total,GTotal
 ‘3’ DiscountN,DiscountS,MarkUpN,MarkUpS,VoidN,VoidS,CancelN,CancelS
 ‘4’ CashInN,CashInS,CashOutN,CashOutS,CashSum
 ’5’ CashPaid,CredPaid,CardPaid,CheckPaid,Payd1,Paid2,Paid3,Paid4
 ’6’ DT
 ’7’ DT
 ’8’ P<PLU>,<PluTotal>,<PluName>

DT String. Date and time in the “DD-MM-YYYY hh:mm:ss” format.


Closure Integer. Next daily report number.
FiscRec Integer. Number of fiscal receipts (customers) for the day.
LastFiscal Integer. Global number of the last issued fiscal receipt.
LastDoc Integer. Global number of the last issued document.
Journal Integer. Current journal number.
Sx Decimal number. Sales for a tax group, for the day.
Total Decimal number. Total sales for the day.
GTotal Decimal number. Total lifetime sales.
DiscountN Integer. Number of discounts for the day.
DiscountS Decimal number. Total amount of discounts for the day.
MarkUpN Integer. Number of mark-ups for the day.
MarkUpS Decimal number. Total amount of mark-ups for the day.
VoidN Integer. Number of adjustments for the day.
VoidS Decimal number. Total amount of adjustments for the day.
CancelN Integer. Number of cancelled receipts for the day.
CancelS Decimal number. Total amount of cancelled receipts for the day.
CashInN Integer. Number of service deposit operations for the day.
CashInS Decimal number. Total amount of service deposits for the day.
CashOutN Integer. Number of service withdrawal operations for the day.
CashOutS Decimal number. Total amount of service withdrawals for the day.
CashSum Decimal number. Available cash.
CashPaid Decimal number. Paid in cash.
CredPaid Decimal number. Paid by credit card.
CardPaid Decimal number. Paid by debit card.
CheckPaid Decimal number. Paid by check.
Paid1 Decimal number. Paid by programmed payment type 1.
Paid2 Decimal number. Paid by programmed payment type 2.
Paid3 Decimal number. Paid by programmed payment type 3.
Paid4 Decimal number. Paid by programmed payment type 4.
PLU PLU code. 9 digits.
PluTotal Accumulated sales sum for the PLU. Decimal number.
PluName PLU name. Up to 36 characters.

Subcommand ‘6’ expects a daily report number and returns the daily report date and time. Returns ‘F’, if the
record has an invalid checksum. Returns ‘E’, if no such record exists.
Subcommand ‘7’ returns the date of fiscal registration or ‘F,’ if the printer is not placed into operation.
Subcommand ‘8’ returns PLU sales data by PLU codes in ascending order. The command is first sent once
using command string “8,F” and then, the required number of times using command string “8,N” until the printer
returns the ‘F’ response (no data) or we have read the required number of PLUs. The PLU name is always returned
encoded in codepage 1251.
This command is only used for compatibility with fiscal printers having an external terminal capable of
reading these data. It is not really necessary, because the information can be obtained by other means as well. Data

_
Fiscal printer programming interface Version1.00BG Page 13
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

identical to the ones received by this command are sent internally and automatically to the tax terminal to be
transmitted to the NRA as needed.

26h (38) OPEN A SERVICE RECEIPT


Data area: No data
Response: Allreceipt
Allreceipt The number of all issued receipts (fiscal and service) since the last closing time until now
(4 bytes).

The FP carries out the following actions:


 Prints a HEADER.
 Prints the seller’s UIC.
 Returns a response containing Allreceipt.
The command can not be executed, if:
 The fiscal memory is not formatted.
 There is an open fiscal receipt.
 A service receipt has already been opened.
 The clock is not set.

27h (39) CLOSE A SERVICE RECEIPT


Data area: No data
Response: Allreceipt
Allreceipt The number of all issued receipts (fiscal and service) since the last closing time until now
(4 bytes).
The FP carries out the following actions:
 Prints a FOOTER.
 Prints the document sequential number, date and time.
 Prints “SERVICE RECEIPT” in wide letters.
 Returns a response containing Allreceipt.

If S1.1 is raised, the command is not executed, because there is no open service receipt at this time.

29H (41) STORE THE SETTINGS AND THE SWITCHES IN THE FLASH MEMORY
Data field: [<Switches>]
Response: <ErrCode>
Switches 8 or 16 bytes with values of ‘0’ or ‘1’: the configuration “switches.”
ErrCode "P" - successful recording; "F" - unsuccessful recording of the settings.
The printer has no hardware switches and uses an area in the flash memory for this purpose. They are set using
this command. Additionally, the command stores the logo graphic, barcode length, print density and open-drawer
pulse length in the flash memory. After a RAM reset, their values are restored for the flash memory. If only 8 bytes
are submitted, the upper 8 remain unchanged.
If the command has no data, the old values of the “switches” are kept and the remaining data are stored.
The command stores the following data in the flash memory:
 Header and footer (from command 43).
 The text of the additional payment types (from command 85).
 The logo graphic (from command 115).
 The print options (from command 43).
 The configuration switches.
After a RAM reset, their values are restored for the flash memory.

2Ah (42) PRINT FREE TEXT IN A SERVICE RECEIPT


Data area: [<Tab><Font>[<Flags>]]<Text>
Response: No data
Text Free text to print. The ‘#’ character is printed at the start and the end of the line. The text may be
with any length, but only the characters fitting on the line are used (without raising a truncation error).

_
Fiscal printer programming interface Version1.00BG Page 14
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

The command allows optional font and line print attributes to be set:
Font Integer between 0 and 3:
0 32 dots (4 mm) height, higher letters
1 32 dots (4 mm) height, normal letters
2 24 dots (3 mm) height
3 16 dots (2 mm) height
Flags Between one and 3 letters: ‘B’, ‘H’ or ‘I’. Each may appear only once. Setting, respectively:
B Bold (strong)
H High (double height)
I Italic (oblique)

2Bh (43) SET THE HEADER, FOOTER AND PRINT OPTIONS


Data area: <Item><Text>
Response: Depends on the data area
The HEADER contains 6 lines of text printed at the top of each fiscal or service receipt. The normal operation
of the printer requires at least 2 Header lines to be set. The UIC (set by command 98) is always printed on the third
line, therefore, the HEADER lines after line two are automatically moved down a line.
The FOOTER contains 2 lines of text printed at the bottom of each receipt.
The HEADER and FOOTER are centred automatically.
This command needs to be executed up to 8 times to set all HEADER and FOOTER lines.

Item One character with the following meaning:


‘0’ to ‘7’ is the number of the line being set. The HEADER lines have numbers between 0
and 5, the FOOTER lines—6 and 7.
‘А’ Automatic invoice-like sales formatting (4 separate lines).
’B’ Sets the barcode height in pixels (0.125 mm). The possible values are between 24 (3
mm) and 240 (30 mm). The barcode is printed using command 84 (54H).
‘C’ Enable/disable automatic paper cut after each document. After the printer is powered
on, the printer behaviour is controlled by switch Sw8.
’D’ Sets the print density. Possible values:
‘1’: Very light
‘2’: Light
‘3’: Normal
‘4’: Dense
‘5’: Very dense
‘E’ Enable/disable printing the total amount in EUR after the first payment command (53)
in a fiscal receipt. Printing is disabled by default. Optionally, the command also sets
the valid EUR/BGN exchange rate. Data syntax:
<Enable>[,Rate]
Enable Print enable/disable flag. One byte: ‘0’ or ‘1’.
Rate Exchange rate. Floating-point number with up to 8 significant and 5
decimal digits. If it is omitted, the old value is kept. If it is 0.00000, no
value in euros is printed, even if Enable is set.
‘F’ Set the printer font. Possible values:
0 32 dots (4 mm) height, higher letters
1 32 dots (4 mm) height, normal letters
2 24 dots (3 mm) height
‘L’ Enable/disable printing the logo graphic right before the HEADER. The logo is set
using command 115. The Text data are in the <Enable>,<H> format. H is the logo
height in pixels, Enable is one byte with a value of ‘1’ (enabled) or ‘0’ (disabled).
‘N’ Enable/disable printing the department name at the top of each fiscal receipt.
‘Q’ Enable/disable suppressed printing in a fiscal or service receipt. The data are in the Q0
or Q1,<Lines>,<Seconds> format.
Q0 disables accumulation of unprinted lines in the receipt.
Q1 enables accumulation of unprinted lines in the receipt. Printing starts when any of
the following conditions is true:
- Accumulation of the number of unprinted lines set in Lines. Lines can be
between 4 and 1000 or 0. If the value is 0, printing starts when the print buffer is full.
- The number of Seconds has passed without any new print line added. Seconds
can be between 2 and 120 or 0. If the value is 0, there is no time limit.
- The receipt is closed.
- The printer is powered off and then back on.
- Command 75 is executed.
‘R’ Sets the additional letter spacing in pixels (0.125 mm) in a 90-degree rotated service
receipt. The possible values are between 0 and 4.
‘SIM’ Selects the SIM card to be used by the GPRS modem. The value can be
either 0 or 1.

_
Fiscal printer programming interface Version1.00BG Page 15
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

‘T’ Enable/disable printing accumulated VAT for the receipt in a normal (not extended)
fiscal receipt.
‘X’ Enable/disable automatic generation of an open-drawer pulse for commands 53 (35H)
and 70 (46H).
‘W’ Sets the time to trigger the warning for unsent data on payment documents and not
updated data on the level measuring system. Printed as a service receipt (immediately
after closing a fiscal receipt), which is not stored in the electronic journal.
‘c’ Disable/enable the FEED button functionality (‘1’: disabled, ‘0’: enabled). After the
printer is powered on, the button functionality is always enabled.
‘d’ Disable/enable returning optional text in the command response when an error occurs
(‘0’: disabled, ‘1’: enabled).
‘P’ Enable / disable automatic roll-up of paper in a container after each document. After
turning on the printer, the printer does not pick up the paper in a container. (Printers
SK1-21F and SK1-31F)
‘O’ Set time to automatically retract paper in a container after each printed and waiting to
takeout document. (Printers SK1-21F and SK1-31F)
‘I’ Allows reading the values previously set using command 43. Following the letter ‘I’,
there is exactly one other character matching one of the above.
Text Text, up to 48 characters, where:
If <Item> is a digit between ‘0’ and ‘7’: the text on the respective line.
If <Item> = ‘A’: a single ‘0’ or ‘1’ character, where ‘0’ disables and ‘1’ enables “invoice”
type formatting. If enabled, 4 lines are printed for each sale: name, unit price, quantity and price
with tax group.
If <Item> = ‘B’: a number setting the barcode height in pixels.
If <Item> = ‘C’: a single ‘0’ or ‘1’ character, where ‘0’ disables and ‘1’ enables automatic
receipt cutting.
If <Item> = ‘D’: the print density (between 1 and 5).
If <Item> = ‘E’: returns Enable,Rate, where Enable is the disable/enable flag and Rate is
the currently programmed exchange rate.
If <Item> = ‘F’: returns the current printer font.
If <Item> = ‘L’: returns Enable,H, where H is the height of the logo graphic and Enable is
the disable/enable flag.
If <Item> = ‘N’: a single ‘0’ or ‘1’ character, where ‘0’ disables and ‘1’ enables printing the
department name at the top of each fiscal receipt.
If <Item> = ‘Q’: returns Enable,Lines,Seconds, where Enable controls whether printing is
suppressed and Lines and Seconds are the limit values to start printing, in number of lines and
seconds.
If <Item> = ‘R’: returns the additional character spacing when printing a rotated service
receipt, in pixels.
If <Item> = ‘SIM’: a single ‘0’ or ‘1’ character indicating the SIM holder to be used (SIM0
or SIM1)—if SIM1 is populated, obviously.
If <Item> = ‘T’: a single ‘0’ or ‘1’ character, where ‘0’ disables and ‘1’ enables printing the
accumulated VAT on a normal (not extended) fiscal receipt.
If <Item> = ‘X’: a single ‘0’ or ‘1’ character, where ‘1’ disables and ‘0’ enables automatic
drawer opening for commands 53 (35H) and 70 (46H).
If <Item> = ‘W’: two parameters—<WarnTimeRec>,<WarnTimeGInfo>. Both times are
in minutes, between 10 and 1440 or 0. If it is zero, there is no warning.
If <Item> = ‘c’: a single ‘0’ or ‘1’ character, where ‘1’ disables and ‘0’ enables the FEED
button functionality.
If <Item> = ‘d’: a single ‘0’ or ‘1’ character, where ‘0’ disables and ‘1’ enables returning
optional text in the command response when an error occurs. For example: “command
response@error cause”.
If '<Item> =' P '- a '0' or '1' symbol with '0' prohibiting and '1' permitting automatic paper
retention, one ',' and '0' or '1' to indicate whether there is paper in the presenter (' 1'- has paper).
(Answer example: "0.1" - automatic paper picking disabled, and paper in the presenter.) (SK1-
21F and SK1-31F printers)
If '<Item> =' O '- Timing threshold for triggering of automatic retrieval of printed and
waiting to take document, possible values: 0 - automatic retraction disabled and 5 - 600 seconds
waiting. (SK1-21F and SK1-31F printers)

2Ch (44) PAPER FEED.


Data area: Lines| <GetP>
Response: No data
Lines The number of lines to feed the paper. Must be a positive number, at least 99 (1 or 2 bytes). If
the parameter is missing, the default 1 line is used.

_
Fiscal printer programming interface Version1.00BG Page 16
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

GetP One character with value "P". Retracts a printed and waiting dokument in the inner container
(ONLY for models SK1-21F and SK1-31F). Possible answers "P" and "F".

2Dh (45) PAPER CUT.


Data area: No data
Response: No data
Causes paper to be cut. Please, bear in mind that the program needs to ensure the paper is fed by at least two
lines—otherwise, the bottom of the receipt may be cut. If the printer is in the “automatic cut” mode, it will position
the paper correctly before the cut and the command is unnecessary.
If the cutting unit is blocked, the paper (if any) needs to be removed from the cutter and the printer needs to
powered off and then back on—the cutter will return to its home position.

2E (46) ISSUE A REFUND (STORNO) RECEIPT


Data area: <OpNum>,<Password>,<TillNum>[,<Invoice><InvNum>][,<UNP>]
,<StType><DocNo>[,<StUNP>,<StDT>,<StFMIN>][#<StornoReason>]
Response: Allreceipt, StornoReceipt
OpCode Operator ID (between 1 and 16)
OpPwd Operator password (between 4 and 8 digits)
TillNmb Cash register location number (integer between 1 and 99999)
UNP Unique Sale ID (format: FD Serial Number-four digits or Latin letters-sequential
number of the sale (seven digits with leading zeroes),
for example: DT000600-OP01-0001000).
When opening a sales receipt for the first time, the UNP ( Unique Sale ID) must be set
at least once, if the parameter is then omitted, the FU will increment the unit by the
sale number automatically.
InvNum Number of invoice being reversed.
Invoice One “I” character. When present, an extended reversal customer receipt (credit note)
will be printed. After the HEADER, the invoice number will be printed automatically
and then, after the first payment command—a printout of the sums by tax group. After
the payment, customer information must be printed using command 57 (39h).
StType Reversal reason:
E: operator error
R: return/claim
T: tax base reduction
DocNo (Global) number of the document being reversed.
StUNP Unique Sale ID of the document being reversed. The whole Unique Sale ID must be
set.
StDT Date and time of the reversed document. Format “DDMMYYhhmmss”.
StFMIN Fiscal Memory ID of the FD which has issued the receipt being reversed.
StornoReason Reversal reason (up to 30 characters).
Allreceipt The number of all issued receipts (fiscal and service) since the last closing time until
now. (4 bytes).
StornoReceipt The number of all fiscal receipts since the last closing time until now. (4 bytes).
If the last argument is DocNo and there are no other arguments, the FD searches for the issued receipt in
its journal. If it is not found, the command fails. If it is found, the data are filled in automatically and a reversal
receipt is issued with all the data from the original fiscal receipt.
If StUNP, StDT, StFMIN are submitted, the command will be accepted only as an opening of a reversal
receipt which needs to have sales and payments entered and then needs to be closed (similar to command 48).

2F (47) SHOW TEXT ON THE UPPER LINE OF THE DISPLAY


Data area: Text
Response: No data

_
Fiscal printer programming interface Version1.00BG Page 17
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

Text Text, up to 20 characters, sent directly to the display. Before the text, an upper line positioning
and clearing command is sent. The command is rejected, if a fiscal receipt is open and Sw1 is
OFF.

30h (48) OPEN A FISCAL (CUSTOMER) RECEIPT


Data area: None or <OpNum>,<Password>,<TillNum>[,<Invoice>][,<UNP>] or [*]
Response: UNPshort or Allreceipt, FiscReceipt or FdocGlob,UNPfull[,UNPfullST]
OpCode Operator ID (between 1 and 16)
OpPwd Operator password (between 4 and 8 digits)
TillNmb Cash register location number (integer between 1 and 99999)
UNP Unique Sale ID (format: FD Serial Number-four digits or Latin letters-sequential
number of the sale (seven digits with leading zeroes),
for example: DT000600-OP01-0001000).
When opening a sales receipt for the first time, the UNP ( Unique Sale ID) must be set
at least once, if the parameter is then omitted, the FU will increment the unit by the
sale number automatically.
Invoice One “I” character. When present, an extended customer receipt (invoice) will be
printed. After the HEADER, the invoice number will be printed automatically and
then, after the first payment command—a printout of the sums by tax group. After the
payment, customer information must be printed using command 57 (39h).
Allreceipt The number of all issued receipts (fiscal and service) since the last closing time until
now. (4 bytes)
FiscReceipt The number of all fiscal receipts since the last closing time until now. (4 bytes).
UNPshort Unique Sale ID in short format of the last issued fiscal document.
FdocGlob Global number of the last issued fiscal document.
UNPfull Unique Sale ID in full format of the last issued fiscal document.
UNPfullST Unique Sale ID in full format of the last issued Storno document, if last issued is
fiscal document this field would be missing.

If the command is submitted without arguments, a sequential number of the sale from the Unique Sale ID
of the last issued fiscal receipt is returned. (example: 0001000).

If the command is submitted with the argument "*" returns the global number of the last issued fiscal
document and the Unique Sale ID (in the full format, example: DT000600-OP01-0001000) of the last
issued fiscal receipt. If the last issued document was a Storno document, there would be another field of
the Unique Sale ID on the document that was refunded. (example: 398554, DT000601-0001-0398101,
DT000601-0001-0203305)

The FP carries out the following actions:


 Prints a HEADER.
 Prints the UIC.
 Prints the operator ID and name, and cash register location number.
 Returns AllReceipt and FiscReceipt.
The command will not be executed successfully, if:
 There is an open fiscal or service receipt.
 The fiscal memory is full.
 The fiscal memory is damaged.
 Operator ID (code), password or cash register location number is missing.
 HEADER contains less than 2 lines.
 UIC is not set.
 The operator password is wrong.
 The clock is not set.
 The EJ is full or inoperable.
 The tax terminal is inoperable or the information in it does not match the information in the
fiscal memory

After three wrong operator passwords are entered, the printer is locked and needs to be powered off and then
back on to continue to operate.

31h (49) ENTER A PRODUCT (SALE)


Data area: [<L1>][<Lf><L2>]<Tab><TaxCd><[Sign]Price>[*<Qwan>[#UN]][,Perc|;Abs]
or
[<L1>][<Lf><L2>]<Tab><Dept><Tab><[Sign]Price>[*<Qwan>[#UN]]
[,Perc|;Abs]

_
Fiscal printer programming interface Version1.00BG Page 18
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

Response: No data
L1 Text, up to 42 bytes, containing a line describing the sale
Lf One byte containing 0Ah.
L2 Text, up to 42 bytes, containing a second line describing the sale
Tab One byte containing 09h.
TaxCd One byte containing the letter indicating the tax type (‘A’, ‘B’, ‘C’, ...). There is a
restriction dependant on the Enabled_Taxes parameter which is set when the tax rates
are set using command 83.
Dept Department number. Integer between 1 and 60 inclusive. The sale is assigned to the tax
group associated with the department when it is programmed.
Sign One byte with a value of ‘-’.
Price This is the unit price, with up to 8 significant digits.
Qwan Optional parameter indicating the product quantity. By default, it is 1.000. Length, up to
8 significant digits (no more than 3 after the decimal point). The result of the
multiplication Price*Qwan is rounded by the printer to the number of decimal digits
set and also must not exceed 8 significant digits.
UN Name of the unit of measurement. Optional text for the unit of measurement for the
quantity, up to 8 characters, for instance, “kg”.
Perc This is an optional parameter indicating the value of the mark-up or discount (depending
on the sign), as a percentage of the current sale. The allowable values are between -
99.00% and 99.00%. Up to 2 decimal digits are accepted.
Abs This is an optional parameter indicating the value of the mark-up or discount (depending
on the sign), as an amount. A discount amount exceeding the value of the sale is not
allowed.
Only one of the Perc or Abs arguments is allowed.
The FP carries out the following actions:
 If the sale is by department and it is enabled using command 43, subcommand ‘N’, the
department name is printed.
 The text describing the sale is printed together with the price and tax group code. If a quantity is
set, the information for the quantity is also printed.
 The product price is added to the accumulated sums in the RAM registers. In the event of an
overflow, the respective bits of the status field are set.
 If there is a discount or mark-up, it is printed on a separate line and added to the printer registers
provided for this purpose. The values for the whole day are printed on the daily financial report.
 If a department is indicated, the accumulated value is added to it. Mark-ups and discounts, if
any, are reported.

The command will not be executed successfully, if:


 No fiscal receipt is open.
 The maximum allowed number of sales for a single receipt (512) has been reached.
 Command (35h) is executed successfully.
 The sum under any tax group becomes negative.
 The sum of any mark-ups or discounts within the receipt becomes negative.
 The EJ is full.
 The printer has detected a non-registered SIM card in the modem.

32h (50) TAX RATES SET DURING THE RESPECTIVE PERIOD


Data area: [<Start>,<End>]
Response: = F: if no tax rates for the period are found or there is an error.
= PAA,BB,CC,DD,EE,FF,GG,HH,DDMMYY: if tax rates are found, where ‘P’
means ‘PASS’, followed by the last active rates for the specified period and their
respective setting dates.
If there are any unused groups (disabled under Enabled_rates), then ‘DT’ (Disabled Tax) is returned for them
instead of a percentage rate.
Start Period start date: DDMMYY (6 bytes).
End Period end date: DDMMYY (6 bytes).
The command prints a report of the changes to the decimal digits and tax rates for the specified period. If no
start and end dates are specified, the period from the fiscal registration until now is used.

33h (51) SUBTOTAL


Data area: <Print><Display>[,Perc|;Abs]
Response: SubTotal,TaxA,TaxB,TaxC,TaxD,TaxE,TaxF,TaxG,TaxH

_
Fiscal printer programming interface Version1.00BG Page 19
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

Print One byte: if it is ‘1’, the subtotal will be printed.


Display One byte: if it is ‘1’, the subtotal will be displayed.
Perc Optional parameter indicating the percentage value of the discount or mark-up on the sum
accumulated until now.
Abs This is an optional parameter indicating the value of the mark-up or discount (depending on
the sign), as an amount (up to 8 significant digits). A discount amount exceeding the value of
the sale is not allowed.

Only one of the Perc or Abs arguments is allowed.

SubTotal The sum until now for the current fiscal receipt (up to 10 bytes)
TaxA The sum under tax group A (up to 10 bytes)
TaxB The sum under tax group B (up to 10 bytes)
TaxC The sum under tax group C (up to 10 bytes)
TaxD The sum under tax group D (up to 10 bytes)
TaxE The sum under tax group E (up to 10 bytes)
TaxF The sum under tax group F (up to 10 bytes)
TaxG The sum under tax group G (up to 10 bytes)
TaxH The sum under tax group H (up to 10 bytes)
The sum of all sales entered in the fiscal receipt until now is calculated. Optionally, the sum may be printed
and/or displayed. The calculated sum and the sums accumulated until now for each tax group are sent to the PC. If a
mark-up or discount is specified, it is printed on a separate line and the accumulated sums under the tax groups are
adjusted accordingly.

34h (52) ENTER AND DISPLAY


Data area: [Line]]<Tab><TaxCd><[Sign]Price>[*Qwan[#UN]][,Perc|;Abs]
or
[Line]]<Tab><Dept><Tab><[Sign]Price>[*Qwan[#UN]][,Perc\;Abs]
Response: No data
Line String, up to 20 bytes, containing a line of text describing the sale.
Tab One byte containing 09h
TaxCd One byte containing the letter indicating the tax type (‘A’, ‘B’, ‘C’, ...). There is a restriction
dependant on the Enabled_taxes parameter which is set when the currency is set using
command 83.
Dept Department number. Integer between 1 and 60 inclusive. The sale is assigned to the tax
group associated with the department when it is programmed.
Sign One byte with a value of ‘-’.
Price This is the price, with up to 8 significant digits.
Qwan Optional parameter indicating the product quantity. By default, it is 1.000. Length, up to 8
significant digits.
UN Name of the unit of measurement. Optional text for the unit of measurement for the quantity,
up to 8 characters, for instance, “kg”.
Perc This is an optional parameter indicating the value of the mark-up or discount (depending on
the sign), as a percentage of the current sale. The allowable values are between -99.00% and
99.00%.
Abs This is an optional parameter indicating the value of the mark-up or discount (depending on
the sign), as an amount. A discount amount exceeding the value of the sale is not allowed.

Only one of the Perc or Abs arguments is allowed.


The FP will carry out the following actions:
 If the sale is by department and it is enabled using command 43, subcommand ‘N’, the department
name is printed.
 The text describing the sale is printed together with the price and tax group code.
 The product price is added to the accumulated sums in the RAM registers. In the event of an
overflow, the respective bits of the status bytes are set.
 If there is a discount or mark-up, it is printed on a separate line and added to the printer registers
provided for this purpose. The values for the whole day are printed on the daily financial report.
 The product price is displayed on the upper line and the product description is displayed on the
lower line of the display.
 If a department is indicated, the accumulated value is added to it. Mark-ups and discounts, if any, are
reported.
The command will not be executed successfully, if:
 No fiscal receipt is open.
 The maximum allowed number of sales for a single receipt has been reached.

_
Fiscal printer programming interface Version1.00BG Page 20
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

 Command “Total” is executed successfully.


 The sum under any tax group becomes negative.
 The sum of any mark-ups or discounts within the receipt becomes negative.
 The EJ is full.

35h (53) TOTAL CALCULATION


Data area: [<Line1>][<Lf><Line2>]<Tab>[[<PaidMode>]<[Sign]Amount>]
Response: <PaidCode><Amount>
Line1 Text, up to 36 bytes, containing the first line
Lf One byte containing 0Ah
Line2 Text, up to 36 bytes, containing the second line
Tab One byte containing 09h
PaidMode Optional code indicating the payment method. It can have the following values:
‘P’ - Cash payment (default);
‘N’ - Credit payment;
‘C’ - Check payment;
‘D’ - Debit card payment
‘I’ - Programmable payment type 1
‘J’ - Programmable payment type 2
‘K’ - Programmable payment type 3
‘L’ - Programmable payment type 4
‘i’ - Programmable payment type 1
‘j’ - Programmable payment type 2
‘k’ - Programmable payment type 3
‘l’ - Programmable payment type 4
‘m’ - Coupons
‘n’ - External coupons
‘o’ - Packing
‘p’ - Internal service
‘q’ - Damages
‘r’ - Bank transfers
‘s’ - Check
Depending on the code, the sums are accumulated in various registers and can be obtained in
the daily report.
Sign One byte with a value of ‘+’ indicating the sign of the Amount (payable).
Amount The amount payable (up to 10 significant digits).
PaidCode One byte: command result.
‘F’ Error.
‘E’ The calculated subtotal is negative. No payment is made and Amount will contain
the negative subtotal.
‘D’ If the amount paid is less than the amount on the receipt. The remaining amount to
be paid is returned to Amount.
‘R’ If the amount paid is more than the sum on the receipt. A “CHANGE” message
will be printed and the change is returned to Amount.
‘I’ The sum under any tax group is negative, causing an error. The current subtotal is
returned to Amount.
Amount Up to 9 digits with a sign. Depends on PaidCode.
This command will calculate the sums on the fiscal receipt, print the sum with a special font and display it.
Additional text can be printed. If the command is successful, an open-drawer pulse is sent, if enabled using
subcommand ‘X’ of command 43. If there are no more data after the <Tab> character, the printer automatically pays
the entire available cash.
The command will not be executed successfully, if:
 No fiscal receipt is open.
 The accumulated sum is negative.
 The accumulated sum under any tax group is negative.
After the command is successfully executed, the fiscal printer will not execute commands 49 and 51 within the
open receipt, however, it still can execute command 53.
Note: Error codes ‘E’ and ‘I’ will never appear in the Bulgarian version of the printer, because commands 49
and 52 (Enter a sale) will not allow negative sums.

36h (54) PRINT FREE FISCAL TEXT

Data area: <Tab><Font>[<Flags>]]<Text>


Response: No data

_
Fiscal printer programming interface Version1.00BG Page 21
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

Text Free text to print. The ‘#’ character is printed at the start and the end of the line. The text may be
with any length, but only the characters fitting on the line are used (without raising a truncation error).
The command allows optional font and line print attributes to be set:
Font Integer between 0 and 3:
0 32 dots (4 mm) height, higher letters
1 32 dots (4 mm) height, normal letters
2 24 dots (3 mm) height
3 16 dots (2 mm) height
Flags Between one and 3 letters: ‘B’, ‘H’ or ‘I’. Each may appear only once. Setting, respectively:
B Bold (strong)
H High (double height)
I Italic (oblique)
A fiscal receipt needs to be open. Otherwise, the text is not printed and S1.1 is raised.

38h (56) CLOSING A FISCAL RECEIPT


Data area: No data
Response: Allreceipt, FiscReceipt
Allreceipt All receipts issued since the last closing time until now.
FiscReceipt All fiscal receipts issued since the last closing time until now.
The accumulated sums from the fiscal receipt are added to the daily sums in the RAM registers.
The command will not be executed successfully, if:
 No fiscal receipt is open.
 Command 53(35h) is not executed successfully.
 The amount paid using command 53 is less than the total on the fiscal receipt.

39h (57) PRINT CUSTOMER INFORMATION


Data area: [# | * | ^]<Bulstat>[<Tab><Seller>[<Tab><Receiver>[<Tab><Client>
[<Tab><TaxNo>[<Tab><Address>]]]]]
Response: No data
Bulstat Customer’s UIC. Between 9 and 14 characters. If preceded by the ‘#’ character, the data
are treated as a PIN, if ‘*’ - personal number, if ‘^’ - work number.
Tab Tabulator (09H). Separator between the parameters.
Seller Seller’s name. Up to 26 characters.
Receiver Recipient’s name. Up to 26 characters.
Client Customer’s name. Up to 26 characters.
TaxNo Customer’s VAT number. Between 10 and 14 characters.
Address Customer’s address. Up to two lines of text, separated by LF (0AH), the first line has a
maximum length of 28 characters, the second line has a maximum length of 34 characters.
All parameters except the first one are optional. If any parameter needs to be set, all parameters preceding it
need to be set as well. If any parameter is empty or not set, a blank space is left for manual entry.
The command is allowed only in an extended fiscal receipt (invoice) to ensure a uniform receipt layout. It
needs to be executed immediately after a full payment of the sum accumulated on the receipt. After that, the receipt
is allowed to be closed

3Ah (58) ENTER (SALE OF) AN PLU OR FUEL


Data area: [D]<[Sign]PLU>[<Tab><Dept><Tab>][*<Qwan>[#UN]][,Perc|;Abs]
[D]@<FTT>[*<Quantity>][,|;<Discount_MarkUp>]
Response: No data
D One byte with a value of ‘D’. If present, the sale is shown on the customer display. If the
length of the PLU name is more than 20, the characters after 20 are truncated.
Sign One byte with a value of ‘-’.
PLU This is the PLU code. Integer between 1 and 999999999 (up to 9 digits).
FTT FTT number.
Tab One byte: tabulator (ASCII code 9).
Dept Department number. Integer between 1 and 60 inclusive. If this parameter is present,
then the tab separators need to be there as well.
Qwan Optional parameter indicating the product quantity. By default, it is 1.000. Length, up to
8 significant digits (no more than 3 after the decimal point). The result of the

_
Fiscal printer programming interface Version1.00BG Page 22
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

multiplication (Unit price)*Qwan is rounded by the printer to the number of decimal


digits set and also must not exceed 8 significant digits.
UN Name of the unit of measurement. Optional text for the unit of measurement for the
quantity, up to 8 characters, for instance, “kg”.
Perc This is an optional parameter indicating the value of the mark-up or discount (depending
on the sign), as a percentage of the current sale. The allowable values are between -
99.00% and 99.00%. Up to 2 decimal digits are accepted.
Abs This is an optional parameter indicating the value of the mark-up or discount (depending
on the sign), as an amount. A discount amount exceeding the value of the sale is not
allowed.

Only one of the Perc or Abs arguments is allowed.


The FP carries out the following actions:
 The product name, price and tax group are read from the PLU table.
 If the sale is by department and it is enabled using command 43, subcommand ‘N’, the
department name is printed.
 The PLU name, quantity and unit price are printed. The calculated price with the letter indicating
the tax group is printed on the second line. The registers for the accumulated sums and PLU
quantities are updated. If command 43h was used to set an invoice-type text formatting, then the
product name, unit price, quantity and price are printed on separate lines.
 The product price is added to the accumulated sums in the RAM registers. In the event of an
overflow, the respective bits of the status field are set.
 If there is a discount or mark-up, it is printed on a separate line and added to the printer registers
provided for this purpose. The values for the whole day are printed on the daily financial report.
 If a department is indicated, the accumulated value is added to it. Mark-ups and discounts, if
any, are reported.
The command will not be executed successfully, if:
 No PLU with the specified code is programmed.
 For a printer registered for operation at a gas station and ‘C’-VAT group PLU, there is no fuel
with this name in any tank.
 No fiscal receipt is open.
 The maximum allowed number of sales for a single receipt (512) has been reached.
 Command (35h) is executed successfully.
 The sum under any tax group becomes negative.
 The sum of any mark-ups or discounts within the receipt becomes negative.
 The EJ is full.

3Ch (60) CANCEL (TERMINATE) A FISCAL RECEIPT


Data area: No data
Response: No data
The command is allowed only in an open fiscal receipt and only before running command 53 (Total). Cancels
all sums accumulated in the receipt. Prints double-width “=CANCELLED=” and the receipt ends with the
“FISCAL RECEIPT” text.

3Dh (61) SET THE DATE AND TIME


Data area: <DD-MM-YY><space><HH:MM[:SS]>
Response: No data
A date before the last fiscal memory record date cannot be set. The device is intended to operate until the year
2099 inclusive. After a memory RESET, the command must be executed to continue normal operation, whereby a
RESET record is made in the fiscal memory.
It is not possible to set the date and time before those of the last printed document stored in the EJ. This is to
ensure correct searching for documents in the EJ by date and time for printing or downloading over the serial
interface as text.

3Eh (62) READ THE DATE AND TIME


Data area: No data.
Response: <DD-MM-YY><Space><HH:MM:SS>

3Fh (63) DISPLAY THE DATE AND TIME


Data area: No data
Response: No data

_
Fiscal printer programming interface Version1.00BG Page 23
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

The current printer date and time are displayed on the lower line of the display in the following format:
DD-MM-YY HH:MM:SS.

40h (64) LAST FISCAL RECORD INFORMATION


Data area: [[<LongDT>]<Option>]
Response: ErrCode[,N,TaxA,TaxB,TaxC,TaxD,TaxE,TaxF,TaxG,TaxH,Date]
LongDT One optional byte with a value of '*'. If present, the time of the daily report is returned as well.
Option One optional byte with a value of '0' or '1'. If it is omitted, it is assumed to be '0'. '0' returns the
sales by tax group, '1' returns the accumulated taxes.
ErrCode Error code:
‘P’ The command is successful. Data follow.
‘F’ The command is unsuccessful.
N This is the last fiscal record number: 4 bytes.
TaxX The sums under each tax group ‘A’, ‘B’, ‘C’, …: 12 bytes with a sign.
Date The fiscal record date: 6 bytes (DDMMYY).
The command sends the information from the last record in the fiscal memory to the PC.

41h (65) INFORMATION ON THE SUMS UNDER TAX GROUPS FOR THE DAY
Data area: [Option]
Response: TaxA,TaxB,TaxC,TaxD,TaxE,TaxF,TaxG,TaxH
Option Specifies the information to return:
‘0’: Total sales.
‘1’: Accumulated VAT.
If the parameter is omitted, it is assumed to be ‘0’.
TaxX The sums under each tax group ‘A’, ‘B’, ‘C’, ... : 12 bytes with a sign.
Returns the sums under tax groups since the last closing time until the time the command is received.

42h (66) SET ALLOWABLE INVOICE NUMBER RANGE


Data area: [Start,End]
Response: [Start,End,Current]
Start Sets the range start value. Integer up to 10 digits.
End Sets the range end value. Integer up to 10 digits.
Current The current invoice counter value. 10-digit integer.
Start must be less or equal to End. If the command is successful, the current invoice number becomes Start.
If the data area is empty, the printer returns the current range and counter.
The command is allowed, if:
- It has never been executed after the printer was placed into operation.
- The RAM was reset, therefore, the current counter and allowed range information was lost.
- The incremental invoice counter reached a number outside the allowed range. A new range
must be set.

44h (68) NUMBER OF AVAILABLE FIELDS IN THE FISCAL MEMORY


Data area: No data
Response: Free,Total
Free The number of available locations for fiscal records. (4 bytes).
Total The total number of fiscal records in the printer. (4 bytes).
Returns the number of available fields in the fiscal memory provided to store information when a daily
financial report with reset (Z-report) is run.

45h (69) DAILY FINANCIAL REPORT


Data area: [<Option>[N]
Response: Closure,FM_Total,TotA,TotB,TotC,TotD,TotE,TotF,TotG,TotH
Option Optional parameter controlling the report type being generated:
‘0’ Prints a Z-report. The printout ends with the “FISCAL RECEIPT” text.

_
Fiscal printer programming interface Version1.00BG Page 24
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

‘2’ A daily financial report without reset is run (i.e., no information is recorded in the
fiscal memory and the registers are not reset). The printout ends with the
“SERVICE RECEIPT” logo.
N This character at the end of data disables the clearing of accumulated data by operator
when a report with reset is run.
Closure The fiscal record number: 4 bytes.
FM_Total The sum of all non-VAT sales: 12 bytes with a sign
TotX The sums under each tax group ‘A’, ‘B’, ‘C’, … : 12 bytes with a sign.
A daily report without reset can be run also by pressing and holding the <FEED> button when the printer is
powered on until the second beep.

46h (70) SERVICE MONEY DEPOSIT AND WITHDRAWAL


Data area: [<Amount>]
Response: ExitCode,CashSum,ServIn,ServOut
Amount The amount to be registered (up to 10 significant digits). Depending on the sign of the
number, it is interpreted as a deposit or withdrawal.
ExitCode ‘P’ The request is executed. If the requested amount is not zero, the printer prints a service
receipt to register the transaction.
‘F’ The request is denied. This happens, if:
 The available cash is less than the requested service withdrawal.
 There is an open fiscal or service receipt.
CashSum Available cash. The amount is increased both with this command and with each cash
payment.
ServIn The sum of all “Service Deposit” commands.
ServOut The sum of all “Service Withdrawal” commands.
Changes the contents of the available cash register. Depending on the sign of the specified amount, it is
accumulated in the service deposit or withdrawal register. The information is not stored in the fiscal memory and
remains available until closing time. It is printed using command 69 (45h) and when a daily financial report without
reset is run on the printer. If the command is successful, an open-drawer pulse is sent by a parameter, if enabled
using subcommand ‘X’ of command 43.

47h (71) PRINT DIAGNOSTIC INFORMATION


Data area: No data
Response: No data
This command prints a service receipt with diagnostic information.
The receipt contains the following:
 The software date and version.
 The firmware checksum.
 The serial port baud rate.
 The positions of the configuration switches and the country name.
 The emergency time in the event of a power failure.
 The number, date and time of the last RAM reset (if any).
 The current printing head temperature.
 The total number and the number of available fields in the fiscal memory.
 The current date and time.
The command will not be executed, if there is an open receipt or no paper. It can be run also by pressing and
holding the <FEED> button when the printer is powered on until the first beep.

48h (72) FISCALIZATION


Data area: <Serial>
Response: ErrCode
Serial The unique device ID. Should be as set by command 91 (5Bh).
ErrCode Error code or 'P' for successful execution.
Status 5.3 is used to verify if the command was successfully executed. The command is not executed, if:
 The Unique ID is not valid.
 The fiscal printer is already fiscally registered.
 No Unique Device ID is programmed.
 The Unique ID does not match the one specified.
 There is an open receipt.
 There are customer fiscal receipts issued after the last daily financial report with reset.

_
Fiscal printer programming interface Version1.00BG Page 25
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

 The tax rates are not set.


 The UIC contains only zeroes.
 The clock is not set.
 The EJ is not formatted.
The fiscal registration of the device is carried out. After the command is successfully executed, the device can
no longer be returned in the fiscally non-registered status.
The UIC is stored in the fiscal memory together with the current date and time. All registers are reset. The
printer opens the first fiscal receipt, records the time of fiscal registration on it and closes the receipt. The
documents begin to be stored in the EJ.

49h (73) FULL FISCAL MEMORY REPORT BY BLOCK NUMBER


Data area: [[<SHA1>][<SkipZ>]<Start>,<End>]
Response: No data
SHA1 Optional argument: one byte with a value of '#'. If present, for each Z-report, prints also the
checksum using the SHA-1 algorithm.
SkipZ Optional argument: one byte with a value of '*'. If present, for each Z-report, prints only the tax
rates with non-zero accumulated sums for the day. Such report is non-standard and can be
used only as an internal reference at the location!
Start Start fiscal block number. 4 bytes.
End End fiscal block number. 4 bytes.
This command prints a full fiscal memory report from one number to another. Without data input, the entire
period of operation is assumed.
Without start and end number, a report for the entire period of operation is printed.

4Ah (74) OBTAIN THE PRINTER STATUS


Data area: [Option]
Response: <S0><S1><S2><S3><S4><S5>|<NLines>|HdwInfo|InfoReciepts
Option One byte with the following meanings:
W First, waits for the printer to finish printing everything in the print buffer.
X Does not wait for the printer, but responds immediately.
L Returns the number of lines remaining to be printed.
P Returns printer hardware information.
R Returns data on the customer documents sent to the NRA server.
Sn Status byte N.
Nlines Number of pending lines in the print buffer. A value of 0 means that there are no pending print
data.
HdwInfo Returns printer operation statistics since the manufacture date until now. The data are in the
following format:
P<Len>,<Docs>,<Cuts>,<PwOns>,<MdRst>
Len Length of the printed paper in millimetres.
Docs Number of printed documents.
Cuts Number of paper cuts.
PwOns Number of times the printer was powered-on.
MdRst Number of modem restarts. Not currently supported.

InfoReciepts Returns data on the sent and unsent customer receipts


<Lastprintdoc>,(Nlastsentdoc, Dtlastsentdoc, Minfromlastsuccesssent),(Nfirstnotsentdoc,
Dtfirstnotsentdoc, Minfromfirstnotsuccesssent)
Lastprintdoc Number of the last printed document.
Nlastsentdoc Number of the last successfully sent document.
Dtlastsentdoc Date and time of the last successfully sent document.
Minfromlastsuccesssent Minutes since the last successfully sent document.
Nfirstnotsentdoc Number of the first unsent document.
Dtfirstnotsentdoc Date and time of the first unsent document.
Minfromfirstnotsuccesssent Minutes since the first unsent document.

If there are no data, the dates are 01-01-2000 00:00:00 and the minutes are 0.
If the minutes of Minfromfirstnotsuccesssent are more than 1440, the printer is blocked.

4Bh (75) FORCE SUPPRESSED PRINTING


Data area: [<Restore>]

_
Fiscal printer programming interface Version1.00BG Page 26
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

Response: No data
Resumes receipt printing suppressed as a result of command 43, subcommand 'Q'.
Restore One byte with the following possible values:
0 After the end of printing, printing is reenabled—next data will be printed immediately.
1 After the print buffer is cleared, printing remains suppressed until the end of the receipt.

4Ch (76) FISCAL TRANSACTION STATUS


Data area: [Option]
Response: Open,Items,Amount[,Tender]
Option = ‘T’. If this parameter is set, the command will return the information on the current
status of the bill payable by the customer until now.
Open One byte which is ‘1’, if a fiscal or service receipt is open (the exact type is indicated by
the status bits), and ‘0’, if no receipt is open.
Items The number of sales entered on the current or last fiscal receipt. 4 bytes.
Amount The amount on the last fiscal receipt: 9 bytes with a sign.
Tender The amount paid on the current or last receipt. 9 bytes with a sign.
This command allows the PC application to set the status and, if needed, also resume and complete a fiscal
transaction, interrupted prematurely in an emergency, such as a power failure.

4Fh (79) SUMMARY TAX MEMORY REPORT FROM-TO DATE


Data area: <Start>[,<End>]
Response: No data
Start Start date: 6 bytes (DDMMYY)
End End date: 6 bytes (DDMMYY)
The command calculates and prints a summary fiscal memory report.
If the second parameter is omitted, the command generates a monthly or annual report. The syntax in this case
is:
Start Month: 4 bytes (MMYY) for a monthly report.
Start Year: 2 bytes (YY) for an annual report.

50H (80) BEEP (TONE)


Data area: [<SoundData>]
Response: No data
The command is used to emit a sequence of tones with set frequencies and durations.
Without data input, a beep with a frequency of 2 kHz and a duration of 300 ms is emitted.
If the data input is of the following type: <Hz>,<mSec>
where Hz and mSec are integers, then a tone with a frequency of Hz Hertz (between 100 and 5000) and a duration
of mSec milliseconds (between 50 and 2000) is emitted.
In the other cases, the data are similar to a musical notation and can have any length (not exceeding the
protocol limit of 218 bytes). The first invalid character interrupts the command. The allowed subcommands in the
data are:
 Note: One Latin capital letter with a value between ‘A’ and ‘G’.
‘C’ Do
‘D’ Re
‘E’ Mi
‘F’ Fa
‘G’ Sol
‘A’ La
‘B’ Ti
If the note is immediately followed by the ‘#’ character, then it is raised by one semitone (sharp). If the
note is immediately followed by the ‘&’ character, then it is lowered by one semitone (flat).
 Rest: The space character (ASCII 20h).
After a note or a rest, there can be one or more bytes specifying the duration. The valid characters are
between ‘0’ and ‘5’, having the following meanings:
‘0’ Base duration
‘1’ Base duration * 2
‘2’ Base duration * 4
‘3’ Base duration * 8
‘4’ Base duration * 16
‘5’ Base duration * 32
If there are multiple sequential durations, they are added together.

_
Fiscal printer programming interface Version1.00BG Page 27
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

 Play on a higher scale: the ‘+’ character.


 Play on a lower scale: the ‘-‘ character.
 Set the tempo: The ‘^’ character followed by a single digit. The digit sets the note and rest durations as a
percentage of the base duration. Allowed value:
‘1’ 200%
‘2’ 175%
‘3’ 140%
‘4’ 120%
‘5’ 100%
‘6’ 80%
‘7’ 60%
‘8’ 50%
‘9’ 40%
 Return to scale 1 (default). The ‘@’ character. The ‘La’ tone in this scale is 440 Hz.
The sent sequence is played on the background and the printer can continue executing commands during
playback.

51H (81) OBTAIN THE SUPPLY VOLTAGE AND TEMPERATURE


Data area: No data
Response: <Vh>,<Temp>

Vh The supply voltage in volts.


Temp The printing head temperature in degrees.

53h (83) SET THE DECIMAL DIGITS, CURRENCY AND TAX RATES
Data area: [Multiplier,Decimals,Currency,EnabledT,TaxA,...]
Response: Multiplier,Decimals,Currency_name,EnabledT,TaxA,TaxB,TaxC,TaxD,…
Multiplier Multiplier: between 0 and 3, specifying the power of 10 before being multiplied by the
input or output number. Currently deactivated and not used.
Decimals This is one byte with a value between 0 and 2 specifying the decimal point position.
Currency The currency name. Up to 6 bytes.
EnabledT 8 bytes with possible values of ‘0’ or ‘1’ specifying whether the respective tax group is
disabled (‘0’) or enabled (‘1’).
TaxX The values of the tax rates.
If nothing is set in the data area, the FP returns the currently valid values.
If any parameter must be set, then the remaining parameters must also be set.
Setting new tax rates is only allowed before the first customer fiscal receipt for the day is issued.
Before fiscal registration, the command data are stored in the RAM only and can be changed any number of
times.

54H (84) PRINT A BARCODE


Data area: <Type>[<Align>][<AllowN>],<Data>
or
<Type>[<Align>];<Data>
Response: No data
Type Barcode type. One byte with the following allowed values:
‘1’ EAN8. The data contain only digits and are 7 bytes long. The checksum is calculated by the
printer.
‘2’ EAN13. The data contain only digits and are 12 bytes long. The checksum is calculated by
the printer.
‘3’ Code 128. The data are characters with ASCII codes between 32 and 127. Their length is
between 22 and 42 characters (depends on the contents—the maximum length is achieved
when all characters are digits). The checksum is calculated by the printer. When printing on
narrow paper, the data length is obviously smaller.
‘4’ ITF (Interleaved 2 of 5). The data contain only digits.
‘5’ ITF (Interleaved 2 of 5). The data contain only digits. The printer automatically generates
and prints a checksum.
‘D’ Two-dimensional barcode Data Matrix. The data are any printable characters (with length
up to 140).
‘Q’ Two-dimensional barcode QR Code. The data are any printable characters (with length up to
140).
‘P’ Two-dimensional barcode PDF417. The data are any printable characters (with length up to
140).

_
Fiscal printer programming interface Version1.00BG Page 28
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

Align One byte: 'L', 'R' or 'C': left-, right-aligned or centred, respectively. It is allowed only in the
two-dimensional barcodes. If the data are separated by ',', then they are printed as text as
well.
AllowN Optional parameter: one character with a value of '*'. If present, barcodes Code 128 and
ITF will be printed, if needed (longer data input), with a thin-line size of a single dot.
Please, bear in mind that this barcode printing is not standard-compliant, but most readers
can still read it. This way, the maximum length of the data input is doubled. The parameter
has no effect on the other barcodes.
The command prints a barcode. It is allowed only on an open fiscal or service receipt. The two-
dimensional barcodes can be printed left-, right-aligned or centred, while the one-dimensional barcodes can be
printed only centred. If the data are comma-separated, the information is additionally printed as text under the
barcode. If the data length or contents are invalid, the “Syntax Error” status bit is raised and the barcode is not
printed.
The height of the one-dimensional barcodes is set by command 43.

55H (85) SET THE ADDITIONAL PAYMENT NAMES


Data area: Option[,Name]
Response: Result|Name
Option:
‘I’ Additional payment 1.
‘J’ Additional payment 2.
‘K’ Additional payment 3.
‘L’ Additional payment 4.
‘i’ Additional payment 1. Identical to ‘I’.
‘j’ Additional payment 2. Identical to ‘J’.
‘k’ Additional payment 3. Identical to ‘K’.
‘l’ Additional payment 4. Identical to ‘L’.
‘m’ Additional payment 5.
‘n’ Additional payment 6.
‘o’ Additional payment 7.
‘p’ Additional payment 8.
‘q’ Additional payment 9.
‘r’ Additional payment 10.
‘s’ Additional payment 11.
Name Name of the respective payment type (up to 24 characters). If not set, returns the current name.
Result One byte:
‘P’ No error.
‘F’ The name is longer than 24 bytes.
The command sets a comment text to be printed before the data from the additional payment types
(command 53). It is allowed only before the first customer fiscal receipt for the day is issued.

56H (86) READ THE DATE OF THE LAST RECORD IN THE FISCAL MEMORY
Data area: [<WithTime>]
Response: DT
WithTime Optional parameter: the 'T' character. If present, also returns the time of the last record.
DT The date (or date and time) of the last (latest) record in the fiscal memory, in the following
format:
DD-MM-YYYY
or
DD-MM-YYYY hh:mm:ss

57H (87) PROGRAM A DEPARTMENT NAME


Data area: <Dept>,<TaxGr>,<Line1>[<LF><Line2>]
Response: No data
Dept Department number. Integer between 1 and 1200.
TaxGr Tax group associated with the department.
Line1 Department name or descriptive text. Up to 28 characters.
LF Separator. One character: ASCII code 10.
Line2 Department name or descriptive text—second line. Optional parameter: up to 34 characters.
The command can be executed only if no fiscal receipts for the department have been issued after the
last Z-report. With a new printer or after a RAM reset, the department names are empty. The programmed

_
Fiscal printer programming interface Version1.00BG Page 29
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

name is printed on the extended daily financial report with department printout (command 117) and,
optionally, at the top of each fiscal receipt.

58H (88) OBTAIN DATA ON THE ACCUMULATED SUMS FOR A DEPARTMENT


Data area: <Dept>
Response: ExitCode[TaxGr,RecSales,RecSum,TotSales,TotSum,Line1<LF>Line2]
Dept Department number. Integer between 1 and 1200. Value 0 returns data on the sales made
without department specified. In this case, the tax group is missing.
ExitCode One byte with the following possible values:
‘P’ The department is programmed. Followed by the department data listed below.
‘F’ The department is not programmed. No data on it exist.
TaxGr The tax group of the department.
RecSales Number of sales for the department in the receipt.
RecSum Accumulated sum for the current or last fiscal receipt for the respective department.
Floating-point number with two decimal digits.
TotSales Number of sales for the department, for the day.
TotSum Accumulated sum for the day, for the respective department. Floating-point number with two
decimal digits.
Line1 Department name or descriptive text.
Line2 Department name or descriptive text—second line.

59h (89) PROGRAM THE PRODUCTION TEST AREA


Data area: <Test>
Response: Result,Free
Test One byte. If it is ‘T’, then makes a record in the fiscal memory. Otherwise, makes no
record, just returns the parameters.
Result One byte:
= P (50h) No error.
= F (46h) Has an error.
Free The number of remaining blocks available to record such blocks. 4 bytes.
This command is executed to test the fiscal memory.
Test block to record in the fiscal memory: 55h,AAh,33h,CCh,5Ah,A5h,3Ch,C3h.
If S1.1 is raised, the fiscal memory is not formatted or is in READONLY mode.

5Ah (90) READ DIAGNOSTIC INFORMATION


Data area: [*]<Calc>
Response:
<Name>,<FwRev><Country><Sp><FwDate><Sp><FwTime>,<Chk>,<Sw>,<Ser>,<FM>
* Optional parameter allowing to read all 16 configuration switches.
Calc If it is ‘1’, calculates a firmware checksum. Otherwise, returns ‘FFFF’. 1 byte.
Name Name of the fiscal device (in this case, “FP-800 FP-800 / FP-2000 / FP-650 / SK1-21F /
SK1-31F/ FMP-10 / FP-700”).
FwRev The software version. 4 bytes.
Country Two-letter country code (in this case, “BG”).
Sp Space. 1 byte.
FwDate The software date: DDMmmYY. 7 bytes.
Sp Space. 1 byte.
FwTime The software time: HHMM. 4 bytes.
Chk EPROM checksum. A 4-byte hexadecimal string. For instance, if the checksum is 214Ah, it
will be sent as 32h,31h,34h,41h.
Sw The switches between Sw1 and Sw8. A 8-byte string containing ‘0’ or ‘1’
Ser Unique Device ID: 8 bytes.
FM Fiscal Memory ID: 8 bytes.

5Bh (91) PROGRAM THE UNIQUE DEVICE ID AND FISCAL MEMORY ID


Data area: Serial,FMnumber
Response: Result,CountryStr
Serial These are 8 bytes: Unique Printer ID containing 2 Latin letters and at least 6 digits.
FMnumber These are 8 bytes: the Fiscal Memory Unit ID. Contains only digits.
Result One byte containing a letter: ’P’: no errors, ‘F’: has errors.

_
Fiscal printer programming interface Version1.00BG Page 30
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

CountryStr String containing the name of the country. For instance, “BULGARIA”
The command can only be executed in service mode at the manufacturer’s facilities. The printer is delivered to
the customer with pre-set Unique Printer ID and Fiscal Memory ID.
If Result = ‘F’ and S1.1 is raised, the command is not executed, because the fiscal memory is not formatted or
the Unique ID is already set.

5Ch (92) PRINT A DIVIDER LINE


Data area: Type
Response: No data
Type One byte with the following allowed values:
'1' Fill with the '-' character.
'2' Fill with alternating '-' and ' ' characters.
'3' Fill with the '=' character.
'4' Fill with the double-width '*' character.
'W<bm>' where bm is a number between 0 and 3 (bit mask).
The text “not payable!” with a triple height is added unconditionally.
1: adds the text “under this receipt”.
2: adds a frame of double-width '*' characters above and below.
'W<bm>' is supported only on service receipts.
The printer prints a divider line of the specified type along the entire paper width.
A fiscal or service receipt must be open.

5Dh (93) OBTAIN INFORMATION ON THE DISCOUNTS AND MARK-UPS FOR THE DAY
Data area: No data
Response: <CntD>,<SumD>,<CntM>,<SumM>
CntD Number of discounts after the last Z-report.
SumD Sum of discounts after the last Z-report.
CntM Number of mark-ups after the last Z-report.
SumM Sum of mark-ups after the last Z-report.

5Eh (94) FULL FISCAL MEMORY REPORT BY FISCAL RECORD DATE


Data area: [<SHA1>][<SkipZ>]<Start>[,<End>]
Response: No data
SHA1 Optional argument: one byte with a value of '#'. If present, for each Z-report, prints also the
checksum using the SHA-1 algorithm.
SkipZ Optional argument: one byte with a value of '*'. If present, for each Z-report, prints only the tax
rates with non-zero accumulated sums for the day. Such report is non-standard and can be
used only as an internal reference at the location!
Start The start fiscal record date. 6 bytes (DDMMYY).
End The end fiscal record date. 6 bytes (DDMMYY).
This command prints a full fiscal memory report for the period between the two dates.
If the second parameter is omitted, the command generates a monthly or annual report. The syntax in this case
is:
Start Month: 4 bytes (MMYY) for a monthly report.
Start Year: 2 bytes (YY) for an annual report.

5Fh (95) SUMMARY FISCAL MEMORY REPORT FOR A PERIOD


Data area: [<Start>,<End>]
Response: No data
Start Start fiscal record number.
End End fiscal record number.

The command calculates and prints a summary fiscal memory report. This report for the entire period of
operation of the fiscal printer can also be run by pressing and holding the <FEED> button when the printer is
powered on until the fourth beep.
With no data input, a report for the entire period of operation is printed.

61h (97) READ THE SET TAX RATES

_
Fiscal printer programming interface Version1.00BG Page 31
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

Data area: No data


Response: TaxA,TaxB,TaxC,TaxD,TaxE,TaxF,TaxG,TaxH
TaxA Tax rate A
TaxB Tax rate B
TaxC Tax rate C
TaxD Tax rate D
TaxE Tax rate E
TaxF Tax rate F
TaxG Tax rate G
TaxH Tax rate H

62h (98) SET THE UIC


Data area: <Text>[,<Name>]
Response: Result
Text These are up to 14 bytes containing the UIC as text.
Name This is the comment text before the UIC. By default, it is “UIC”.
Result ‘P’ No error.
‘F’ Error.

63h (99) READ THE UIC


Data area: No data
Response: <Text>,<Name>
Text The UIC as text.
Name The comment text before the UIC.

64h (100) SHOW TEXT ON THE DISPLAY


Data area: Text
Response: No data
Text Text, up to 40 characters, sent to the display. If ASCII characters below 20h (control
sequences) need to be sent, they are increased by 40h and are preceded by 10h (DLE).
For example: to send 1Bh,4Bh,00h, it must be entered as 10h,5Bh,4Bh,10h,40h in the data field.

65h (101) SET AN OPERATOR PASSWORD


Data area: <OpCode>,<OldPwd>,<NewPwd>
Response: No data
OpCode Operator code. Between 1 and 16.
OldPwd Old password (between 4 and 8 digits).
NewPwd New password (between 4 and 8 digits).
Sets one of the sixteen operator passwords. The password will be requested when opening a fiscal receipt.
After three unsuccessful attempts to set a password, the printer is locked and needs to be powered off and then back
on to continue to operate.
After initialisation or RAM reset, all passwords are “0000”.

66h (102) SET AN OPERATOR NAME


Data area: <OpCode>,<Pwd>,<OpName>
Response: No data
OpCode Operator code. Between 1 and 16.
Pwd Password (between 4 and 8 digits).
OpName Operator name (up to 24 characters).
Sets one of the sixteen operator names. The operator ID and name is printed at the top of each fiscal
(customer) receipt. After three wrong passwords are entered, the printer is locked and needs to be powered off and
then back on to continue to operate.
After initialisation or RAM reset, all sixteen operator names are empty.

67h (103) CURRENT RECEIPT INFORMATION


Data area: No data

_
Fiscal printer programming interface Version1.00BG Page 32
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

Response: CanVd,TaxA,TaxB,TaxC,TaxD,TaxE,TaxF,TaxG,TaxH,Inv,InvNum
CanVd: Is a return possible (sale with a negative sign) [0/1]
TaxA: Accumulated sum under tax group A
TaxB: Accumulated sum under tax group B
TaxC: Accumulated sum under tax group C
TaxD: Accumulated sum under tax group D
TaxE: Accumulated sum under tax group E
TaxF: Accumulated sum under tax group F
TaxG: Accumulated sum under tax group G
TaxH: Accumulated sum under tax group H
Inv: Is an extended customer receipt open.
InvNmb: Number of the next invoice (10 digits).
Provides information on the accumulated sums under tax groups and whether already sold products can be
returned.

68h (105) OPERATOR REPORT


Data area: No data
Response: No data

Prints information on the sales by operator. For each operator, prints the name, ID, number of fiscal receipts,
discounts, mark-ups, adjustments and the accumulated sums.

6Ah (106) OPEN THE DRAWER


Data area: [<mSec>]
Response: No data
mSec Pulse length in milliseconds (5-100)

Sends a pulse to open the drawer. The parameter sets a new pulse length value, which is saved by the printer.
If the parameter is omitted, the last set value is used. After a memory RESET, the value is set to 15 ms.

6Bh (107) DEFINE AND READ PLUs OR FUEL


Data area: <Option>[Parameters]
Response: ErrorCode[Data]

Option One byte defining the type of requested operation. Depending on it, the
command may or may not require additional parameters. Possible values: ‘I’,
‘P’, ‘D’, ‘A’, ‘C’, ‘R’, ‘F’, ‘L’, ‘N’, ’X’, ’f’, ‘l’, ‘n’, ‘x’.
ErrorCode One byte indicating the result of the operation, with the following meanings:
 ‘P The command is successful.
 ‘F’ The command is unsuccessful.
Parameters Command data. Detailed below by <Option>.
 ‘I’ Article information
Syntax: <I>[@]
Response: Total,Prog,Len | <9>,<ProgrFTT>,<NameMaxLength>
@ Optional parameter to read the number of programmed fuel FTT codes and the
maximum number of characters for their names.
*Only for type 3 and 31 printers.
Total Total number of programmable PLUs (3000 for this printer).
Progr Number of programmed PLUs.
Len Maximum PLU name length.
ProgrFTT Number of programmed fuel FTT.
NameMaxLength The maximum number of characters for the FTT name.
 ‘P’ Program a PLU.
Syntax: <P><TaxGr><PLU>,<Group>,<SPrice>,[<Replace>]<Quantity>,<Name>
TaxGr Tax group (‘A’,’B’,’C’,’D’,’E’,’F’,’G’,’H’)
PLU PLU code (between 1 and 999999999)
Group Product group (between 1 and 99)
SPrice Unit price. Up to 8 significant digits.
Replace Optional parameter: one byte with a value of ‘A’. Changes the meaning of
the next parameter (Quantity).
Quantity Number with up to 3 decimal digits: the available quantity for this PLU. If
the parameter Replace is present, then the available quantity is replaced by
Quantity. Otherwise, it is added to the existing quantity (if the PLU is

_
Fiscal printer programming interface Version1.00BG Page 33
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

already programmed, obviously). Each PLU sale command will decrease


this quantity.
Name PLU name. Up to 36 bytes.
Up to 3000 PLUs can be programmed. The command will be rejected, if such PLU
already exists and has sales. A PLU with zero accumulated sums can be edited. If the printer
is registered for operation at a gas station and the PLU group is 'C', the duplicate name check
is also carried out.
 ‘A’ Edit the available PLU quantity.
Syntax: <A><PLU>,<Quantity>
PLU PLU code (between 1 and 999999999).
Quantity Quantity adjustment: a floating-point number with up to 3 decimal digits.
Positive numbers increase and negative numbers decrease the quantity.
The command is rejected if the PLU is not programmed.

 ‘C’ Set the PLU or fuel price.


Syntax: C<PLU>,<Price>
PLU PLU code.
Price PLU unit price.
Syntax 1:C@<FTT>,<Price>
FTT Fuel FTT code.
Price Fuel unit price.
 ‘D’ Delete the PLU.
Syntax: <D><A | PLU | PLU1,PLU2>
’A’ Deletes all PLUs with zero accumulated sums.
PLU Deletes the specified PLU code, if it has no accumulated sums.
PLU1,PLU2 Deletes the PLUs within the set range without accumulated sums.
 ‘R’ Read the PLU data.
Syntax: <R><PLU> | R@<FTT>
Response: <’P’><PLU>,<TaxGr>,<Grp>,<SPrice>,<Total>,<Sold>,<Avail>,<Name>
<PLU> PLU code. Between 1 and 999999999.
<TaxGr> Tax group. One byte.
<Grp> Product group. Between 1 and 99.
<SPrice> Unit price. Floating-point number with the current decimal digits for the
printer.
<Total> Accumulated sum for this PLU.
<Sold> Sold quantity. Floating-point number with 3 decimal digits.
<Avail> Available quantity. Floating-point number with 3 decimal digits.
<Name> PLU name. Up to 36 bytes.

Response1:<P><FTT>,<TaxGr>,<Grp>,<SPrice>,<Total>,<Sold>,<Avail>,<FTTName>
<FTT> FTT number.
<Grp> It will always be 0.
<SPrice> Unit price. Floating-point number with the current decimal digits for the
printer.
<Total> Accumulated sum for the FTT.
<Sold> Sold quantity. Floating-point number with 3 decimal digits.
<Avail> It will always be 0.
<FTTName> FTT name. Up to 16 bytes.

If the PLU or FTT is not found, returns one byte: ‘F’.


 ‘F’ Return the data on the first programmed PLU or FTT found.
Syntax: <F>[<PLU>] | <F@>
The data returned are like those for subcommand ‘R’ | ‘R’@. If the PLU parameter is set,
the search starts from it, in ascending order. Otherwise, it starts from 1.
With the F@ input, will return the first found FTT.
 ‘L’ Return the data on the last found programmed PLU.
Syntax: <L>[<PLU>]
The data returned are like those for subcommand ‘R’. If the PLU parameter is set, the search
starts from it, in descending order. Otherwise, it starts from 999999999.
 ‘N’ Return the data on the next found programmed PLU or FTT.
Syntax: <N> | <N@>
The data returned are like those for subcommand ‘R’.
The last three subcommands are used to download the data on all programmed PLUs from the PC.
Subcommand ‘F’ or ‘L’ is sent followed by subcommand ‘N’ until the ‘F’ response is received meaning that the

_
Fiscal printer programming interface Version1.00BG Page 34
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

last PLU was read. The PLUs are returned sorted as numbers in ascending or descending order, depending on
the first sent command.
 ‘f’ Return the data on the first found PLU or FTT having sales.
Syntax: <f>[<PLU>] | <f@>
The data returned are like those for subcommand ‘R’. If the PLU parameter is set, the search
starts from it, in ascending order. Otherwise, it starts from 1.
 ‘l’ Return the data on the last found PLU having sales.
Syntax: <l[<PLU>]
The data returned are like those for subcommand ‘R’. If the PLU parameter is set, the search
starts from it, in descending order. Otherwise, it starts from 999999999.
 ‘n’ Return the data on the next found PLU or FTT having sales.
Syntax: <n> | <n@>
The data returned are like those for subcommand ‘R’.
The last three subcommands are used to download the data on all PLUs having sales for the day from the
PC. Subcommand ‘f’ or ‘l’ is sent followed by subcommand ‘n’ until the ‘F’ response is received meaning that
the last PLU was read. The PLUs are returned sorted as numbers in ascending or descending order, depending
on the first sent command.
 ‘X’ Find the first available (not programmed) PLU.
Syntax: <X>[<PLU>]
Response: PLU
If the PLU parameter is set, returns the first available (not programmed) PLU with a number higher than
or equal to it. If it is omitted, PLU=1 is assumed.
 ‘x’ Find the last available (not programmed) PLU.
Syntax: <X>[<PLU>]
Response: PLU
If the PLU parameter is set, returns the first available (not programmed) PLU with a number lower than or equal
to it. If it is omitted, PLU=999999999 is assumed.

6Ch (108) EXTENDED DAILY FINANCIAL REPORT


Data area: [<Option>[N]
Response: Closure,FM_Total,TotA,TotB,TotC,TotD,TotE,TotF,TotG,TotH
The command has the same syntax as command 69 (45H), however, at the top of the daily report, it
additionally prints the list of PLUs with PLU lower than or equal to 10 having sales for the day (fuels).

6Dh (109) PRINT A DUPLICATE RECEIPT


Data area: <Count>
Response: No data

Count Number of duplicate receipts (accepts only 1 as a value!).


Prints a copy of the last fiscal receipt with sales. The copy is marked as a SERVICE RECEIPT and,
immediately after the HEADER, a line with the bold “DUPLICATE” text is printed. For any repeated attempt, the
command will refuse to print. Duplicate receipt printing is also not possible, if the number of lines on the receipt is
more than 1000.

6Eh (110) PAYMENT INFORMATION BY TYPE FOR THE DAY


Data area: [<Extended>]
Response: Cash,Credit,Debit,Cheque,Pay1,Pay2,Pay3,Pay4,Closure,Receipt[,Pay5,...]

Extended Optional parameter: one byte with a value of '*'. If present, returns all 11 additional
payment types.
Cash Paid in cash
Credit Credit
Debit Debit card
Cheque Paid by check
PayX Paid by one of the additional payment types
Closure Current (last) fiscal record
ReceiptNext fiscal receipt number
Returns information on the sum breakdown for the day by payment method.

_
Fiscal printer programming interface Version1.00BG Page 35
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

6Fh (111) REPORT BY PLU OR FUEL


Data area: <Option>[<Start>,<End>[,<Group>]]
Response: ErrorCode

Option Specifies the type of information to be printed. Possible values:


 ‘S’ Prints only the PLUs having sales for the day. For each PLU, prints the code, tax group,
product group, name, unit price, sold quantity and sales.
 ‘P’ All PLUs with their codes, tax groups, product groups, names, sold quantities, available
quantities and unit prices are printed.
 ‘@S’ Only the FTT codes having sales for the day are printed. For each FTT, prints the code,
tax group, name, unit price, sold quantity and sales.
 ‘@P’ All programmed FTT codes, tax groups, names and unit prices are printed.
Start First PLU code to be included in the report. By default, it is 1.
End Last PLU code to be included in the report. By default, it is 999999999.
Group Number between 1 and 99. If this parameter is set, only the PLUs of this group are
included in the report. Otherwise, all groups are printed.
The PLUs are sorted as numbers. When a daily financial report with reset is run, the accumulated sums for
the PLUs are reset, unless an explicit instruction to keep them is sent.

70h (112) OBTAIN OPERATOR INFORMATION


Data area: Operator
Response: Receipts,Total,Discount,Surcharge,Void,Name[,Password]

Operator Operator ID (between 1 and 16).


Receipts Number of fiscal receipts issued by the operator.
Total Number of sales and accumulated total, separated by ‘;’.
Discount Number of discounts and discount total.
Surcharge Number of mark-ups and mark-up total.
Void Number of adjustments and adjustment total.
Name Operator name.
Password Operator password. Returned only if the printer has the service jumper installed.
The command allows to obtain the information printed on an operator report. The amounts are returned as
floating-point numbers with the current number of decimal digits.

71h (113) OBTAIN THE LAST PRINTED DOCUMENT NUMBER


Data area: No data
Response: DocNum

DocNum Last issued document number (7 digits).

72h (114) INFORMATION ON A FISCAL RECORD OR FISCAL PERIOD


Data area: <Rec1>,<Type[Storno]>[,Rec2]
Response: Depends on the value of Type

Rec1 Fiscal memory record number.


Type Type of requested information. Integer with a value of:
 0 ErrorCode[,DecRec,Dec,Enabled,PerA,PerB,PerC,PerD,PerE,PerF,PerG,PerH,DT]
Information on the active tax rates for the Z-report record in question.
 1 ErrorCode[,Closure,Receipts,TotA,TotB,TotC,TotD,TotE,TotF,TotG,TotH] or
ErrorCode[,ClCnt,VR,VE,VT,SR,SE,ST,TotA,TotB,TotC,TotD,TotE,TotF,TotG,TotH]
Information on the sales for the specified record or period.
 2 ErrorCode[,Closure,Receipts,NetA,NetB,NetC,NetD,NetE,NetG,NetG,NetH] or
ErrorCode[,ClCnt,VR,VE,VT,SR,SE,ST,NetA,NetB,NetC,NetD,NetE,NetG,NetG,NetH]
Information on the net amounts for the specified record or period.
 3 ErrorCode[,Closure,Receipts,TaxA,TaxB,TaxC,TaxD,TaxE,TaxF,TaxG,TaxH] or
ErrorCode[,ClCnt,VR,VE,VT,SR,SE,ST,TaxA,TaxB,TaxC,TaxD,TaxE,TaxF,TaxG,TaxH]
Information on the VAT assessed for the specified record or period.
 4 ErrorCode[,Closure,DecRec,ResetRec,KLEN,DT]
Additional information on the specified record.
 5 ErrorCode[,Dec,Enabled,PerA,PerB,PerC,PerD,PerE,PerF,PerG,PerH,DT]
Information on the specified fiscal memory record used to set tax rates.
 6 ErrorCode[,DT]
Information on the specified FM record with RAM reset.

_
Fiscal printer programming interface Version1.00BG Page 36
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

 7 ErrorCode[,CashP,CardP,CredP,CheqP,APayd1,...,APayd11]
Information on the amounts by payment type for the specified record or period.
 8 ErrorCode[,DiscC,DiscS,MkUpC,MkUpS,VoidC,VoidS,CanC,CanS]
Information on the amounts by payment type for the specified record or period.
 9 ErrorCode[,InC,InS,OutC,OutS]
Information on the amounts by payment type for the specified record or period.
 10 ErrorCode[,GTotal,GVAT]
Information on the total sales and VAT before the specified Z-report.
 11 ErrorCode[,FTT1,Name1,...,FTTn,Namen]
Information on the programmed fuel FTT and names for this Z-report. Only for type 3
and 31 printers.
 12 ErrorCode[,FTT1,Vol1,S1,...,FTTn,,Voln,Sn]
Information on the sold quantities and accumulated sales for the programmed fuels for
this Z-report. Only for type 3 and 31 printers.
 13 ErrorCode[,Disp1,...,Dispn]
Information on the programmed pumps for this Z-report. Only for type 31 printers.
 14 ErrorCode[,Term1,VolAct1,Vol15C1,FL1,Tmpr1,...]
Information on the programmed pumps for this Z-report. Only for type 31 printers.
 15 ErrorCode[,Nozzle1,Term1,CVal1,...]
Information on a programmed pump for this Z-report. Only for type 31 printers.
Rec2 Fiscal record number for type 1, 2 and 3 reports. For type 0, 4, 5, 6, 10, 11, 12, 13 and
14 reports, this field is empty. If the parameter is present, returns the data on the period
set by Rec1 and Rec2 for type 1, 2, 3, 7, 8 and 9 reports. For a type 15 report, the field
contains a pump number and not an end record.
ErrorCode One byte with a value of:
 ’P’ The data are valid.
 ‘F’ Invalid record checksum. No data.
 ‘E’ No such record exists. No data.
Closure Fiscal record number.
ClCnt Count of fiscal records.
VR Number of return bills from type „Return“.
VE Number of return bills from type „Operator error“.
VT Number of return bills from type „Tax base reduction“.
SR Number of sales in bills from type „Return“.
SE Number of sales in bills from type „Operator error“.
ST Number of sales in bills from type „Tax base reduction“.
DecRec Last (active) record with tax rates.
Dec Number of decimal digits for the specified Z-report record.
Enabled Enabled tax rates: 8 bytes with a value of ‘0’ or ‘1’ where ‘1’ means “enabled”.
Receipts Number of fiscal receipts.
PerX Tax rate for the respective tax group, as a percentage.
TotX Sales for the respective tax group.
NetX Net amount for the respective tax group.
TaxX VAT assessed for the respective tax group.
ResetRec Last RAM reset before this fiscal block.
KLEN EJ number for this fiscal block.
DT Date and time of the data in the following format: DD-MM-YY hh:mm:ss.
CashP Paid in cash.
CardP Paid by debit card.
CredP Paid by credit card.
CheqP Paid by check.
APaydx Additional payment types.
DiscC,DiscS Number of discounts and accumulated discount sum.
MkUpC,MkUpS Number of mark-ups and accumulated mark-up sum.
VoidC,VoidS Number of adjustments and adjustment total.
CanC,CanS Number of cancelled receipts and cancelled receipt total.
InC,InS Number of service deposits and total.
Out,OutS Number of service withdrawals and total.
GTotal Accumulated sales up to and including the specified daily report.
GVAT Accumulated VAT up to and including the specified daily report.
FTTi Programmed fuel FTT.
Namei Programmed fuel name.
Voli Accumulated programmed fuel sales volume.
Si Accumulated programmed fuel sales amount.
Dispi Programmed pump number.
Termi Programmed tank number.
VolActi Tank volume at current temperature.

_
Fiscal printer programming interface Version1.00BG Page 37
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

Vol15Ci Tank volume at 15 degrees.


FLi Tank fuel level.
Tmpri Tank fuel temperature.
Nozzlei Nozzle number.
CVali Nozzle counter value.
The command returns information by tax groups or another criterion for a single record or for a specified
period. For a longer period, the report may take a few seconds to complete.

73h (115) PROGRAM A LOGO GRAPHIC


Data area: <RowNum>,<Data>
or R<RowNum>
Response: No data
or Data

R If the character ‘R’ exists at the start of the data, the command returns the
contents of the respective graphic line in hexadecimal form.
RowNum The line being programmed. Number between 0 and 95.
Data Graphic data. Set as hexadecimals, two characters for each byte of information.
The data length is up to 72 bytes. If it is less than that, the data are automatically
padded with 00.

The command allows the user to enter an optional logo graphic with a size of up to 72x12mm (576x96 dots)
or 54x12 mm (384x96 dots) depending on the used thermal paper width. It is printed using command 43. The
same command is used to set its vertical size. To enter the entire logo, the command needs to be executed up to
96 times, once for each line. After a RAM reset, the logo is loaded from the flash memory. The logo
programmed using command 115 can be stored in the flash memory using command 41.

74h (116) READ A FISCAL MEMORY BLOCK


Data area: <Address>,<Bytes>
Response: Data

Address Start address (relative to the start of the fiscal memory): hexadecimal number
between 000000h and 1FFFFFh (for a 16-Mbit fiscal memory).
Bytes Number of bytes to return, decimal (between 1 and 64).
Data The hexadecimal contents of the requested fiscal memory block (2 characters for
each data byte).

The command returns the contents of a part of the fiscal memory. To read the entire fiscal memory, it needs
to be executed repeatedly with a different start address.

75h (117) DAILY FINANCIAL REPORT WITH DATA PRINTED BY DEPARTMENT


Data area: [<Option>[N]]
Response: Closure,FM_Total,TotA,TotB,TotC,TotD,TotE,TotF,TotG,TotH
The command is identical to 69 (45h) from the previous version, the only difference being that, at the top
of the daily report, it additionally prints the departments having sales for the day. Command 69 is left unchanged.
Commands 69, 108, 117 and 118 with option ‘0’ (daily financial report with reset) reset the accumulated department
data as well.

76h (118) DAILY FINANCIAL REPORT WITH DEPARTMENT AND PLU PRINTING
Data area: [<Option>[N]]
Response: Closure,FM_Total,TotA,TotB,TotC,TotD,TotE,TotF,TotG,TotH
The command is identical to 69 (45h) from the previous version, the only difference being that, at the top
of the daily report, it additionally prints the departments having sales for the day and the PLUs with codes between
1 and 40, if they have sales. Command 69 is left unchanged. Commands 69, 108, 117 and 118 with option ‘0’ (daily
financial report with reset) reset the accumulated department data as well.

77h (119) EJ OPERATIONS


Data area: <Type>[,<InpData>]
Response: Depends on the data input

_
Fiscal printer programming interface Version1.00BG Page 38
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

Type EJ operation command class. One byte with the following allowed values:
'C' Check the validity of the EJ or a part of it.
'I' EJ information.
'N' Read the next text line from the EJ.
'R' Read EJ data.
'P' Print EJ data.
Class 'C' commands: Verify EJ data.
P[#] Prints report on the validity of all SHA-1 checksums for the Z-reports found in the
EJ. It compares the EJ and fiscal memory SHA-1 checksums. For each mismatch,
prints one line with the Z-report number, date and time. If the optional character '#'
is present, prints information on each found SHA-1, valid or not.
R[<Num>] Returns EJ information for the Z-report number Num. The data from the specified Z-
report are read as a document. Response format:
P,FDocs,DT,SK Information on the found Z-report:
FDocs Document number of the Z-report.
DT Date and time of the report in the “DD-MM-YYYY hh:mm:ss” format.
SK 40 characters: hexadecimal SHA-1 of the Z-report.
F No EJ data are found for this Z-report.
Z[<Num>] Returns EJ information for the Z-report number Num. Reads the actual text of the
documents stored in the EJ, calculates the SHA-1 and compares it to the SHA-1
from the Z-report. The command can take a long time to complete, if there are many
documents in the daily report. Possible responses:
P,Docs,Bytes,SK The checksum is valid. Docs documents and Bytes data bytes are read. SK is
40 characters: the hexadecimal checksum.
F,Docs,Bytes,SK,SZ The checksum is invalid. Docs documents and Bytes data bytes are read. SK
and SZ are 40 characters each: the EJ checksum and the calculated
checksum, respectively.
F No EJ data are found for this Z-report.
Class 'I' commands: EJ information.
[X] The 'I' character may be followed by nothing or the letter 'X'. Returns the following
information:
P,Tot,Used,C1,C2,D1,D2
Tot Total journal size in bytes.
Used Used journal size in bytes.
C1 First Z-report number in the EJ.
C2 Last Z-report number in the EJ.
D1 First document number in the EJ.
D2 Last document number in the EJ.
Class 'R' commands: Read EJ data.
[#<Flg>,]<D1>[,<D2>] Returns the first line of document number D1 and sets the end of search on
document D2 (inclusive). The next lines are retrieved by sending command
class 'N'. If the second argument is omitted, only one document is selected:
D1.
[#<Flg>,]*<Cl>[,<D1>[,<D2>]] Returns the first line of document number D1 for a Z-report Cl and
sets the end of search on document D2 (inclusive) for the same Z-report. The
next lines are retrieved by sending command class 'N'. The document
counter is for the Z-report, i.e., command “*5,1,3” will select only the first
three documents of Z-report number 5. If D2 is omitted, only one document
is selected: D1. If both D1 and D2 are omitted, all documents for the Z-
report are selected.
<Flg>,<DT1>,<DT2> Returns the first line of the document with date and time DT1 and sets the
end of search on document with date and time DT2 (inclusive). A filter is
applied to the selected documents, depending on the Flg argument. The next
lines are retrieved by sending command class 'N'. Input argument format:
Flg Character specifying the document type to be selected for reading:
'A' All document types.
'F' Fiscal (customer) receipts.
'V' Refund (storno) receipts.
'C' Cancelled (customer) receipts.
'N' Service receipts.
'I' Service deposit receipts.
‘O’ Service withdrawal receipts.

_
Fiscal printer programming interface Version1.00BG Page 39
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

'R' Service receipts with 90-degree rotated printing.


'S' Service operation receipts.
'P' Reports (only date/time and receipt number information)
'X' X-reports.
'Z' Z-reports.
DT1 Report start date and time in the DDMMYY[hhmmss] format. If the time is
omitted, “000000” is assumed, i.e., 00:00:00.
DT2 Report end date and time in the DDMMYY[hhmmss] format. If the time is
omitted, “235959” is assumed, i.e., 23:59:59.
The three previous subcommands (by document, Z-report and date) return one of the responses listed
below:
P,Text There is a next text line in the EJ, its contents are in Text. The text read is always in
the 1251 codepage, even if DOS codepage was selected with the switches. The
codepage is important for the correct calculation of the SHA-1 checksum.
*, There is a next text line in the EJ and it is an empty line—document separator. It can
be used to count the found documents or stop reading exactly at the end of a
document.
F There are no more data in the EJ.
The workflow is as follows:
One of the above commands is sent. If the response is 'F', no such data exist in the EJ. Otherwise,
command class 'N' is sent repeatedly until the 'F' response is received (no more data). This way, the required
part of the EJ can be retrieved line by line as text.
Q<Addr>,<Bytes> Direct reading of “raw” EJ data. The command returns 2*Bytes characters,
representing Bytes bytes from the EJ, starting from address Addr. Addr is
hexadecimal and Bytes is decimal. The data are returned as hexadecimals.
q<Addr>,<Bytes> Direct reading of “raw” EJ data. The difference with the previous command
is that the characters are returned as text, if they are printable (above 1Fh),
or as “<XX>” (hexadecimal), if they are control characters (below 20h).
Class 'N' commands:
There are no additional data after this character. It is used in combination with some
of the class 'R' commands. It is used to read the next text line from the EJ. The
possible responses are the same as those for the start class 'R' command and are
described above.
CAUTION! Sending this command without preceding it by class 'R' to set the
report range may result in reading meaningless data!
Class 'P' commands: Print EJ data.
[<Fnt>][#<Flg>,]<D1>[,<D2>] Prints the documents between number D1 and number D2
inclusive. If the second argument is omitted, only one document is selected:
D1.
[<Fnt>][#<Flg>,]*<Cl>[,<D1>[,<D2>]] Prints the documents between number D1 for a Z-report
Cl to number D2 inclusive for the same Z-report. The document counter is
for the Z-report, i.e., command “*5,1,3” will print the first three documents
from Z-report number 5. If D2 is omitted, only one document is selected:
D1. If both D1 and D2 are omitted, all documents for the Z-report are
selected.
[<Fnt>]<Flg>,<DT1>,<DT2> Prints the documents with dates and times between DT1 and DT2
inclusive. A filter is applied to the selected documents, depending on the Flg
argument. Input argument format:
Fnt Optional parameter to request printing the EJ documents with a different
font size, if the printer allows. One byte with the following allowed values:
'>' Print with a normal font size.
'<' Print with a Ѕ font size.
Flg Character specifying the document type to be selected for reading:
'A' All document types.
'F' Fiscal (customer) receipts.
'V' Reversal (customer) receipts.
'C' Cancelled (customer) receipts.
'N' Service receipts.
'I' Service deposit receipts.
‘O’ Service withdrawal receipts.
'R' Service receipts with 90-degree rotated printing.
'S' Service operation receipts.
'P' Reports (only date/time and receipt number information)
'X' X-reports.

_
Fiscal printer programming interface Version1.00BG Page 40
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

'Z' Z-reports.
DT1 Report start date and time in the DDMMYY[hhmmss] format. If the time is
omitted, “000000” is assumed, i.e., 00:00:00.
DT2 Report end date and time in the DDMMYY[hhmmss] format. If the time is
omitted, “235959” is assumed, i.e., 23:59:59.
The previous three subcommands (by document, Z-report and date) return, as a result, the number of
printed documents as an integer.
The copy of the document from the EJ is almost identical to the original document. The differences are:
The copies never have a logo graphic before the header.
The fiscal logo graphic is not printed anywhere on the copies.
The “FISCAL RECEIPT” text with the fiscal logo is replaced by the double-width “ FISCAL
RECEIPT—COPY” text.

INFORMATION ON THE APPEARANCE OF THE TEXT RETURNED WHEN READ FROM THE EJ
The read documents have no logo graphic.
Centre aligned text is rendered by adding spaces to the left of the line.
Double-width printing is rendered by adding a space before each letter.
If a barcode is present anywhere in the fiscal or service receipts, it is replaced by the “ БК [XXXX]” text,
where XXXX is the text information from the barcode.
The read line contains only text, without the <CR> and <LF> characters at the end of the line. When text
information is retrieved from the EJ, these characters need to be added at the end of each line in the same
sequence. If this is done, an external program can calculate the SHA-1 checksum and compare it to the one
stored in the EJ—they should match.
The line returned with the '*' prefix (end of document) also needs to be added to the file (as an empty line
containing only the <CR> and <LF> characters), because it is included in the SHA-1 for the Z-report.

Class ‘W’ commands: return structured information


W,<FirstDoc>[,<LastDoc>] Find document <FirstDoc> and return the first text line of
structured information.

w Return the next line of structured information

FirstDoc Number of the first document for the report.


EndDoc Number of the last document for the report. If it is omitted, it is the same as the first.

The returned structured information can have the following format:


U,<UNP>,<OperNum>,<TillNum>,<RecType>,<DocNum>
V,<DecRec>,<Decimals>,<TaxRate1>, ... ,<TaxRate8>
R,<TaxGrPos>,<TaxRate>,<SinglePrice>,<Quantity>,<Discount_MarkUp>,<Price>,<ArticleName>
M,<Discount_MarkUp>,[<Percent>],<Subtotal>
T,<DiscCnt>,<DiscSum>,<MarkUpCnt>,<MarkUpSum>,<VoidCnt>,<VoidSum>,<SalesCnt>,<Total>,<
TotGr1>, ... ,<TotGr8>
P,<CashPayd>,<CheqPayd>,<CardPayd>,<CredPayd>,<MorePayd1>, ... ,<MorePayd11>
S,<StornoType>,<StornedDocNo>,<StornedDT>,<StornedFMIN>,<StornedUNP>,<StrornedInvoice>
I,<Invoice>,<PIN>,<PINtype>
D,<StartDT>,<EndDT>
Z,<ZNo>,<DocNum>,<FiscNum>,<DateTime>,<Total>,<StornoSum>,<CashSum>
Q,<DocNum>,<StartDT>,<ServeINOUT>,<CashSum>
*,
F

where:
“U” report: Structured information on the receipt. Once on the receipt.
UNP Unique Sale ID. 21 characters with the XXXXXXXX-YYYY-NNNNNNN format.
OperNum Operator ID. Between 1 and 16.
TillNum Cash register location number. Up to 5 digits.
RecType Receipt type: 0: fiscal; 1: invoice; 2: reversal; 3: credit note; 4: cancelled.
DocNum Global document number.

“V” report: Structured decimal digit and tax rate information. Once on the receipt.
DecRecTax rate record number in the FP. Counted starting from 1.
Decimals Decimal digits. 0 or 2.
TaxRateX Decimal rate X as a percentage.

“R” report: Structured sale or adjustment information. Can appear multiple times on the receipt.
TaxGrPos Tax group (between 1 and 8).
TaxRate Tax rate as a percentage.
SinglePrice Unit price. Negative for adjustments.

_
Fiscal printer programming interface Version1.00BG Page 41
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

Quantity Quantity. Negative for adjustments.


Discount_MarkUp Discount/mark-up (depending on the sign). The sign is reversed for
adjustments.
Price Price.
ArticleName Sold product name. If it contains two lines, the separator is <TAB>.

“M” report: Structured group discount/mark-up information. Can appear multiple times on the receipt.
Discount_MarkUp Discount/mark-up (depending on the sign).
PercentDiscount/mark-up percentage. The field can be empty, if it is included in a total.
Subtotal Subtotal after the operation.

“T” report: Structured information on the accumulated sums on the receipt. Once on the receipt.
DiscCnt Number of discounts.
DiscSum Discount total.
MarkUpCnt Number of mark-ups.
MarkUpSum Mark-up total.
VoidCnt Number of adjustments.
VoidSum Adjustment total.
SalesCnt Number of mark-ups.
Total Receipt total.
TotGrX Tax group total.

“P” report: Structured paid amount information. Once on the receipt.


CashPayd Paid in cash.
CheqPayd Paid by check.
CardPayd Paid by card.
CredPayd Paid by credit card.
MorePaydX Additional payment (as defined by the printer).

“S” report: Structured reversal receipt information. Not present in the fiscal receipts. Once on the
receipt.
StornoType Reversal type: 0: operator error; 1: return/claim; 2: tax base reduction
StornedDocNo Reversed document number.
StornedDT Reversed document date and time in the DD-MM-YYYY hh:mm:ss format.
StornedFMIN Fiscal memory ID of the reversed document.
StornedUNP Unique Sale ID of the reversed document.
StrornedInvoice Invoice number. If not a credit note, contains 0.

“I” report: Structured invoice information. Once in invoice-type receipts.


Invoice Invoice number.
PIN ID.
PINtype ID type: 0: BULSTAT; 1: PIN; 2: Personal Number; 3: Company Number.

Type “D” report: Receipt start and end date and time.
StartDT Start date and time in the DD-MM-YYYY hh:mm:ss format.
The date printed on the document.
EndDT End date and time in the DD-MM-YYYY hh:mm:ss format.

"Z" report: Daily report with clearing.


ZNo Z-report number.
DocNum Document number.
FiscNum Last fiscal document number. It may be 0 if it is not issued.
DateTime Date and time in format DD-MM-YYYY hh:mm:ss.
Total Total amount of sales per day.
StornoSum Total amount of refunds per day.
CashSum Cash availability.

"Q" report: Serve In / Out sums.


ServeINOUT Serve In / Out sum.

“*” mark: End of receipt.


“F” mark: No more data.
Class ‘Y’ commands: return structured information
Y,<FirstDoc>[,<LastDoc>]
Find document <FirstDoc> and return the first text line of structured information.

y Return the next line of structured information

_
Fiscal printer programming interface Version1.00BG Page 42
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

The returned structured information can have the following format:


u,<SerialNum>,<RecType>,<DocNum>,<UNP>
r,<TaxGrPos>,<TaxRate>,<SinglePrice>,<Quantity>,<Discount_MarkUp>,<Price>,<ArticleName>
t,<Total>,<TotGr1>, ... ,<TotGr8>
s,<StornoType>,<StornedDT>,<StornedFMIN>,<StornedUNP>,<StrornedInvoice>
i,<Invoice>,<PIN>,<PINtype>
*,
F

where:
“u” report: Structured information on the receipt. Once on the receipt.
SerialNum Printer serial number.
RecType Receipt type: 0: fiscal; 1: invoice; 2: reversal; 3: credit note; 4: cancelled.
DocNum Global document number.
UNP Unique Sale ID. 21 characters with the XXXXXXXX-YYYY-NNNNNNN format.

“r” report: Structured sale or adjustment information. Can appear multiple times on the receipt.
The information returned is the same as in “R” above.

“t” report: Structured information on the accumulated sums on the receipt. Once on the receipt.
Total Receipt total.
TotGrX Tax group total.

“s” report: Structured reversal receipt information. Not present in the fiscal receipts. Once on the
receipt.
The information returned is the same as in “S” above.

“i” report: Structured invoice information. Once in invoice-type receipts.


The information returned is the same as in “I” above.

“*” mark: End of receipt.


“F” mark: No more data.

Class ‘V’ - commands: return structured information


V[+],<FirstDoc>[,<LastDoc>] Find document <FirstDoc> and return the first text line of
structured information.
or
V[+],D<StartDateTime>,<EndDateTime> Find the first document between StartDateTime and
EndDateTime and return the first text line of structured information. The date and time are in DDMMYY
[hhmmss] format. If you skip the hour, the start time is 00:00:00 and the end time is 23:59:59.

v Return the next line of structured information

+ Optional symbol "+". When it is available, the date and time of the document are added in the
format: "DD-MM-YYYY HH: MM: SS + pasted tab symbol".

FirstDoc Number of the first document for the report.


EndDoc Number of the last document for the report. If it is omitted, it is the same as the first.

The returned structured information have the following format:

ErrorCode[,Data]

ErrorCode One byte showing the result of the operation


 ‘P’ The command is successful.
 ‘F’ The command is unsuccessful or no data.
Data The data returned in the order described below is separated by a tab symbol enclosed in
quotation marks.
- fiscal device ID;
- kind of receipt - ФБ fiscal receipt), РФБ Invoice), СФБ Refund receipt) or РФБ Credit notification);
- global number of receipt;
- Unique Sale ID;
- commodity/service - name;
- commodity/service – single price;
- commodity/service - quantity;
- commodity/service - price;
- total price for the receipt;

_
Fiscal printer programming interface Version1.00BG Page 43
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

- Invoice number/Credit notification - if the entry is for Invoice or Credit notification;


- UIC of recipient – if the entry is for Invoice or Credit notification;
- global number of the refund receipt – if the entry is for Invoice or Credit notification;
- number of the refunded invoice номер на сторнирана фактура – if the entry is for Invoice or Credit notification;
- reason for issue – in case if entry is for refund receipt or Credit notification.

79H (121) READ A FIRMWARE BLOCK


Data area: <Address>,<Bytes>
Response: Data

Address Start address (relative to the firmware start): hexadecimal number between
00000h and 6FFFFh.
Bytes Number of bytes to return, decimal (between 1 and 64).
Data The hexadecimal contents of the requested fiscal memory block (2 characters for
each data byte).

The command returns the contents of a part of the firmware. To read the entire firmware, it needs to be
executed repeatedly. The command is available in service mode only!

7AH (122) OPEN A SERVICE RECEIPT FOR 90-DEGREE ROTATED TEXT


Data area: No data
Response: RotRec
RotRec The sequential number of the open 90-degree rotated receipt for the day. 4 bytes without a sign.
The command opens a service receipt where 90-degree rotated text can be printed.
The command will not be executed, if:
- There is an open receipt (service or fiscal).
- The printer is out of paper.
- The clock is not set.

7BH (123) PRINT 90-DEGREE ROTATED TEXT


Data area: <Text>
Response: No data
Text The contents of the next line of text we would like to print. Its length is up to 100 characters.
Parts of the text can be printed with bold (Bold) and underlined (Underline) attributes. They are
enabled and disabled as follows:
 <Tab>B Starts bold printing.
 <Tab>b Stops bold printing.
 <Tab>U Starts underlined printing. Can be used as a horizontal divider line in a table.
 <Tab>u Stops underlined printing.
 <Tab>O Starts overlined printing. Can be used as a top horizontal divider line in a
table.
 <Tab>o Stops overlined printing.
 <Tab>A Inserts a start vertical line for tables.
 <Tab>Z Inserts an end vertical line for tables.
 <Tab>T Adds a zero (non-printable) line. Used to print a horizontal line at the start of
the table (before the first rotated line). The following characters are not printed, however, if
the “underline” attribute is enabled, a line with a thickness of 2 dots is printed.
The command is used to print 90-degree rotated text. Up to 18 lines of text can fit on the paper tape (12 on
a narrow paper tape). The lines of text sent are accumulated in the printer memory in the order sent. If the
command is executed more than thirteen times after the receipt is opened, the accumulated information is
printed and the printer waits for new lines of text or command 124 (close the receipt). When the information is
printed, the printer detects the longest sent line and adjusts the remaining lines to the same length.
If more than 18 (12) lines are sent, more than one column of text is printed. There is no gap between the
columns, which makes possible to print lines of unlimited length with properly formatted data.
The command will not be executed, if rotated service text print receipt is not open.

7EH (124) CLOSE A SERVICE RECEIPT FOR 90-DEGREE ROTATED TEXT


Data area: No data
Response: <RotRec>
RotRec The sequential number of the closed 90-degree rotated receipt for the day. 4 bytes without a
sign.

_
Fiscal printer programming interface Version1.00BG Page 44
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

The command closes the receipt. If there are any pending lines, they are printed automatically before the
receipt is closed.
The command will not be executed, if rotated service text print receipt is not open.

80H (128) SERVICE RAM RESET


Data area: No data
Response: No data
The command resets the printer RAM and then automatically restarts the printer. After it is executed, the
clock needs to be set using command 61, which makes a RAM reset record in the fiscal memory with the set
date and time.
The command is allowed only with a service jumper installed.
The fiscal memory has space for 100 RAM reset records.

85H (133) SERVICE-DISABLED PRINTING


Data area: <Disable>
Response: No data
Disable One byte with the following allowed values:
'0' Printing is enabled.
'1' Printing is disabled.
The command is allowed only with a service jumper installed. When printing is disabled, the printer
executes all actions, including EJ store operations, but does not print anything on paper. All sent data are
correctly accumulated in the printer registers, records are made in the fiscal memory and data are sent to the
NRA, as appropriate.
The idea is to disable printing and send commands at high speed to test the printer and EJ which would be
slowed down tens of times by printing.
When the printer is powered on, printing is always enabled.

86H (134) SERVICE EJ MAINTENANCE


Data area: <Format>
Response: <Result>
Format One byte with a value of ‘F'.
Result One byte with a value of ‘P' (success) or 'F' (error).

The command is allowed only with a service jumper installed. Used for initial EJ formatting. Allowed
only for a non-fiscally registered printer or an unformatted EJ. The command will not be executed, if the EJ has
already been formatted, even in service mode (since it would destroy any data accumulated in it). If a new
empty EJ is installed, it will be assigned a sequential number and enabled for operation, however, after that, the
old EJ will be write-protected and can be used only to print and read reports.

87H (135) GPRS MODEM TEST


Data area: <Cmd[,<PIN]>]
Response: <Result>,<Data>
Cmd One byte with a value of ‘M'.
PIN If the mobile carrier card requires a PIN, it is set here.
Result One byte with a value of ‘P' (success) or 'F' (error).
Data If it is successful, returns data on the modem, card and connection established. If it fails, returns
an error code and a short description.

If the modem is busy (sending data) when the command is sent, it may take longer than usual to
complete—it will wait for the modem to complete its task.

90H (144) SERVICE INITIALISATION OF THE TAX TERMINAL


Data area: <Text>
Response: <Resp>

_
Fiscal printer programming interface Version1.00BG Page 45
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

The data in this command are used for the tax terminal—to set it up and read data from it. The command is
used to load all data required for the operation of the built-in terminal. The printer carries out additional actions
only in the following cases:
 Successful printer registration and deregistration with the NRA.
 Successful change of the NRA data.
 Successful service agreement registration.
The command is disabled before the fiscal registration of the printer.
The printer verifies the status of the tax terminal and does not allow fiscal receipts to be issued, if the printer
is fiscally set up but not registered.

_
Fiscal printer programming interface Version1.00BG Page 46
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

APPENDIX 1

FISCAL PRINTER CHARACTER SET

_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F

0_ 0 @ P ` p А Р а р А Р а р

1_ ! 1 A Q a q Б С б с Б С б с

2_ “ 2 B R b r В Т в т В Т в т

3_ # 3 C S c s Г У г у Г У г у

4_ $ 4 D T d t Д Ф д ф Д Ф д ф

5_ % 5 E U e u Е Х е х Е Х е х

6_ & 6 F V f v Ж Ц ж ц Ж Ц ж ц

7_ ‘ 7 G W g w З Ч з ч З Ч з ч

8_ ( 8 H X h x И Ш и ш И Ш и ш

9_ ) 9 I Y i y Й Щ й щ Й Щ й щ

A_ * : J Z j z К Ъ к ъ К Ъ к ъ

B_ + ; K [ k { Л Ы л ы Л Ы л ы

C_ , < L \ l | М Ь м ь М Ь м ь

D_ - = M ] m } Н Э н э Н Э н э

E_ . > N ^ n ~ О Ю о ю О Ю о ю

F_ / ? O _ o П Я п я П Я п я

_
Fiscal printer programming interface Version1.00BG Page 47
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

APPENDIX 2

FISCAL COMMAND LIST BY CODE IN ASCENDING ORDER

HEX DEC FUNCTION


20h (32) Extended information on the last error
21h (33) Clear the display
22h (34) Return or print service agreement information
23h (35) Show text on the lower line of the display
24h (36) LAN setting
25h (37) Read NRA data
26h (38) Open a service receipt
27h (39) Close a service receipt
29h (41) Store the settings and switches in the flash memory
2Ah (42) Print free text in a service receipt
2Bh (43) Set the HEADER, FOOTER and print options
2Ch (44) Paper feed
2Dh (45) Paper cut
2Eh (46) Print a refund (storno) receipt.
2Fh (47) Show text on the lower line of the display
30h (48) Open a fiscal (customer) receipt
31h (49) Enter a sale
32h (50) Tax rates set during the respective period
33h (51) Subtotal
34h (52) Enter and display a sale
35h (53) Calculate a sum (Total)
36h (54) Print free text in a fiscal receipt
38h (56) Close a fiscal receipt
39h (57) Customer information on an extended receipt (invoice)
3Ah (58) Sale of a programmed PLU
3Ch (60) Terminate (cancel) a fiscal receipt
3Dh (61) Set the date and time
3Eh (62) Read the date and time
3Fh (63) Show the date and time on the display
40h (64) Last fiscal record information
41h (65) Information on the sums for the day
42h (66) Set the allowable invoice number range
44h (68) Number of available fields in the fiscal memory
45h (69) Daily financial report with or without reset
46h (70) Service deposit or withdrawal
47h (71) Print diagnostic information
48h (72) Fiscal registration
49h (73) Detailed fiscal memory report by record number
4Ah (74) Obtain the printer status
4Bh (75) Force suppressed receipt printing
4Ch (76) Fiscal transaction status
4Fh (79) Summary fiscal memory report by record date
50h (80) Beep
51h (81) Obtain the voltage and printing head temperature
53h (83) Set the decimal digits, currency and enabled tax rates
54h (84) Print a barcode
55h (85) Set the additional payment type names
56h (86) Read the last fiscal record date

_
Fiscal printer programming interface Version1.00BG Page 48
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

57h (87) Program a department name


58h (88) Obtain the accumulated sums for a department
59h (89) Program the production test area
5Ah (90) Read diagnostic information
5Bh (91) Program the Unique Printer ID and FP ID
5Ch (92) Print a divider line
5Dh (93) Obtain data on the discounts and mark-ups for the day
5Eh (94) Detailed fiscal memory report by record date
5Fh (95) Summary fiscal memory report by record number
61h (97) Read the tax rates
62h (98) Set the UIC
63h (99) Read the set UIC
64h (100) Show free text on the display
65h (101) Set an operator password
66h (102) Set an operator name
67h (103) Current receipt information
69h (105) Operator report
6Ah (106) Open the drawer
6Bh (107) PLU definition and report
6Ch (108) Extended daily financial report (with PLU printout)
6Dh (109) Print a duplicate receipt
6Eh (110) Additional information on the day
6Fh (111) PLU report
70h (112) Obtain operator information
71h (113) Obtain the last printed document number
72h (114) Obtain information on a fiscal record or period
73h (115) Program a logo graphic
74h (116) Read a fiscal memory block
75h (117) Extended daily financial report with department printout
76h (118) Extended daily financial report with department and PLU printout
77h (119) EJ maintenance—read, print and information
79h (121) Read a firmware block
7Ah (122) Open a service receipt with 90-degree rotated text
7Bh (123) Print 90-degree rotated text
7Ch (124) Close a service receipt with 90-degree rotated text
80h (128) Service RAM reset
85h (133) Temporary service-disabled printing
86h (134) Service EJ maintenance
87h (135) GPRS modem test
90h (144) Initialise and read data from the tax terminal

_
Fiscal printer programming interface Version1.00BG Page 49
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

APPENDIX 3

MAP OF PAYMENT TYPES

Payment types map Fiscal Printers type 2

NAME / FW default Programmable Subcommand NRA register


1. Cash payment (default) fixed "P" "Cash"
2. Credit payment fixed "N" "Credit/debit cards"
3. Check payment fixed "C" "Check"
4. Debit card payment fixed "D" "Credit/debit cards"
5. Programmable payment type 1 programmable "I"/“i“ "Reserve 1" / NHIF*
6. Programmable payment type 2 programmable "J"/“j“ "Reserve 1" / NHIF*
7. Programmable payment type 3 programmable "K"/“k“ "Reserve 1" / NHIF*
8. Programmable payment type 4 programmable "L"/“l“ "Reserve 1" / NHIF*
9. Coupons programmable "m" "Coupons"
10. External coupons programmable "n" "External coupons "
11. Packing programmable "o" "Packing"
12. Internal service programmable "p" "Internal service"
13. Damages programmable "q" "Damages"
14. Bank transfers programmable "r" "Bank transfers"
15. Check programmable "s" "Check"
* NHIF – National Health Insurance Fund

Payment types map Fiscal Printers type 3 and 31 (Fuel Stations)

NAME / FW default Programmable Subcommand NRA register


1. Cash payment (default) fixed "P" "Cash"
2. Credit payment fixed "N" "Credit/debit cards"
3. Check payment fixed "C" "Check"
4. Debit card payment fixed "D" "Credit/debit cards"
5. Programmable payment type 1 programmable "I"/“i“ "Reserve 1" / Delayed payment
6. Programmable payment type 2 programmable "J"/“j“ "Reserve 1" / Delayed payment
7. Programmable payment type 3 programmable "K"/“k“ "Reserve 1" / Delayed payment
8. Programmable payment type 4 programmable "L"/“l“ "Reserve 2" / Internal consumption
9. Coupons programmable "m" "Coupons"
10. External coupons programmable "n" "External coupons "
11. Packing programmable "o" "Packing"
12. Internal service programmable "p" "Internal service"
13. Damages programmable "q" "Damages"
14. Bank transfers programmable "r" "Bank transfers"
15. Check programmable "s" "Check"

_
Fiscal printer programming interface Version1.00BG Page 50
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

APPENDIX 4

LIST OF EXTENDED INFORMATION ON THE LAST ERROR MESSAGES

Value Description

-150001 Syntax error


-150002 Invalid command
-150003 Not permited
-150010 Printer is blocked

-150100 Clock not set


-150101 Out of paper
-150102 Journal error
-150103 Arithmetic overflow
-150104 Invalid password
-150105 Less than 2 lines in header
-150106 Invalid serial number
-150107 Invalid bar code data
-150108 Invalid request
-150109 Cutter error
-150110 Presenter error
-150111 Data contain 'FISCAL'
-150112 Wrong invoice number
-150113 UNP missing
-150114 UNP counter overflow
-150115 UNP must increase
-150116 Not logged in
-150117 Currency not defined

-150200 Receipt is open


-150201 No receipt is open
-150202 Receipts after Z-report
-150203 No receipts after Z-report
-150204 More than 24 hours without Z-report
-150205 Date and time before last FM record
-150206 Date and time before last JNL record
-150207 Probably wrong date and time
-150209 Cannot read from el. journal
-150210 Cannot write to el. journal
-150211 Cannot format el. journal
-150212 Cannot open el. journal document

_
Fiscal printer programming interface Version1.00BG Page 51
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

-150213 No access to external display


-150214 Journal near end
-150215 Cannot format valid el. journal
-150216 El. journal number too big
-150217 No data for document found
-150218 Journal paper width different
-150231 Journal buffer full
-150232 Journal buffer write failed

-150300 Fiscal memory not formatted


-150301 Serial number not set
-150302 VAT number not set
-150303 VAT rates not set
-150304 All VAT rates disabled
-150305 Printer is not fiscalized
-150306 Printer is fiscalized
-150307 No records in fiscal memory
-150308 Fiscal memory not responding
-150309 Too many records in fiscal memory
-150310 Serial number already set
-150311 Fiscal memory is read only
-150312 Fiscal memory not found
-150313 Fiscal memory read error
-150314 VAT rates or decimals changed

-150400 PLU does not exist


-150401 Department does not exist
-150402 Invalid VAT group
-150403 VAT group is disabled
-150404 Too many sales in receipt
-150405 Payment or discount/mark up done
-150406 Negative sum or quantity
-150407 Discount larger than price
-150408 Void of non-existing sale
-150409 Payment is started
-150410 Payment type not programmed
-150411 Total is already paid
-150412 Total is not entirely paid
-150413 Not enough cash available
-150414 Cash payment only
-150415 Change not allowed

_
Fiscal printer programming interface Version1.00BG Page 52
DATECS FP-800 / FP-2000 / FP-650 / SK1-21F / SK1-31F/ FMP-10 / FP-700

-150416 Non-zero sum for this operator


-150417 Non-zero sum for this PLU
-150418 Non-zero sum for this department
-150419 No free PLUs for programming
-150420 Too many lines in receipt
-150421 No receipt copy data
-150422 Non-zero sum for this payment type
-150423 PLU is sold in this receipt
-150424 Invalid fuel PLU
-150425 Fuels may be sold using PLU only
-150426 Not gas station
-150427 More than 200 departments with sales
-150428 No data for receipt copy
-150429 Fuel storno not allowed
-150430 Invalid storno date and time
-150431 Zero price
-150432 Too many fuel sales in receipt
-150433 Already paid non-cash
-150434 Payment transaction denied
-150435 Non-zero sums
-150436 No tip allowed

-150800 Printer is not registered


-150801 No invoice number
-150802 Invoice number outside interval
-150803 No invoice numbers interval programmed
-150804 No customer data entered
-150805 Customer data already entered
-150806 Not an invoice
-150807 Tax terminal error
-150808 GPRS-modem not responding
-150809 GPRS-modem busy
-150810 No SIM-card in modem
-150811 SIM-card different from registered one
-150812 Outdated petrol station info
-150813 No starting data command
-150819 This is an invoice

You might also like