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 typetaxtax (optional)printprinting (optional)itemdatareceipt 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:
amountpayment amountmessagetype of operationtrackdocumentthe number of the operation required to get the result (optional)
The possible values message is:
purchase- purchaserefund- refundreversal- cancellationreconciliation- closing cycle (report)The parameter
trackdocumentis 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
foundTransactionsnumber of transactions foundtotalAmountthe total amount of successful transactionstransactionResultthe result of the operationsuccess | faildetailslist of all transactions (array):AIDpayment systemPANcard numberamountamountbankslotbank slot (in case we have multi-bank this is important)cardHolderNamethe cardholder (usually empty)currencycurrency codedateTimedate and time (yyyy-MM-dd hh: mm: ss)operationTypeoperation typepurchase | refund | reversalrefnumreference number (from the bank)responcebank response coderesultthe result of the operationsuccess | failtraceNumberthe 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/printLastDocumentquery - 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=minimumIn 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.
uidinternal and unique product codecode1unique product codecode2barcodenamename of the productprice1retail priceitemtax1tax code (see the directory taxes)itemtypeproduct type | servicesmeasuretype of measurementcatalogiddirectory 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
idShift numberopenedChange status: 1 - open, 0 - closedopenDatethe date the shift was opened (yyyy-MM-dd hh: mm: ss)closeDatethe closing date of the shift (yyyy-MM-dd hh: mm: ss)cashierIdcashier codesalethe sum of all sales at the beginning of the shiftbuythe sum of all purchases at the beginning of the shiftsaleReturnsum of all sales returns at the beginning of the shiftbuyReturnthe 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
chequeIdis the receipt numberchequeDatethe date of the receipt openingchequeTypereceipt type 0 - sale, 1 - purchase, 2 - return of sale, 3 - returnchequeSalesTable of the receipt:idsales codeitemCodeproduct code (can be empty)qtynumber (can be Double)priceunit pricesaleSumsale amounttaxIdtax 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
idsales codechequeIdreceipt number, sort result by this fielditemCodeitem code (can be empty)qtyquantity (can be Double even if the sums are rounded off)priceunit pricesaleSumsale amounttaxIdtax 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
shiftStatechange status is closed or open (closed | opened)dateOpentime of shift opening (yyyy-MM-dd hh: mm: ss)dateClosethe closing time of the shift (if the shift is closed)fiscalDataOnShiftOpenfiscal data at the beginning of the shiftsalethe sum of all salesbuythe amount of all purchasessaleReturnthe amount of all sales returnsbuyReturnthe amount of all returns
totalSaleChequesthe number of all sales receiptssaleDetailssales per shiftsumsumchequesnumber of receipts
totalBuyChequesthe number of all purchase receiptsbuyDetailspurchases per shiftsumsumchequesnumber of receipts
totalSaleReturnChequesthe number of all receipts for returns on salessaleReturnDetailsreturns sales per shiftsumsumchequesnumber of receipts
totalBuyReturnChequesthe number of all receipts on returns of purchasesbuyRetDetailsrefunds of purchases per shiftsumsumchequesnumber of receipts
cashOutDocCountnumber of documents withdrawing cashcashOutTotalcash withdrawncashInDocCountnumber of documents for cash inflowscashInTotalis paid in cashcashWeHavecash on handrevenueincomefiscalDatacurrent fiscal data, do not depend on the chosen shift (relevant if you specified the ID of the last shift)salethe sum of all salesbuythe amount of all purchasessaleReturnthe amount of all sales returnsbuyReturnthe amount of all returns
To include taxes details in the report, use /reportwithtax instead of /report at the end of the query.
taxestaxessaletype of operationtaxIdtax code- "turnover" turnover on the tax
taxDetailsdetails of the taxtaxIdtax codeisIncludedis included in the amount (bool)taxPercentpercentageamountamount of tax
buytype 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
docidreceipt numbercreateDatethe creation date (yyyy-MM-dd hh:mm:ss)submitDatethe sending date (yyyy-MM-dd hh:mm:ss)statusstatus 0 - not sent to Tax Committee, 1 - sentonlineCodeonline 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=truecheck and update firmware/apimanage/?doReboot=truereboot 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 |