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

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

Запит

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ТакЗагальна сума чека
round_sumfloatНіСума округлення
productslist[object]ТакМістить список товарів для реалізації / повернення
products.lettersstringНіЛітера податку (А, Б, В, Г, Д, Е, С, Н, -Н, <пусто> або NULL)
products.tax_prcstringНіВідсоток податку
products.excise_prcstringНіВідсоток акцизного податку
Для акцизних товарів краще використовувати окрему літеру та % податку.
Наприклад: Г - 20% - 5%
products.excise_letterstringНіСимвол для акцизу
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_discountfloatНіСума знижки
paymentslist[object]ТакМістить параметри методів оплати
payments.codeintegerТакКод методу оплати:
0ГОТІВКА
1БЕЗГОТІВКОВА
2ІНШЕ
payments.namestringТакНазва форми оплати (Реквізити чека рядок 18):
  • ГОТІВКА
  • БЕЗГОТІВКОВА
  • ІНШЕ
payments.payment_methodstringНіЗасоби оплати у чеку (Реквізити чека рядок 19)
  • Якщо форма оплати (payments.name) ГОТІВКА, рядок 19 фіскального касового чека Засоби оплати (payments.payment_method) НЕ друкується
  • Якщо форма оплати (payments.name) БЕЗГОТІВКОВА — вкажіть засіб оплати. В іншому випадку за замовчуванням буде вказано Засіб оплати (payments.payment_method) — Електронний платіжний засіб
  • Якщо форма оплати (payments.name) ІНШЕ — вкажіть власне значення (клієнт задає самостійно)
🛈 Якщо клієнт НЕ передає значення:
  • для payments.code = 0 — в чеку відображається ГОТІВКА
  • для payments.code = 1 або 2 — в чеку відображається Електронний платіжний засіб
payments.sumfloatТакСума оплати
payments.sum_providedfloatТакПередана сума
payments.sum_remainsfloatНіСума решти
🛈 Вказується лише у випадку, якщо payments.code = 0 (код методу оплати) — ГОТІВКА
payments.pay_terminalfloatНіПараметри термінала при оплаті карткою
payments.pay_terminal.comissionfloatНіРозмір комісії, що стягується при оплаті через платіжний термінал
Може бути відсутнім або дорівнювати 0, якщо комісія не застосовується
🛈Якщо значення більше 0, ця сума буде виводитись у чеку
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.timestringНіДата та час оплати через термінал (LiqPay та інші) у форматі 25.04.2023 15:49:03
🛈 Клієнти повинні передавати параметр якщо різниця між оплатою і проведенням чека понад 5 хвилин
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",
"excise_letter": null,
"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": "ГОТІВКА",
"payment_method": 'готівка',
"sum": 100,
"sum_provided": 100,
"sum_remains": 0
},
{
"code": 1,
"name": "KARTKA",
"payment_method": 'безготівка',
"sum": 25,
"sum_provided": 25,
"pay_terminal": {
"comission": 0.5,
"name": "493084867",
"terminal_id": "40904582",
"epz": "4149XXXXXXXX5807",
"card_type": "VISA GOLD",
"auth_code": "538296",
"rrn": "000018706638",
"additional_text": "Тримач ЕПЗ - підпис",
"time": "03.04.2023 15:15:03"
}
}
],
"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
}

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

інформація

Існує два способи друку чека:

  1. PDF-друк — повне представлення чека у форматі PDF
  2. Текстовий друк (поле text_print) — текстове представлення чека. QR код чека знаходиться в полі qr (формат png)
Ім'яТипОпис
ORDERNUMstringНомер чека реалізації / повернення
ORDERDATEstringДата формування чека
ORDERTIMEstringЧас формування чека
MACstringКод аутентифікації повідомлення чека
is_offlinebooleanОзнака офлайн чека
local_numberintegerЛокальний номер операції, який клієнт передає з кожним чеком
text_printstringТекстове представлення чека у форматі Base64. Клієнт самостійно обирає шрифт та спосіб друку
qrstringQR код чека у форматі Base64. Для використання з текстовим чеком – додаткове зображення для друку
qr_datastringДані для генерації QR кода
pdfstringPDF представлення чека у форматі Base64. Може бути одразу роздруковане без додаткової обробки
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,
"text_print": "ICAgICAgICAgINCi0JXQodCi0J7QktCY0Jkg0KfQldC....",
"qr": "iVBORw0KGgoAAAANSUhEUgAAAV4AAAFeCAYAAADNK....",
"qr_data": "http://",
"pdf": "JVBERi0xLjcKMSAwIG9iago8PCAvVHlwZSAvQ2F0",
"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"
]
}
}
порада

Postman колекція (Реалізація/Повернення): https://documenter.getpostman.com/view/12128952/TVRj5U1d#3c0a0189-75ad-430c-9724-7d92c3d09462