Продажа
Пробитие чека продажи через POST /receipts
Продажа
POST /receipts
Поля items
| Поле | Тип | Обяз. | Описание | Валидация |
|---|---|---|---|---|
name |
string |
Да | Наименование | E-011: не пустое |
spic |
string |
Да | ИКПУ код | E-013: в справочнике Tasnif |
units |
number |
Да | Код единицы измерения (OKEI) | — |
price |
number |
Да | Цена за единицу (тийин) | E-012: > 0 |
amount |
number |
Да | Количество × 1000 (1 шт = 1000) | E-018: ≥ 1000 для маркируемых |
vatPercent |
number |
Да | Процент НДС | E-015: 0 или 12 |
vat |
number |
Да | Сумма НДС (тийин) | E-016: price × 12 / 112 ±100 |
barcode |
string |
Нет | Штрих-код EAN | — |
label |
string |
Нет | Маркировка GS1 DataMatrix | E-004: обязательно для маркируемых |
labels |
string[] |
Нет | Массив маркировок | E-017: кол-во = amount / 1000 |
discount |
number |
Нет | Скидка (тийин) | — |
packageCode |
string |
Нет | Код упаковки | E-014: в packages ИКПУ |
Поля received
| Поле | Тип | Описание | Валидация |
|---|---|---|---|
cash |
number |
Наличные (тийин) | E-003: 0 если cashSale=0 |
card |
number |
Карта (тийин) | — |
Сумма: E-008 (≥ 0), E-009 (не превышает итого + 100)
Пример
{
"type": "sale",
"items": [
{
"name": "Pepsi 0.5л",
"barcode": "4607116440012",
"label": "010460466101809921RCX3nmR",
"spic": "10202001002000000",
"units": 1372873,
"price": 800000,
"amount": 1000,
"vatPercent": 12,
"vat": 85714,
"discount": 0
}
],
"received": {
"cash": 800000,
"card": 0
}
}Успешный ответ
{
"success": true,
"receipt": {
"terminalId": "LG230110007836",
"receiptSeq": 44,
"fiscalSign": "ABC123DEF456",
"qrUrl": "https://ofd.soliq.uz/check?t=LG230110007836&r=44&c=20260405143022&s=ABC123DEF456",
"transactionTime": 1743858622000
},
"receiptHtml": "<html>...</html>",
"ofdSent": true
}
| Поле | Тип | Описание |
|---|---|---|
terminalId |
string |
ID терминала |
receiptSeq |
number |
Порядковый номер чека |
fiscalSign |
string |
Фискальный признак |
qrUrl |
string |
Ссылка для QR-кода |
receiptHtml |
string |
HTML-представление чека |
ofdSent |
boolean |
Отправлен ли в ОФД |
Ответ при недоступности ОФД
Чек пробит, но не отправлен в ОФД. Отправьте позже через /receipts/send-unsent.
{
"success": true,
"receipt": { "..." : "..." },
"receiptHtml": "<html>...</html>",
"ofdSent": false,
"ofdError": "All OFD servers failed"
}