Перейти до основного вмісту

Реалізація/Повернення

Запит

URI: /api/v2/check/sale?api_token={api_token}

Метод дозволяє зробити реалізацію або повернення.

Запит виконується методом POST у json форматі з даними.

⚠️ Запит повинен містити заголовки Accept: application/json та Content-Type: application/json

інформація

При оплаті готівкою потрібно виконувати округлення до 10 копійок згідно чинного законодавства.
Сума, що закінчується від 1 до 4 копійок, округлюється в бік зменшення до найближчої суми, яка закінчується на 0 копійок.
Сума, що закінчується від 5 до 9 копійок, округлюється в бік збільшення до найближчої суми, яка закінчується на 0 копійок.
В полі round_sum вказується різниця в копійках між округленим і не округленим значенням (зі знаком "-"(знижка) або "+"(надбавка) відповідно).
Якщо виконуєте округлення в масиві payments повинні бути вже округлені значення та перераховане поле total_sum. Округленню підлягає лише форма оплати готівкою.

Приклади ПДВ

ПДВ А 20% "letters": "A" "tax_prc": 20

ПДВ Б 0% "letters": "Б" "tax_prc": 0

БЕЗ ПДВ "letters": null "tax_prc": null

БЕЗ ПДВ (Без ПДВ з літерним відображенням) "letters": Н "tax_prc": 0 До кожної позиції товару буде додано ПДВ, який у податках чека буде прописаний як "Без ПДВ Н"

Звільнений від оподаткування "letters": "-Н" "tax_prc": 0

Параметри запиту

Ім'яТипОбов'язковийОпис
api_tokenstringТакТокен авторизації, згенерований в особистому кабінеті
num_fiscalintegerТакФіскальний номер каси
action_typestringТакТип дії:
Z_SALE - реалізація
RETURN - повернення
local_numberintegerТакЛокальний номер операції, який клієнт передає з кожним чеком
return_numberintegerНіНомер чека, за яким іде повернення (номер, який передано в local_number під час продажу).
Використовується якщо action_type = RETURN
return_num_fiscalintegerНіФіскальний номер повернення.
У разі, якщо повернення проводиться іншою фіскальною касою, то вказати фіскальний номер каси, за яким проводилась операція.
Використовується якщо action_type = RETURN
total_sumfloatТакЗагальна сума чека
payment_methodstringНіЗасоби оплати у чеку.
Якщо клієнт передає:
одну оплату з кодом 0 - в чеку відображається "готівка"
одну оплату з кодом 1,2,3... - в чеку відображається "безготівка"
декілька оплат - в чеку відображається "інше"
власне значення - клієнт має задати дане поле
round_sumfloatНіСума округлення
productslist[object]ТакМістить список товарів для реалізації/повернення
products.lettersstringНіЛітера податку (А, Б, В, Г, Д, Е, С, Н, -Н, <пусто> або NULL)
products.tax_prcstringНіВідсоток податку
products.excise_prcstringНіВідсоток акцизного податку
Для акцизних товарів краще використовувати окрему літеру та % податку.
Наприклад: Г - 20% - 5%
products.codestringНіКод товару
products.unit_codestringНіКод одиниці виміру товару
products.unit_namestringНіНазва одиниці виміру товару
products.namestringТакНазва товару
products.bar_codestringНіШтрих-код
products.excise_barcodestringНіАкцизний код
products.uktzedintegerНіУКТЗЕД код товару
products.amountfloatТакКількість товару у чеку
Не більше трьох знаків після коми
products.pricefloatТакВартість однієї одиниці товару
products.costfloatТакПідсумок по даній позиції
Не більше двох знаків після коми
products.sum_discountstringНіСума знижки
paymentslist[object]ТакМістить параметри методів оплати
payments.codeintegerТакКод методу оплати:
0 - готівкова форма оплати
1,2,3 - безготівкові форми оплати
payments.namestringТакНазва методу оплати
payments.sumintegerТакСума оплати
payments.sum_providedintegerТакПередана сума
payments.pay_terminalobjectНіПараметри термінала при оплаті карткою
payments.pay_terminal.namestringНіІдентифікатор торговця (MID)
Приклад: "493084867"
payments.pay_terminal.terminal_idstringНіІдентифікатор термінала (TID)
payments.pay_terminal.epzstringНіМаска картки
payments.pay_terminal.card_typestringНіТип картки
payments.pay_terminal.auth_codestringНіКод авторизації
payments.pay_terminal.rrnstringНіУнікальний ідентифікатор банківської транзакції
payments.pay_terminal.additional_textstringНіДодатковий текст
🛈 Не використовується
payments.pay_terminal.payment_systemstringНіНазва платіжної системи
footerstringНіТекст в нижній частині чека
open_shiftbooleanНіПрапор відкриття зміни
Якщо зміна закрита і передано значення True, тоді зміна буде відкрита
print_widthintegerНіШирина чека в символах
pdf_widthintegerНіШирина pdf

Приклад запиту

