Shared nested objects
Item object:
| Field | Type | Required | Notes |
|---|---|---|---|
itemAssortId | string | No | Item/product code (used as the product identifier) |
itemName | string | No | Item name |
itemUnit | string | No | Unit name |
itemQty | integer (int32) | No | Quantity * 1000, default 1000 |
itemAmount | integer (int64) | No | Final line amount after item discount |
discount | integer (int64) | No | Item-level discount amount |
discountPrc | number (double) | No | Item-level discount percent |
discountName | string | No | Item-level discount label |
itemTaxes | array of tax objects | No | Tax lines |
Discount rules (for /sale and /refund items):
- If
discountPrcis provided anddiscountis omitted, Cashbox restores base amount fromitemAmountand percent. - If
discountPrc = 100,discountis required. - If both
discountanddiscountPrcare provided, percent is used for calculation; absolute amount may be recomputed by Cashbox. discountNameis optional metadata.
Document-level discount rules (for /sale only):
discount,discountPrc,discountNameapply to whole document after item-level discounts.- If
discountPrc = 100,discountis required. - If both
discountanddiscountPrcare provided, percent is used for calculation; absolute amount may be recomputed by Cashbox. - If
discountPrcis provided withoutdiscount(and not 100%), totals may differ by rounding.
/check_copy item object (response-only):
| Field | Type | Required | Notes |
|---|---|---|---|
itemId | string | No | Stored product code |
itemName | string | No | Item name |
itemUnit | string | No | Unit name |
itemQty | integer (int32) | No | Quantity * 1000 |
itemPrice | integer (int64) | No | Unit price before discount |
itemFinalPrice | integer (int64) | No | Unit price after discount |
itemAmount | integer (int64) | No | Line amount before discount |
itemFinalAmount | integer (int64) | No | Final line amount after discount |
discount | integer (int64) | No | Item-level discount amount |
discountPrc | number (double) | No | Item-level discount percent |
currency_name | string | No | Currency |
Tax object:
| Field | Type | Required | Notes |
|---|---|---|---|
taxCode | string | No | Symbolic tax code |
taxPrc | integer (int32) | No | Percent * 100 (1800 = 18%) |
itemTaxes is schema-optional in the request format, but in practice it is required for the document to fiscalize successfully:
- If no per-item taxes resolve (missing
itemTaxes, or entries whosetaxCode/taxPrcdon't match a tax rate configured on the device), the sale/refund fails. An explicitly supplied unknowntaxCodeortaxPrcis rejected before fiscalization; there is no fallback rate. - If an item carries more than one independent tax at once (e.g. VAT plus a tourism levy on the same line), all of them must be listed in
itemTaxes.
Always send itemTaxes explicitly for every item. There is no safe default to fall back on, and omitting it will fail the sale/refund
rather than silently fiscalizing it incorrectly.
Payment split object:
| Field | Type | Required | Notes |
|---|---|---|---|
cashAmount | integer (int64) | No | Default 0 |
cashlessAmount | integer (int64) | No | Default 0 |
creditAmount | integer (int64) | No | Default 0 |
bonusesAmount | integer (int64) | No | Default 0 |
prepaymentAmount | integer (int64) | No | Default 0 |
tips | integer (int64) | No | Tips for a positive cashlessAmount; takes precedence over sale-level tips |
Payment entry object (response-only, used by totalPayments):
| Field | Type | Required | Notes |
|---|---|---|---|
type | string | Yes | Payment code; code instead of type in /check_copy |
amount | integer (int64) | Yes | Paid amount |
currency_name | string | No | Currency |
rrn | string | No | Card terminal RRN |
auth | string | No | Authorization code |
cardNum | string | No | Card number (masked) |
bankName | string | No | Acquiring bank name reported by the terminal |
binName | string | No | Card issuing bank resolved by the terminal from the BIN |
checkNum | string | No | Terminal check number |
tips | integer (int64) | No | Tips included in amount |
settled | boolean | No | Only in a partially paid error response — see §7.14 |
totalPayments lists the payments in the same order they were declared in the request: the payments block first (cash, cashless, credit,
bonuses, prepayment), then extraPayments in array order. Use that order to match the entries to your own payment rows.
Extra payment object:
| Field | Type | Required | Notes |
|---|---|---|---|
code | string | No | Payment code |
amount | integer (int64) | No | Default 0 |
trxParams | object | No | Transaction metadata |
Extra payment transaction metadata object:
| Field | Type | Required | Notes |
|---|---|---|---|
rrn | string | No | Terminal reference number |
cardNumber | string | No | Card number (masked) |
bankName | string | No | Bank name |
binName | string | No | Card issuing bank (by BIN) |
VAT entry object:
| Field | Type | Required | Notes |
|---|---|---|---|
vatPercent | integer (int32) | Yes | VAT rate percent * 100 |
vatAmount | integer (int64) | Yes | VAT amount |
currency_name | string | No | Currency |
taxCode | string | No | Symbolic tax code |