Document version 22, iKKM firmware 1016 and greater.
1. Introduction
Integration of iKKM API, is different from traditional integration with Cash registrars, usually connected by COM / USB. In legacy Cash registers, the process of data exchange consists of 5-6 steps: polling the state, opening a receipt, transferring the receipt data, obtaining status, etc.
In iKKM, due to the use of the web server, the entire process of data exchange consists of the transmission of one request. However, in case of a situation when the POS system software constantly requires polling of any parameters, iKKM provides all necessary functions (see chapter Additional features)
2. Launch API on iKKM
Web-api mode is available when iKKM is connected via LAN or WiFi. Before you start, you need to enable web-api in the Main Menu - Fiscal Registrar - Fiscal Mode
, then Log in, select the default tax, and click on the 'Enable Web Cashier'
All this actions are described in detail in iKKM user manual, and also in the knowledge base.
If you have any questions, open a ticket in support service
3. Protocol basics
The data is sent using the HTTP / 1.1 protocol. The TCP port is always 8080, the methods POST
or GET
are allowed
(only in a few cases, only POST
is used). Use the most appropriate method for you.
The standard request timeout is 30 seconds. When the shift is closing, up to 90 seconds. The number of requests is not more than one per second.
The transmitted parameters are case-sensitive. There are two types of data string and number
String
Use the Utf-8 encoding. English, Russian and Kazakh alphabets are supported.
Number (Int, Float)
The maximum allowed value is 20 million. The transmitted numbers can be integers or floats,
delimiter .
(dot) when sending amounts more than 2 characters (hundredths), rounding occurs. In case of quantity represented by weight rounding is 3 decimals.
To check whether rounding is enabled or not, use the report /apicheck/getInfo
4. Web-API key
For authorization in all requests, the parameter key
consisting of 8 numbers is passed.
After any successful operation with the database or iKKM fiscal memory, the web-api key changes, the new key comes as a response. On the next request, you need to use a new key.
If the key in the web-api request does not match the current one, iKKM returns an error. The only exception is the registration method /api/sale | buy | ...
in case of transfer of the previous key, iKKM will repeat the answer: return a new key, print a duplicate of the receipt, but the operation will not be duplicated.
You can find out the actual web-api key on the iKKM screen before launching the Web-api mode; read the QR code from the iKKM display, or remotely login under the administrator rights in the web management (web-api key can be found on the first page).
5. Fiscal operations
5.1 Registration
Registration is the main operation of iKKM, registration affects iKKM database and fiscal memory. The method calls /api/ ...
, the following parameters are passed:
sale | buy ...
type of registrationcash | bank ...
payment typetax
tax (optional)print
printing (optional)itemdata
receipt details for transmissions to tax committee (optional)
Types of registration
Successful sale of 800 tenge, received 1000, change 200
GET /api/?key=12345678&sale=800&cash=1000 HTTP/1.1
Response: 200 (text/plain)
Description: 123 #Receipt number for successful operation
Body: 87654321
Invalid query execution
GET /api/?key=12345678&sale=800&cash=200 HTTP/1.1
Response: 400 (text/plain)
Description: cash-lq-sale #The cash accepted is less than the receipt total sum
Body: -10
The main trading operations are only four:
sale
- sale the goods or servicesbuy
- buy (example: money exchange)saleReturn
- sale reverse operationbuyReturn
- buy reverse operationThe request specifies only one type of registration. The value of the parameter is the total amount of the transaction, for example:
/api/?Sale = 660...
Payment
A successful example of mixed (cash and bank) payment
GET /api/?key=12345678&sale=800&cash=500&bank=400 HTTP/1.1
Response: 200 (text/plain)
Description: 124
Body: 87654321
Invalid operation
GET /api/?key=12345678&sale=800&cash=2000&bank=800 HTTP/1.1
Response: 400 (text/plain)
Description: no-cache-hq-sale #Receipt already been payed by bank, cash not allowed.
Body: -13
Types of payment:
cash
- cash acceptedbank
- bank card paymenttara
- tare (rarely used)credit
- payment in credit (rarely used)You can use several types of payment at the same time only when registration is
sale
. For returns, the payment must be equal to the total amount of the receipt.
Tax selection (optional)
tax
- An optional parameter that is used to select a tax that is not specified by default. The parameter value is the tax id (to get tax id, see request for tax dictionary)
Table part of receipt (optional)
iKKM can fill out the table part of the receipt as follows:
Example of parameter itemdata
[{
"name": "Tea",
"price": "200",
"qty": "2",
"sum": "400"
}, {
"name": "Stake",
"price": "6000",
"qty": "2",
"sum": "12000"
}, {
"name": "discount 10%",
"discount": "1240" #if is discount parameters price|qty|sum not included in item
}]
- Automatically in the form of one line, for example
Sale 1x100 = 100 tenge
- Print the table of the receipt from the parameter
print
- From the structured JSON field,
itemdata
(also sending this data Online)
print
is an optional parameter for printing a table part of a receipt or advertisement. The method of sending the request is only POST, encoding UTF-8. The number of lines is unlimited, separating the string \n
.
The following line sizes are allowed:
- Internal printer: 24 characters normal font, 32 small, 19 large.
- LAN / USB printer: 42 characters for 80mm and 30 characters for 57mm paper, changing the font size is not provided when printing on an external printer.
itemdata
- optional parameter, serves for printing and transferring the table part of the receipt to the Tax Online server.
Method of transmission only POST, encoding UTF-8. JSON data format. Maximum number of positions in one receipt is 80.
In case of excess, all items will be printed, but one position with the name of the registration type will be sent to the Online server, for example: Sale 1x100 = 100 tg
. If the parameter print
is also transfered along withitemdata
, it will be printed first.
footer
- optional parameter, serves for printing advertising text at the end of the receipt, the method is only POST
.
In this parameter, you can print barcodes, the format is described in printHeader
5.2 Answers
TCP dump of answer (200 - success, 164 - receipt number, 29852781 - new web-api key )
HTTP/1.1 200 164
Content-Length: 8
Content-Type: text/html; charset=UTF-8
Date: 2017-02-15 15:00
29852781
The iKKM reply is returned in text format, only the number. If the answer is a positive number of length 8, the query is executed successfully and you have received a new web-api key. If reply body text is negative, look at the error codes.
Additionally if the request is successful, the HTTP status will be 200
, and the description will contain the receipt number.
If errors occur, the HTTP status code will be 400
, and the description (HTTP status description) will contain a short reason for the error, for example:bank-param-error
.
5.3 Other operations
Other cash operations
GET /apiwithdraw/?key=12345678&cash=200 HTTP/1.1
Response: 200 (text/plain)
Description: 126
Body: 12345678
Cash withdraw / deposit
GET /apideposit/?key=12345678&cash=2000 HTTP/1.1
Response: 200 (text/plain)
Description: 127
Body: 12345678
Print X-report
GET /apixreport/?key=12345678 HTTP/1.1
Response: 200 (text/plain)
Description: x-report-started
Body: 0
Shift close (operational day) and print Z-report
GET /apizreport/?key=12345678 HTTP/1.1
Response: 200 (text/plain)
Description: z-report-started
Body: 0
Withdraw / Deposit cash
- To withdraw cash, execute the request:
/apiwithdraw/?cash = [amount]
- To deposit cash, execute a request:
/apideposit/?cash = [amount]
The value of cash is only a positive number.
Shift close, Z and X reports
For correct cash discipline, we recommend using the iKKM interface directly for cash withdrawal and shift closing.
However, you can perform all operations via web-api if necessary. The web-api key will not change after this operations.
- Closing the shift and printing the Z report:
/apizreport
- Print X report:
/apixreport
There is no provision for answers, you can always get the data of any shift and operations by completing the requests for receiving reports or use the Tax Committee website.
6 Bank operations
6.1 Start payment
Starting a bank card payment
GET /apibank/?key=12345678&message=purchase&amount=1500&trackdocument=345 HTTP/1.1
Response: 200 (text/plain)
Description: bank-is-opened
Body: 0
To run the banking application, execute the /apibank/...
method, the following parameters are passed:
amount
payment amountmessage
type of operationtrackdocument
the number of the operation required to get the result (optional)
The possible values message
is:
purchase
- purchaserefund
- refundreversal
- cancellationreconciliation
- closing cycle (report)The parameter
trackdocument
is a number, any unique value convenient for you from 1 to 999.999.999, iKKM does not check the uniqueness of this parameter.If the bank application is successfully launched, the answer is
0
. If you contact iKKM during payment, the answer will be-2
(busy). The web-api key will not change as a result of this operation.
6.2 Getting Results
Detailed information getInfo
{
"foundTransactions": "1",
"totalAmount": "200.00",
"transactionResult": "success",
"details": [{ # array of transactions
"AID": "VISA CREDIT",
"PAN": "1234 XXXX XXXX 1234",
"amount": "100.00",
"bankslot": "1",
"cardHolderName": "CARDTESTNAME",
"currency": "398",
"dateTime": "22-11-2017 17:19:55",
"operationType": "purchase",
"refnum": "100000000013",
"responce": "00",
"result": "success", # success | fail
"traceNumber": "60"
}],
}
You can get the result by running the query: /dump/bank/[trackdocument number]/trackdocument
foundTransactions
number of transactions foundtotalAmount
the total amount of successful transactionstransactionResult
the result of the operationsuccess | fail
details
list of all transactions (array):AID
payment systemPAN
card numberamount
amountbankslot
bank slot (in case we have multi-bank this is important)cardHolderName
the cardholder (usually empty)currency
currency codedateTime
date and time (yyyy-MM-dd hh: mm: ss)operationType
operation typepurchase | refund | reversal
refnum
reference number (from the bank)responce
bank response coderesult
the result of the operationsuccess | fail
traceNumber
the document number for the bank
7. Checking the status
To get the status of iKKM, use the /apicheck
query,
Positive answer 0
- iKKM is ready to work. The HTTP status code will be 200, the description will contain the number of the last closed receipt, if the receipt number is 0 (zero) this means that this is a new iKKM.
You do not need to request for the status of iKKM before each registration, as any method of registration conducts all the checks.
7.1 Additional Features of apicheck
Detailed info: getInfo
{ "applicationVersion": 101021, # version of the application, integer
"batteryCapacityPerc": "80", # battery charge (if any)
"cashWeHave": "1108.00", # cash currently cashier has
"cashierID": "166", # ID of the current cashier
"cashierName": "default", # cashier's name
"currentShiftID": "109", # number of the current work shift
"currentShiftStatus": "closed", # change state (opened | closed)
"databaseSizeKb": "46", # database size in KB
"defaultApiTaxID": "15", # Default tax ID
"factorySerialNumber": "011700029000", # factory number iKKM
"lastClosedChequeId": "4231", # last closed receipt number
"messagesQueSize": "0", # the queue size of not sent messages to the Tax Committee
"printingMode": "internal", # print mode external or internal printer
"roudingRule": "no", # rounding rule
"totalFlashUsedMb": "78", # total used flash memory
"totalRamUsedMb": "70" # free memory}
- To print the last receipt, use the
/apicheck/printLastDocument
query - For detailed information about iKKM in JSON format, use the query
/apicheck/getInfo
- We recommend requesting a simplified version of the report
/apicheck/getInfo/?show=minimum
In this case, the number of the last receipt, the current shift number and status, the default tax, the code and the name of the cashier will be returned.
8. Printer mode
123456789012345678901234567890
Brick quiz whangs jumpy veldt
fox!
--cut--
съешь ещё этих мягких францу-
зских булок, да выпей чаю.
--line--
Жылқының еті жесең-тісіне
кіреді, жемесең-үсіңе кіреді.
--cut--
--open-cash--
For printing, you need to send the parameter print
containing the text to /apiprint
. Sending request only POST, encoding UTF-8. Line separators: \n
.
The following line sizes are allowed:
- Inside printer: 24 characters normal font, 32 small, 19 large.
- LAN / USB printer: 42 characters for 80mm paper and 30 characters for 57mm paper. The font size change is not provided when printing on an external printer.
If you use an external printer, the following commands are available:
--cut--
for cutting paper--line--
for printing a horizontal line--open-cash--
to open a cash drawer connected to an external printer.
Print a logo in this method is not provided.
9. Directories and Reports
For easy integration with your application all iKKM replies in JSON format
9.1 Directories
Directories Goods
[{
"uid": 11, # internal and unique product code
"code1": 888, # unique product code
"code2": "008123563127", # barcode
"name": "Coffee", # product name
"price1": 77, # retail price
"itemtax1": 2, # tax code (see directory of taxes)
"itemtype": 0, # type
"measure": 0, # measurement
"catalogid": 16 # directory code (see directory directory)
},...
}]
Directories Goods /dump/table/items
Not required in web-api mode, since computer POS is responsible for items.
In case when merchant use iKKM for traveling and trading autonomously this is usefull.
uid
internal and unique product codecode1
unique product codecode2
barcodename
name of the productprice1
retail priceitemtax1
tax code (see the directory taxes)itemtype
product type | servicesmeasure
type of measurementcatalogid
directory code (see directory catalog)
Directories Catalog
{ "1": "Kitchen",
"2": "Bar",
... }
Directories Catalog /dump/table/catalog
Not required in web-api mode
- Internal ID
- Folder name
Directories Taxes
{ "1": "VAT 13%",
"2": "w/o VAT",
...}
Directories Taxes /dump/table/taxes
- Internal ID
- Tax Name
When you edit the tax, for example, % of the rate, the tax code will also change automatically, so do not hard-code the tax ID in your program.
Directory Cashiers
{ "100": "Aliya cashier",
"201": "Natasha manager",
...}
Directory Cashiers /dump/table/cashiers
- Cashier ID
- Cashier Name
9.2 Reports
These methods are available to users Senior Cashier or Administrator.
All methods start with /dump
Report all shifts
[{
"id": 12, # Shift number
"opened": 0, # 1 - the change is open, 0 - the change is closed
"openDate": "2016-01-18 20:41:06", # the date of the opening of the shift
"closeDate": "2016-01-19 17:21:46", # closing date of the shift
"cashierId": 166, # cashier code
"sale": 5210, # the sum of all sales at the beginning of the shift
"buy": 100, # sum of all purchases at the beginning of the shift
"saleReturn": 803, # the sum of all sales returns at the beginning of the shift
"buyReturn": 50 # the sum of all returns of purchases at the beginning of the shift
},…
}]
Report all shifts /dump/table/shifts
Returns all shifts except archived
id
Shift numberopened
Change status: 1 - open, 0 - closedopenDate
the date the shift was opened (yyyy-MM-dd hh: mm: ss)closeDate
the closing date of the shift (yyyy-MM-dd hh: mm: ss)cashierId
cashier codesale
the sum of all sales at the beginning of the shiftbuy
the sum of all purchases at the beginning of the shiftsaleReturn
sum of all sales returns at the beginning of the shiftbuyReturn
the sum of all returns of purchases at the beginning of the shift
Receipts report
[{
"chequeId": 244, # receipt number
"chequeDate": "2016-01-18 20:41:08", # the date of the receipt opening
"chequeType": "1", # 0 - sale, 1 - purchase, 2 - return of sale, 3 - return of purchase
"chequeSales": [{
"id": 878, # sale code
"itemCode": "1001", # item code (can be empty)
"qty": 1, # number (can be Double)
"price": 23, # unit price
"saleSum": 23, # sale amount
"taxId": 2 # tax code
}, ...
],
…
}]
Receipts report /dump/table/shifts/[shift-number]/cheques
chequeId
is the receipt numberchequeDate
the date of the receipt openingchequeType
receipt type 0 - sale, 1 - purchase, 2 - return of sale, 3 - returnchequeSales
Table of the receipt:id
sales codeitemCode
product code (can be empty)qty
number (can be Double)price
unit pricesaleSum
sale amounttaxId
tax code
Use /salescheques
instead of/cheques
at the end of the query, to get a flat structure
Operations reports
[{
"id": 878, # sale code
"chequeId": 244, # receipt number, sort result by this field
"itemCode": "1001", # item code (can be empty)
"qty": 2, # number (can be Double even if rounded amounts are included)
"price": 30, # unit price
"saleSum": 60, # sale amount
"taxId": 2 # tax code
},….]
Operations reports /dump/table/shifts/[shift-number]/sales
id
sales codechequeId
receipt number, sort result by this fielditemCode
item code (can be empty)qty
quantity (can be Double even if the sums are rounded off)price
unit pricesaleSum
sale amounttaxId
tax code
Shift report (z/x-report)
{
"shiftState": "closed", # switch status is closed or open
"dateOpen": "2016-07-18 20:03", # the opening time of the shift
"dateClose": "2016-07-18 20:03", # the closing time of the shift (if the shift is closed)
"fiscalDataOnShiftOpen": {# fiscal data at the beginning of the shift
"sale": 218861420.47, # the sum of all sales
"buy": 529.70, # amount of all purchases
"saleReturn": 19999600.00, # the sum of all sales returns
"buyReturn": 0.00}, # the sum of all returns of purchases
"totalSaleCheques": 1200, # the number of all sales receipts
"saleDetails": {"sum": 1000.00, "cheques": 12}, # sales amount per shift
"totalBuyCheques": 1007, # shopping information
"buyDetails": {"sum": 0.00, "cheques": 0},
"totalSaleReturnCheques": 1000, # information on sales returns
"saleReturnDetails": {"sum": 0.00, "cheques": 0},
"totalBuyReturnCheques": 947, # information on returns of purchases
"buyRetDetails": {"sum": 0.00, "cheques": 0},
"cashOutDocCount": 1, # number of documents withdrawing cash
"cashOutTotal": 100.00, # cash withdrawn
"cashInDocCount": 0, # number of cash advance documents
"cashInTotal": 0.00, # cash deposited
"cashWeHave": 1108.00, # cash on hand
"revenue": 0.00, # income
"fiscalData": {# current fiscal data
"sales": 218867407.47,
"buy": 529.70,
"saleReturn": 19999600.00,
"buyReturn": 0.00
}
}
...
#Shift report + taxes (.../reportwithtax)
"taxes": {
"sale": [{
"taxId": 5,
"turnover": 815.00,
"taxDetails": [{
"taxId": 5,
"isIncluded": "true",
"taxPercent": 12,
"amount": 87.32
}]
}]...
}
Shift report (z/x-report) /dump/table/shifts/[shift-number]/report
If the change is in the archive, only the fiscal data will be returned and the value of isArhived = true
shiftState
change status is closed or open (closed | opened)dateOpen
time of shift opening (yyyy-MM-dd hh: mm: ss)dateClose
the closing time of the shift (if the shift is closed)fiscalDataOnShiftOpen
fiscal data at the beginning of the shiftsale
the sum of all salesbuy
the amount of all purchasessaleReturn
the amount of all sales returnsbuyReturn
the amount of all returns
totalSaleCheques
the number of all sales receiptssaleDetails
sales per shiftsum
sumcheques
number of receipts
totalBuyCheques
the number of all purchase receiptsbuyDetails
purchases per shiftsum
sumcheques
number of receipts
totalSaleReturnCheques
the number of all receipts for returns on salessaleReturnDetails
returns sales per shiftsum
sumcheques
number of receipts
totalBuyReturnCheques
the number of all receipts on returns of purchasesbuyRetDetails
refunds of purchases per shiftsum
sumcheques
number of receipts
cashOutDocCount
number of documents withdrawing cashcashOutTotal
cash withdrawncashInDocCount
number of documents for cash inflowscashInTotal
is paid in cashcashWeHave
cash on handrevenue
incomefiscalData
current fiscal data, do not depend on the chosen shift (relevant if you specified the ID of the last shift)sale
the sum of all salesbuy
the amount of all purchasessaleReturn
the amount of all sales returnsbuyReturn
the amount of all returns
To include taxes details in the report, use /reportwithtax
instead of /report
at the end of the query.
taxes
taxessale
type of operationtaxId
tax code- "turnover" turnover on the tax
taxDetails
details of the taxtaxId
tax codeisIncluded
is included in the amount (bool)taxPercent
percentageamount
amount of tax
buy
type of operation ...
Receipt details
{
"docid": "247", # receipt number
"createDate": "2016-01-20 18:10:43", # creation date
"submitDate": "2016-01-20 18:11:12", # sending date
"status": 1, # 0 - not sent to the Tax Committee, 1 - sent
"onlineCode": "020223112" # online receipt number (can be empty)
}
Receipt details [/dump/transaction/web-key-of-receipt]
Example: /dump/transaction/11112222?key=33334444
Where: 11112222 - web-key of requesting receipt, 33334444 - current actual web-api key
docid
receipt numbercreateDate
the creation date (yyyy-MM-dd hh:mm:ss)submitDate
the sending date (yyyy-MM-dd hh:mm:ss)status
status 0 - not sent to Tax Committee, 1 - sentonlineCode
online receipt number (can be empty)
10. Management
10.1 Sessional variables
In some cases, it is necessary to quickly change some iKKM parameters during operation. For this purpose these functions are intended. Note that these parameters are not saved and After reboot will return to the original states set in the iKKM settings.
Buzzer
Sometimes it is necessary to attract the attention of the cashier, use the request: /apicheck/?beep=true
Quick Z-report
The reason for the long operation of the Z-report (~ 40 seconds) is the need for a time delay between the withdrawal of cash and the closure of the shift. If you cash withdrawal operation occurs separately with the closing shift, use the fast Z-report timers.
/apicheck/?timersFast=true
- fast mode (5-10 seconds)/apicheck/?timersNormal=true
- back to normal mode.
Working with an external LAN printer
In some cases, you can significantly speed up the printing of a receipt on Lan printer while keeping a constant TCP connect to the printer.
/apicheck/?keepLanPrinter=true
- enable persistent connection/apicheck/?closeLanPrinter=true
- return back to normal operation
Changing print mode
If you need to switch for example from LAN to an internal printer, you can use the queries:
/apicheck/?getPrintMode=true
- get current printer output/apicheck/?setPrintMode=[вид-принтера]
- switch to a preinting mode
Printing modes:
- lan-printer
- internal-printer
- usb-printer
Message que management for Tax Committee
You can switch from online message processing to batch with this command: /apicheck/?ofdPacketMode=true
To manually push a message que, use this request:
/apicheck/?pushTheQue=true
Please note: in batch mode iKKM will not automatically send messages.
To return to normal, online operation mode, use this request: /apicheck/?ofdNormalMode=true
Disable web management
In addition to the API, iKKM has a interface for managing and viewing the device status.
To disable this interface, use the query: /apicheck/?disableWebMgmt=true
Restrict access by IP
After sending the request /apicheck/?Lockhost=true
all subsequent requests from other hosts will be rejected. This setting is valid until
iKKM reboots. At the beginning of the cashier's session, we recommend that you enable this option to improve security.
Additional text in receipt
You can set up printing of advertising text (as well as other variables) in one query, at the very beginning of the cashier session.
In order to add advertising text for printing in the top of the receipt, use '/apicheck', the parameter printHeader
, the method is only POST
.
After the query is executed, the text will be printed on all receipts until the iKKM reboots.
To remove the advertising text, send the same parameter: printHeader
with the value clear
.
Example of text with barcode printing
* Advertising * Advertising *
--barcodeEAN13-7501031311309--
you can print multiple bar-
codes in one text
--barcode128-TESTCODE123--
other text...
The following commands are available for printing barcodes in text:
- EAN13
--barcodeEAN13-[13 digits]--
- EAN8
--barcodeEAN8-[8 digits]--
- CODE128
--barcode128-[1-128 digits]--
In CODE128 allowed symbols: a-zA-Z0-9 !?:.,+=_;
10.2 System functions
For remote management, you can use the following methods:
/apimanage/?doUpdate=true
check and update firmware/apimanage/?doReboot=true
reboot iKKM
11. Error codes
11.1 All errors
TCP dump of error (incorrect web-api key)
HTTP/1.1 400 incorrect-web-api-key
Content-Length: 2
Content-Type: text/html; charset=UTF-8
Date: 2017-02-15 15:00
-1
answer | descr. |
---|---|
[more than zero] | the data is accepted, returns a new web-api key * success, save the web-api key for the next operation |
0 | the device is ready for use, you can register |
-1 | incorrect web-api key, configure a new key on iKKM |
-2 | a registration or banking transaction occurs, please try again later. |
-3 | the shift exceeded 24 hours, it is necessary to close the shift |
- 4 | offline period of more than 72 hours, solve the communication problem and unlock the ccm |
-5 | low battery charge |
-6 | The printer is not ready, check the paper |
-7 | query error, check the passed parameters |
-8 | method error |
-9 | error of parameter values to transmit only digits (except print parameter) |
-10 | the amount of cash (bank, tara, credit) is less than sale (buy ...), check the logic of working with the API |
-11 | change is opened by another cashier, close the shift |
-12 | the value of cash is less than the estimated total amount, it can arise if the tax is over the amount |
-13 | bank or container or credit more than the total amount (or check already paid for in cash), check the logic of working with the API |
-14 | tax error, tax not found |
-15 | there is no cash at the checkout (return of sale, purchase), check the transmitted parameters |
-16 | Only the senior cashier can perform the operation, check the user |
-17 | error processing JSON request in itemdata, check the logic of working with the API |
-18 | The IP address of the host from which the request was made is rejected |
- 100 | ... -199 kkm is blocked by the Tax Committee. see Tax Committee documentation (subtract 100 from their error codes) |
- 99 | iKKM error "see the iKKM event log in the device status menu" |
no answer | the iKKM does not work, check the network, whether the web-api mode is turned on, etc. |
11.2 Short descriptions
These errors can be read in the HTTP header, the HTTP status description field
HTTP status description | HTTP Body | descr. |
---|---|---|
no-web-api-key-provided | -7 | Not passed the web-api key |
incorrect-web-api-key | -1 | Not a valid web-api key |
ikkm-is-blocked | -100 | Tax Committee blocked iKKM |
check-external-printer | -6 | No connection to external printer |
check-printer-or-batt | -6 | No paper or low battery |
sale-param-error | -9 | Error passing parameter |
buy-param-error | -9 | Error passing parameter |
saleRet-param-error | -9 | Error passing parameter |
buyRet-param-error | -9 | Error passing parameter |
check-all-params | -7 | Check all parameters |
payment-params-missed | -7 | No payment options |
cache-param-error | -7 | Error passing parameter |
bank-param-error | -7 | Error passing parameter |
tara-param-error | -7 | Error passing parameter |
credit-param-error | -7 | Error passing parameter |
cache-not-in-range | -7 | Parameter outside the values |
bank-not-in-range | -7 | Parameter outside the values |
tara-not-in-range | -7 | Parameter outside the values |
credit-not-in-range | -7 | Parameter outside the values |
sale-lq-one | -7 | Value less than 1 |
sale-hq-20mil | -7 | The value is more than 20,000,000 |
cash-lq-sale | -10 | The cash is less than the check amount |
bank-hq-sale | -10 | Value less than 1 |
tara-hq-sale | -10 | Value less than 1 |
credit-hq-sale | -10 | Value less than 1 |
bank-tara-credit-hq-sale | -13 | Payment by bank transfer is more than the amount of check |
no-cache-hq-sale | -13 | The check is paid by a bank transfer, cash is banned |
no-mixed-payment-allowed | -13 | Mixed payment method is disabled in the settings |
change-not-allowed | -13 | The transfer is prohibited in this operation |
tax-invlid-num | -14 | Invalid tax code |
tax-not-found | -14 | Tax code not found |
cash-lq-tax | -12 | The amount of the check (with tax) is more than the accepted payment |
no-cash-in-pos | -15 | No cash on hand |
internal-error | -99 | Internal cashier error (damaged database) |
wrong-cashier | -11 | Another cashier opened the door |
shift-gt-24h | -3 | Change is more than 24 hours |
no-last-document | -7 | No last document |
print-lines-parse-error | -7 | Parameter parsing error print |
only-master-cashier | -16 | The operation can be carried out only by the senior cashier |
payment-params-missed | -7 | Parameters are missing (see cash entry / withdrawal) |
cache-param-error | -9 | Error passing parameter |
cache-not-in-range | -9 | Parameter outside the values |
shift-gt-7days | -3 | Change is open for more than 7 days |
incorrect-method | -8 | Invalid method specified |
unknown-error | -99 | Unknown error |