Запит: /api/v2/check/sale?api_token={api_token}
{
"api_token": "42b5eaccba739f08***e7fe157eba8bf",
"num_fiscal": 4000022469,
"action_type": "Z_SALE",
"local_number": 12,
"total_sum": 50.1,
"round_sum": 0.04,
"products": [
{
"letters": "А",
"tax_prc": "20",
"excise_prc": "5",
"code": "821",
"unit_code": "2009",
"unit_name": "штука",
"name": "Вода питна",
"uktzed": 4823004003572,
"amount": "1",
"price": "50.06",
"cost": "50.06",
"sum_discount": "0"
}
],
"payments": [
{
"code": 0,
"name": "ГОТIВКА",
"sum": 25.1,
"sum_provided": 100
},
{
"code": 1,
"name": "KARTKA",
"sum": 25,
"sum_provided": 25,
"pay_terminal": {
"name": "493084867",
"terminal_id": "40904582",
"epz": "4149XXXXXXXX5807",
"card_type": "VISA GOLD",
"auth_code": "538296",
"rrn": "000018706638",
"additional_text": "Тримач ЕПЗ - підпис",
"payment_system": "Test pay system"
}
}
],
"footer": "This is my\n custom footer! Welcome to CashDesk! \n Test \n Next line text!",
"open_shift": true,
"print_width": 32,
"pdf_width": 48
}

Параметри відповіді

Ім'яТипОпис
ORDERNUMstringНомер чека реалізації/повернення
ORDERDATEstringДата формування чека
ORDERTIMEstringЧас формування чека
MACstringКод аутентифікації повідомлення чека
is_offlinebooleanОзнака офлайн чека
local_numberintegerЛокальний номер операції, який клієнт передає з кожним чеком
qrstringQR код чека
qr_datastringДані для генерації QR кода
pdfstringPDF представлення чека
text_printstringТекстове представлення чека
linkstringПосилання для перегляду чека на сайті
uuidstringЛокальний uuid номер чека
cash_in_boxfloatПоточна кількість грошей в касі

Приклади успішних відповідей

Продаж/Повернення

200 OK

Відповідь: /api/v2/check/sale?api_token=42b5eaccba739f08***e7fe157eba8bf
{
"ORDERNUM": "OTbrl4J6zAQ",
"ORDERDATE": "2020-12-16",
"ORDERTIME": "09:58:45",
"MAC": "2baea23fdcfe2f4d1853ec5ad87d5fbdf65ed0fbf48f60623ac92e2e518d1bce",
"is_offline": false,
"local_number": 42,
"qr": "iVBORw0KGgoAAAANSUhEUgAAAV4AAAFeCAYAAADNK....",
"qr_data": "http://",
"pdf": "JVBERi0xLjcKMSAwIG9iago8PCAvVHlwZSAvQ2F0",
"text_print": "ICAgICAgICAgINCi0JXQodCi0J7QktCY0Jkg0KfQldC....",
"link": "http://cashdesk.com/check/b63ad1dd-b218-465e-9251-b2510de77205/html",
"uuid": "498372e1-dbbe-4af8-abd3-bba87082a3b6"
}

Продаж з округленням

200 OK

Відповідь: /api/v2/check/sale?api_token=42b5eaccba739f08***e7fe157eba8bf
{
"ORDERNUM": "Nuu7J2SBH6Y",
"ORDERDATE": "2021-07-29",
"ORDERTIME": "09:38:02",
"MAC": "16657e0878131705882484d4d2a31482f8457b8cd079da909c3d7ddb2963d362",
"is_offline": false,
"qr": null,
"link": "http://cashdesk.com/check/fac3e242-cd74-416a-9e7a-a19d3642b457/html",
"pdf": null,
"text_print": null,
"uuid": "fac3e242-cd74-416a-9e7a-a19d3642b457",
"local_number": 10,
"cash_in_box": 37804.69
}

Приклади неуспішних відповідей

ДПС цим підписом відкрита зміна на іншому ПРРО

400 Bad Request

Відповідь: /api/v2/check/sale?api_token=42b5eaccba739f08***e7fe157eba8bf
{
"message": "ДПС цим підписом відкрита зміна на іншому ПРРО 4000055257"
}

Дубль чека

інформація

Помилка виникне, якщо вже існує чек з таким же локальним номером, але сума чека різна.
Якщо у попереднього чека такий же локальний номер і сума чека однакова, то у відповідь повернеться попередній чек.

400 Bad Request

Відповідь: /api/v2/check/sale?api_token=42b5eaccba739f08***e7fe157eba8bf
{
"message": "Check already exist"
}

Сервер ДПС недоступний

503 Service Unavailable

Відповідь: /api/v2/check/sale?api_token=42b5eaccba739f08***e7fe157eba8bf
{
"message": "Сервер ДПС недоступний"
}

Помилка валідації даних

422 Unprocessable Entity

Відповідь: /api/v2/check/sale?api_token=42b5eaccba739f08***e7fe157eba8bf
{
"message": "The given data was invalid.",
"errors": {
"total_sum":
[
"Not correct calculation with payments 75"
]
}
}