Body structure (JSON)
Required fields are in bold.
| Field | Example | Type and format | Comments |
| { | |||
| "msgID" | 16 | int | |
| "currency" | "UAH" | string | |
| "totalAmount" | 39340 | int | should be strictly equal to the sum of amounts of all items, and equal to the sum of amounts of all paid items |
| "zNumber" | 4 | int | shift number, should be unique for deviceID |
| "fiscalNum" | 70113 | int | optional parameter. Used only for offline cash registers |
| "receiptNumber" | 3 | int | receipt number, should be unique for the shift and deviceID |
| "parentFiscalNum" | 1 | int | used for refunds; can be removed from sale |
| "cashier" | "Cashier 1" | string | |
| "dateTime" | "2026-03-02T15:35:21.076Z" | dateTime of ISO-8601 format | should be bigger than the datetime of the last document of the same shift |
| "items" | |||
| [ | |||
| { | |||
| "name" | "Pepsi 0.3l" | string | if parent document is present, it should countain an item with the same name and unit |
| "unit" | "pcs" | string | if parent document is present, it should countain an item with the same name and unit |
| "qty" | 1000 | int | specify that the quantity is multiplied by 1000 (e.g. if 3 units, specify 3000) |
| "price" | 20000 | int | specified in kopecks |
| "amount" | 18000 | int | specified in kopecks, if parent document is present, the amount of parent’s item of the same name and unit should be equal or bigger |
| "taxes" | |||
| [ | |||
| { | |||
| "taxCode" | "A" | string | |
| "taxRate" | 15000 | int | tax percentage multiplied by 100 (e.g. 15% × 100 = 1500), should be the same for all taxes of the same taxCode |
| "taxBase" | 3000 | int | amounts in kopecks |
| "taxAmount" | 2000 | int | amounts in kopecks |
| } | |||
| ] | |||
| }, | |||
| { | |||
| "name" | "Apples" | string | if parent document is present, it should countain an item with the same name and unit |
| "unit" | "kg" | string | if parent document is present, it should countain an item with the same name and unit |
| "qty" | 2134 | int | |
| "price" | 10000 | int | |
| "amount" | 21340 | int | if parent document is present, the amount of parent’s item of the same name and unit should be equal or bigger |
| "taxes" | |||
| [ | |||
| { | |||
| "taxCode" | "A" | string | |
| "taxRate" | 17783 | int | should be the same for all taxes of the same taxCode |
| "taxBase" | 3557 | int | |
| "taxAmount" | 2000 | int | |
| } | |||
| ] | |||
| }, | |||
| ], | |||
| "payments" | |||
| [ | |||
| { | |||
| "type" | "CASH" | string | payment types are taken from TMS |
| "amount" | 39340 | int | in kopecks |
| "change" | 660 | int | in kopecks |
| } | |||
| ], | |||
| "taxTotals" | |||
| [ | |||
| { | |||
| "taxCode" | "A" | string | |
| "taxRate" | 2000 | int | |
| "taxAmount" | 6557 | int | |
| } | |||
| ], | |||
| "identity" | |||
| { | |||
| "fn" | "567765" | string | device token |
| "tin" | "1111111111" | string | |
| "shopName" | "SHOP #1" | string | |
| "shopAddress" | "Unknown st., 404" | string | |
| }, | |||
| "location" | optional | ||
| { | |||
| "latitude" | 6.500183676689106 | float | |
| "longitude" | 120.76210479216934 | float | |
| } | |||
| } |
Example:
{
"msgID": 1656685688,
"currency": "UAH",
"totalAmount": 15000,
"zNumber": 2,
"receiptNumber": 2,
"parentFiscalNum": "OA70604",
"cashier": "John Doe",
"dateTime": "2026-03-02T15:37:21.076Z",
"location": {
"latitude": 6.500183676689106,
"longitude": 120.76210479216934,
"radius": 1000
},
"items": [
{
"name": "Coca Cola 0.5L",
"unit": "psc",
"qty": 1000,
"price": 15000,
"amount": 15000,
"taxes": [
{
"taxCode": "A",
"taxRate": 2000,
"taxBase": 12500,
"taxAmount": 2500
}
]
}
],
"payments": [
{
"type": "C",
"amount": 15000,
"change": 0
}
],
"taxTotals": [
{
"taxCode": "A",
"taxRate": 2000,
"taxAmount": 2500
}
],
"identity": {
"fn": "SM00000144",
"tin": "A24112025",
"shopName": "First Shop",
"shopAddress": "Central 11"
},
"location": {
"latitude": 6.500183676689106,
"longitude": 120.76210479216934
}
}