Після встановлення та запуску програми Checkbox Kasa - вона підіймає свій локальний веб-сервер, з яким можна спілкуватись за допомогою REST API.
В даній статті описано мінімальний необхідний перелік методів, яких буде достатньо для створення інтеграції. З повним переліком методів (без деталізованого опису) ви зможете ознайомитись за посиланням Swagger.
Опис Request Headers, які зустрічаються найчастіше у запитах:
X-Client-Name: <назва інтеграції (опціонально)>
X-Client-Version: <версія інтеграції (опціонально)>
Content-Type: application/json
accept: application/json
Ніколи не використовуйте бойову касу/касира для цілей тестування, інакше потім вам доведеться, як мінімум, пояснювати податковій, що ви передали некоректні дані та можливо платити штраф.
Відкрити зміну можна за допомогою запиту /api/v1/shift/open. Відкрити зміну можна у онлайн або офлайн режимі. Для відкриття касової зміни не потрібно вказувати фіскальний код або фіскальну дату (вона буде автоматично вказана поточною з ПК).
Касова зміна має бути закрита в той день, коли вона відкрита і не може тривати більше 24х годин.
accept: application/json
X-Client-Name: <назва інтеграції (опціонально)>
X-Client-Version: <версія інтеграції (опціонально)>
Тіло запиту у даному випадку має бути порожнім
curl -X 'POST' \ 'http://127.0.0.1:9200/api/v1/shift/open' \ -H 'accept: application/json' \ -H 'X-Client-Name: Test-Client-Name' \ -H 'X-Client-Version: Test-Client-Version' \ -d ''
{
"status": <true - у випадку успішного відкриття зміни, false - якщо зміну вже відкрито або сталася помилка при відкритті>
}
Z-звіт – це фіскальний підсумковий документ, який повинен сформуватись в той же день коли зміна була відкрита та зробити до 23:59. Формування Z-звіту означає завершення касової зміни і здачу виручки. Виручку до каси підприємства здають тільки юридичні особи. Якщо зміна не була відкрита, то в такому випадку немає необхідності формувати Z-звіт кожен день
Під час закриття касової зміни, Z - звіт автоматично створюється та друкується.
Для закриття зміни необхідно виконати команду /api/v1/shift/close.
accept: application/json
X-Client-Name: <назва інтеграції (опціонально)>
X-Client-Version: <версія інтеграції (опціонально)>
Тіло запиту у даному випадку має бути порожнім
curl -X 'POST' \ 'http://127.0.0.1:9200/api/v1/shift/close' \ -H 'accept: application/json' \ -H 'X-Client-Name: Test-Client-Name' \ -H 'X-Client-Version: Test-Client-Version' \ -d ''
{
"id": "<yнікальний UUID v4 z-звіту>",
"status": <true/false - статус виконання>,
"fiscal_code": "<фіскальний код>",
"fiscal_date": "фіскальна дата у форматі ISO 8601",
"is_online": true,
"report": {
"id": "<yнікальний UUID v4 z-звіту>",
"serial": 25,
"taxes": [
{
"code": 5,
"label": "ПДВ 20%",
"symbol": "Є",
"rate": 20,
"extra_rate": 0,
"sell_sum": 20000,
"return_sum": 0,
"sales_turnover": 120000,
"returns_turnover": 0,
"setup_date": "2023-09-27T07:57:32.979471",
"no_vat": false
},
],
"payments": [
{
"type": "CASH",
"code": null,
"label": "Готівка",
"sell_sum": 156000,
"return_sum": 0,
"service_in": 100,
"service_out": 0,
"cash_withdrawal": 0,
"cash_withdrawal_commission": 0
}
],
"sell_receipts_count": 13,
"return_receipts_count": 0,
"cash_withdrawal_receipts_count": 0,
"last_receipt_id": "afcb657e-af26-4e1a-8f36-c682a11becaf",
"initial": 0,
"balance": 156200,
"sales_round_up": 0,
"sales_round_down": 0,
"returns_round_up": 0,
"returns_round_down": 0,
"discounts_sum": 0,
"extra_charge_sum": 0
}
}
"id" - унікальний ідентифікатор Z-звіту у форматі UUID,
"status" - статус виконання команди,
"fiscal_code" - фіскальний номер транзакції,
"fiscal_date" - фіскальна дата, з якою транзакцію буде зареєстровано у ДПС,
"is_online" - true/false, режим створення транзакції,
"report" - блок даних з інформацією
"id" - унікальний ідентифікатор Z-звіту у форматі UUID,
"serial" - порядковий номер зміни,
"taxes" - блок даних з інформацією про податкові ставки, які діють у рамках обраної зміни. Для кожної податкової ставки набір даних складається з наступних пунктів:
"payments" - блок з інформацією про платежі в рамках поточної зміни:
"sell_receipts_count" - кількість чеків продажу,
"return_receipts_count" - ількість чеків повернення,
"cash_withdrawal_receipts_count" - кількість чеків по операціям з видачі готівкових коштів,
"last_receipt_id" - UUID останнього фіскального чека,
"initial" - баланс каси у копійках на момент відкриття зміни,
"balance" - баланс каси у копійках на момент створення звіту,
"sales_round_up" - сума копійок чеків продажу, заокруглених в більшу сторону,
"sales_round_down" - сума копійок чеків продажу, заокруглених в меньшу сторону,
"returns_round_up" - сума копійок чеків повернення, заокруглених в більшу сторону,
"returns_round_down" - сума копійок чеків повернення, заокруглених в меньшу сторону,
"discounts_sum" - сума копійок чеків повернення, заокруглених в меньшу сторону,
"extra_charge_sum" - сума надбавок в поточній зміні.
Внесення і видача готівки – службові (нефіскальні) операції, коли ви вносите розмінні гроші в касу або інкасуєте готівку.
Метод /api/v1/receipt/service дозволяє створити чек службового внесення або вилучення готівки. Для коректного створення такого чеку потрібно обов'язково передати у тілі запиту параметри type (має бути CASH
за замовчуванням), value та label (має бути "Готівка
" за замовчуванням).
accept: application/json
X-Client-Name: <назва інтеграції (опціонально)>
X-Client-Version: <версія інтеграції (опціонально)>
Content-Type: application/json
{
"payment": {
"type": "CASH", <Дозволено тільки тип `CASH`>
"value": 100, <сума у копійках, для створення чеку службового вилучення перед сумою має бути - >
"label": "Готівка" <Назва типу оплати>
},
"print": true <true/false команда на друк службовоого чека>
}
curl -X 'POST' \ 'http://127.0.0.1:9200/api/v1/receipt/service' \ -H 'accept: application/json' \ -H 'X-Client-Name: Test-Client-Name' \ -H 'X-Client-Version: Test-Client-Version' \ -H 'Content-Type: application/json' \ -d '{ "payment": { "type": "CASH", "value": 10000, "label": "Готівка" }, "print_simple_text": false, "print": true}'
{
"type": "SERVICE_IN",
"updated_at": "2023-10-01T14:17:17.404780",
"transaction_id": 4,
"shift_id": 2,
"external_id": "4f6d35f0-a533-49e8-95fc-22f90c7564ec",
"custom_id": null,
"status": "DONE",
"cashier_name": null,
"departament": null,
"header": null,
"footer": null,
"barcode": null,
"tax_codes": null,
"files" - : [
{
"mime": "image/png",
"path": "C:\\checkbox.kasa.manager\\profiles\\test\\files_printer\\2023-10-01\\14-17-17-107514_receipt.png"
}
],
"signature": "gAAAAABlGVU8GrMr6c_eOQT21EKNq48SIU40c65ORSMJRqQ_4vg2TyP4Iwl-z110dMPqib72SiCB8EqGcBJ5z63xuhzctVPupY_ibZZPc5A8yvpberYmv05Po3B22h6Uwl7omLea19SSMtYsi-8Hr395R0zE4xUlqePE3tHTcb5kYHgZBHTaOI6rXm4NcItW15MbkNY2piIVXAAYjNEMqauKGBCcGpNC2Bp881JcCu1XZSE-zux-bF0t0n-sbW0YxeCAHI2bBDGl4f3yXIf0NZGQMxZUXBpJ6w==",
"fiscal_code": null,
"created_at": "2023-10-01T14:17:17.107514",
"id": 1
}
"type" - SERVICE_IN для чека внесення та SERVICE_OUT для чека винесення готівки.
"updated_at" - Час запису транзакції в локальну БД.
"transaction_id" - Порядковий номер транзакції в локальній БД.
"shift_id" - Номер зміни, у якій було виконано транзакцію.
"external_id" - UUID транзакції.
"custom_id" - Кастомний UUID транзакції.
"status" - Статус транзакції.
"cashier_name" - Назва касира.
"departament" - Назва департаменту.
"header" - Хедер чека.
"footer" - Футер чека.
"barcode" - Штрихкод чека.
"tax_codes" - Код податку.
"files" - Масив даних, тип та шлях збереженого файлу чека.
"signature" - Шифрований підпис транзакції.
"fiscal_code" - Фіскальний номер чека (для службових чеків внесення/винесення готівки завжди null).
"created_at" - Час створення транзакції.
"id" - Порядковий номер чека в локальній БД.
Метод /api/v1/receipt/sell призначений для створення чека як у онлайн, так і у офлайн режимі (але без можливості явно вказати офлайн фіскальний код або офлайн фіскальну дату - каса автоматично підставляє поточну дату та час).
Мінімальний набір даних для створення чека продажу включає в себе UUID чека, код товару, назву товару, ціну, кількість, тип оплати та суму оплати. Але взагалі чек може містити багато додаткових параметрів, які будуть описані у прикладі.
Відмінність чеку повернення від чека продажу полягає в тому, що при поверненні товару при його додаванні в чек потрібно вказувати параметр "is return": true.
accept: application/json
X-Client-Name: <назва інтеграції (опціонально)>
X-Client-Version: <версія інтеграції (опціонально)>
Content-Type: application/json
{
"custom_id": "<генерація та передача UUID чека на стороні інтеграції є обов'язковою>",
"departament": "<Назва відділу>",
"cashier_name": "<Ім'я касира>",
"header": "<хедер чека>",
"footer": "<футер чека>",
"barcode": "<штрих-код чека>",
"discounts": [
{
"type": "<тип знижки - "DISCOUNT"/"EXTRA_CHARGE" (ЗНИЖКА/НАДБАВКА)>",
"mode": "<режим знижки "VALUE"/"PERCENT" (АБСОЛЮТНЕ ЗНАЧЕННЯ/ВІДСОТКОВА ЗНИЖКА - рекомендуємо відмовлятись від вказування відсоткової знижки та передавати у фіскальний чек абсолютне значення)>",
"value": <значення знижки>,
"name": "<назва знижки або надбавки>",
"sum": <загальна сума знижки>,
"tax_codes": [<коди податкових ставок через кому, що застосовуються для товару (якщо їх >1). Потрібно вказувати для коректного обрахунку знижки, якщо товар має податкову ставку>]
}
],
"goods": [
{
"code": "<Код товару>",
"name": "<Назва товару>",
"price": <ціна у копійках>,
"quantity": <кількість у тисячах, 1 шт = 1000>,
"taxes": [<цифровий або літерний код ставки податку (попередньо програмується у особистому кабінеті). Якщо до товару потрібно застосувати декілька податків - вказати через кому>],
"discounts": [
{
"type": "<тип знижки - "DISCOUNT"/"EXTRA_CHARGE" (ЗНИЖКА/НАДБАВКА)>",
"mode": "<режим знижки "VALUE"/"PERCENT" (АБСОЛЮТНЕ ЗНАЧЕННЯ/ВІДСОТКОВА ЗНИЖКА - рекомендуємо відмовлятись від вказування відсоткової знижки та передавати у фіскальний чек абсолютне значення)>",
"value": <значення знижки>,
"name": "<назва знижки або надбавки>",
"sum": <загальна сума знижки>,
"tax_codes": [<коди податкових ставок, що застосовуються для товару (якщо їх >1). Потрібно вказувати через кому для коректного обрахунку знижки, якщо товар має податкову ставку>]
}
],
"uktzed": "<код УКТЗЕД>",
"excise_barcodes": ["<цифрове позначення штрих-коду акцизної марки 1>","<цифрове позначення штрих-коду акцизної марки 2>"],
"barcode": "<Штрих-код товару>",
"is_return": <флаг true/false, що визначає, чи це чек повернення>,
"is_winnings_payout": <флаг true/false, що визначає, чи це виплата виграшу>,
}
],
"payments": [
{
"type": "<"CASH"/"CASHLESS" (ГОТІВКА/БЕЗГОТІВКОВИЙ РОЗРАХУНОК (картка, сертифікати, бонуси тощо))>",
"value": <сума оплати у копійках>,
"label": "<текстова назва форми оплати>",
"commission": <комісія (тільки для безготівкових платежів)>,
"card_mask": "<маска карти (не більше 19 символів) (тільки для безготівкових платежів)>",
"bank_name": "<назва банку (тільки для безготівкових платежів)>",
"auth_code": "<код авторизації банківської операції (тільки для безготівкових платежів)>",
"rrn": "<Reference Retrieval Number - унікальний ідентифікатор банківської транзакції (тільки для безготівкових платежів)>",
"payment_system": "<платіжна система (тільки для безготівкових платежів)>",
"owner_name": "<ім'я власника електронного платіжного засобу (тільки для безготівкових платежів)>",
"terminal": "<інформація про платіжний термінал (тільки для безготівкових платежів)>",
"acquirer_and_seller": "<ідентифікатор еквайра та торгівця, або інші реквізити, що дають змогу їх ідентифікувати (тільки для безготівкових платежів)>",
"receipt_no": "<номер банківського чека (тільки для безготівкових платежів)>",
"signature_required": <true/false флаг, який визначає, чи має бути доступною графа для підпису власника картки та касира>
}
],
"delivery": {
"email": "<e-mail клієнта для відправки копії чека>",
"phone": "<номер телефона клієнта для відправки копії чека по SMS/Viber (для роботи функції має бути налаштована та підключена відповідна послуга)>. Формат 380..."
},
"print": <true/false, команда на друк чека>,
"technical_return": <true/false флаг, яким можна позначити, що даний чек є чеком технічного (помилкового) повернення>,
"round": <true/false активація режиму заокруглення (для його роботи у блоці payments має бути вказана сума вже заокруглена за правилами НБУ>,
"abs_vizualization_values": <true/false, абсолютне відображення суми чека в графічному або друкованому вигляді>
}
curl -X 'POST' \ 'http://127.0.0.1:9200/api/v1/receipt/sell' \ -H 'accept: application/json' \ -H 'X-Client-Name: Test-Client-Name' \ -H 'X-Client-Version: Test-Client-Version' \ -H 'Content-Type: application/json' \ -d '{ "custom_id": "3a252dc3-042f-4058-8172-79c0db96e8c0", "goods": [ { "code": "Good1", "name": "Колбаса Краківська", "price": 12000, "quantity": 1000, "taxes": [ 5 ] } ], "payments": [ { "type": "CASH", "value": 12000, "label": "Готівка" } ], "print": true, "remove_rest": false, "technical_return": false, "round": false}'
{
"id": "db2d95a6-ab56-4ad2-848c-087bb0c11111",
"fiscal_code": "TEST-T11111",
"fiscal_date": "2023-10-24T13:55:48.697782+03:00",
"is_online": true,
"is_sell": true,
"total_payment": 12000,
"total_sum": 12000,
"total_rest": 0,
"round_sum": 0,
"goods": [
{
"good": {
"code": "Good1",
"name": "Колбаса Краківська",
"header": null,
"footer": null,
"uktzed": null,
"price": 12000,
"excise_barcodes": null,
"barcode": null,
"tax": [
5
]
},
"sum": 12000,
"quantity": 1000,
"is_return": false,
"taxes": [
{
"code": 5,
"label": "ПДВ 20%",
"symbol": "Є",
"rate": 20,
"extra_rate": null,
"value": 2000,
"extra_value": 0,
"included": true,
"no_vat": false,
"returns_turnover": 0,
"sales_turnover": 12000,
"created_at": "2023-09-27T07:57:32.979471"
}
],
"discounts": []
}
],
"payments": [
{
"type": "CASH",
"value": 12000,
"label": "Готівка"
}
],
"type": "SELL",
"discounts": [],
"taxes": [
{
"code": 5,
"label": "ПДВ 20%",
"symbol": "Є",
"rate": 20,
"extra_rate": null,
"value": 2000,
"extra_value": 0,
"included": true,
"no_vat": false,
"returns_turnover": 0,
"sales_turnover": 12000,
"created_at": "2023-09-27T07:57:32.979471",
"id": "b4a68b3f-2071-4c32-985b-861c644e8266"
}
],
"delivery": null,
"header": null,
"footer": null,
"barcode": null,
"cashier_name": null,
"departament": null,
"previous_receipt_id": null
}
"id" - унікальний ідентифікатор чека у форматі UUID,
"fiscal_code" - фіскальний номер чека. При створенні чека у онлайні чек отримує фіскальний код згодом, після обробки та передачі його у ДПС, яка у відповідь призначає чеку офлайн код,
"fiscal_date" - фіскальна дата, з якою чек буде зареєстровано у ДПС. Чек отримає фіскальну дату після завершення обробки,
"is_online" - true/false, режим створення чека,
"is_sell" - true/false флаг чека продажу,
"total_payment" - сума оплати за товари у чеку,
"total_sum" - сума вартості товарів у чеку,
"total_rest" - сума здачі,
"round_sum" - сума заокруглення,
"goods" - блок даних з переліком товарів.
"taxes" - блок даних з інформацією про податкові ставки, які використовувались для товару в чеку
"discounts" - блок даних про знижки, які застосовувались до всього чеку.
"payments" - блок даних з інформацією про платежі
"type" - тип транзакції,
"delivery" - блок даних з інформацією про доставку чека,
"header" - хедер чека,
"footer" - футер чека,
"barcode" - штрих-код чека,
"cashier_name" - названи касира,
"departament" - назва відділу,
"previous_receipt_id" - UUID попереднього чека
Метод /api/v1/receipt/cash-withdrawal призначений для створення чека видачі готівкових коштів держателю ЕПЗ (видача готівки на касі).
accept: application/json
X-Client-Name: <назва інтеграції (опціонально)>
X-Client-Version: <версія інтеграції (опціонально)>
Content-Type: application/json
{
"payment":
{
"code": <номер оплати>,
"value": <сума оплати у копійках>,
"label": "<текстова назва форми оплати>",
"commission": <комісія>,
"card_mask": "<маска карти (не більше 19 символів)>",
"bank_name": "<назва банку>",
"auth_code": "<код авторизації банківської операції>",
"rrn": "<Reference Retrieval Number - унікальний ідентифікатор банківської транзакції>",
"payment_system": "<платіжна система>",
"owner_name": "<ім'я власника електронного платіжного засобу>",
"terminal": "<інформація про платіжний термінал>",
"acquirer_and_seller": "<ідентифікатор еквайра та торгівця, або інші реквізити, що дають змогу їх ідентифікувати>",
"receipt_no": "<номер банківського чека>",
"signature_required": <true/false флаг, який визначає, чи має бути доступною графа для підпису власника картки та касира>
},
"print": <true/false, команда на друк чека>
}
curl -X 'POST' \ 'http://127.0.0.1:9200/api/v1/receipt/cash-withdrawal' \ -H 'accept: application/json' \ -H 'X-Client-Name: Test-Client-Name' \ -H 'X-Client-Version: Test-Client-Version' \ -H 'Content-Type: application/json' \ -d '{ "payment": { "value": 10000, "commission": 50, "label": "Картка", "card_mask": "XXXXXXXXXXXX6734", "bank_name": "МійБанк", "auth_code": "078359", "rrn": "305817547765", "payment_system": "VISA", "owner_name": "CHEREZPLETINNOHUZADYRAISHCHENKO PETRO", "terminal": "S1LF0EUR", "acquiring": "MyBank", "acquirer_and_seller": "MyBank", "receipt_no": "1", "signature_required": true, "code": 1 }, "print": true, "print_simple_text": false}'
{
"custom_id": null,
"status": "DONE",
"cashier_name": null,
"departament": null,
"header": null,
"footer": null,
"barcode": null,
"tax_codes": null,
"files": [
{
"mime": "image/png",
"path": "C:\\checkbox.kasa.manager\\profiles\\TEST\\files_printer\\2023-10-25\\07-39-59-519740_document.png"
}
],
"signature": "gAAAAABlOJwfbaIZ8wmVErxAYyXQuB0Fb9_r9SX7r5VRbbl09Z6tSbV7nWZJqddY_XEl5DmjUBUaU8eaTwxUplhfGKp2uM4CfBpBpPF4pj6W0iCoYICVqze6K6Fb_NqKXAK0tTaSdE_mauhlhZ3UJa5FHSosVnSMxBVUy820WQ-z-bj5X7LEs8NyouVlGFKT2gAA8z3TCpnVsrKN5VQySueBTpl0OzFluZ_Ob8YUvcOnK2mpvRETXkjUEfiBsv8tbUXb6yyvAcEfKlYufSVr3OaLT8uZu9Pkbi_GO998hikJr3vRCvXTy78kQTHIADXGBaWiKUyc4ZN2ANR2rqKe34i5DJOeWskzbXPaU7o0tGe0nisH4BYlTFNIJPbPAbWDhyfxkPl7Rrk1ohc-4-VhGA3PAP6hLs3PfvNtP0EEjacOsIm4Oq0Lur2rzjIxGRDHcOnUxKvS-hEVATQGRTKmxc5U0YWWN0qc9vpoIxc_sCOvO3fdF7Xygci0QvRh6ujhvczZx73V5qjRCRpUvEI72feot8RcA2PiWEuAKd8lCUNt0B4GfqoMCZ1l-OXHTtzYE3pcuVoacR_rW5hivzdAwtOlxv-TSETeMZbZVTfLjQH1a74nbP80CEHfOMYRU6WAyNeviRug0TORoRUAx58nGxY8d0_EUSxNJzDx5HXGg05o82Y3J2fGnyIWDLRMdkhLZ5n54VU_nG0Irhye7ZscM71N3mSdmwwa_zJJlwCQiKhcUSgYzh3ON2W_Yy6NEKa1F_vLmZCmU1Qmk0GJcmotdmhn-o12QQo-C_SSYtktDmrVKZ7Vra35ksVB7LUlj_dKDATRVK2kNkfhcUEQY2s_XnKt8-yaObN5kjTAp4lK7dR4rUOsfGWVC66OPDXAIWZvwPF_51f11111",
"fiscal_code": "TEST-h11111",
"created_at": "2023-10-25T07:39:59.519740",
"id": 4,
"updated_at": "2023-10-25T07:40:00.148788",
"transaction_id": 9,
"type": "CASH_WITHDRAWAL",
"shift_id": 3,
"external_id": "bb855c63-ba3e-43f2-9134-bf61cab11111"
}
"custom_id" - унікальний ідентифікатор чека у форматі UUID,
"status" - статус виконання команди,
"cashier_name" - назва касира,
"departament" - назва відділу,
"header" - хедер чека,
"footer" - футер чека,
"barcode" - штрих-код чека,
"tax_codes" - код податку,
"files" - масив данних з інформацією про файл чека:
"signature" - шифрований підпис транзакції,
"fiscal_code" - фіскальний номер чека. При створенні чека у онлайні чек отримує фіскальний код згодом, після обробки та передачі його у ДПС, яка у відповідь призначає чеку офлайн код,
"created_at" - час створення транзакції,
"id" - порядковий номер чека в локальній БД,
"updated_at" - час запису транзакції в локальну БД,
"transaction_id" - порядковий номер транзакції в локальній БД,
"type" - тип транзакції (завжди "CASH_WITHDRAWAL"),
"shift_id" - номер зміни, у якій було виконано транзакцію,
"external_id" - UUID транзакції.
Х-звіт – це не фіскальний чек, призначений для контролю роботи каси. Показує всі операції (підсумкові суми), проведені протягом зміни. Х-звіт можна знімати в будь-який час і в будь-якій кількості протягом робочого часу.
Для друку X-звіту потрібно використовувати метод /api/v1/shift/xreport. У відповідь каса поверне х-звіт у форматі JSON та збереже зображення звіту, яке буде відрпавлено на принтер для подальшого друку.
accept: application/json
Тіло запиту у даному випадку має бути порожнім
curl -X 'POST' \ 'http://127.0.0.1:9200/api/v1/shift/xreport' \ -H 'accept: application/json' \ -d ''
{
"status": true,
"report": {
"serial": 25,
"taxes": [
{
"code": 5,
"label": "ПДВ 20%",
"symbol": "Є",
"rate": 20,
"extra_rate": 0,
"sell_sum": 20000,
"return_sum": 0,
"sales_turnover": 120000,
"returns_turnover": 0,
"setup_date": "2023-09-27T07:57:32.979471",
"no_vat": false
}
],
"payments": [
{
"type": "CASH",
"code": null,
"label": "Готівка",
"sell_sum": 156000,
"return_sum": 0,
"service_in": 100,
"service_out": 0,
"cash_withdrawal": 0,
"cash_withdrawal_commission": 0
},
{
"type": "CASH",
"code": null,
"label": "Картка",
"sell_sum": 0,
"return_sum": 0,
"service_in": 100,
"service_out": 0,
"cash_withdrawal": 0,
"cash_withdrawal_commission": 0
}
],
"sell_receipts_count": 13,
"return_receipts_count": 0,
"cash_withdrawal_receipts_count": 0,
"last_receipt_id": "afcb657e-af26-4e1a-8f36-c682a11becaf",
"initial": 0,
"balance": 156200,
"sales_round_up": 0,
"sales_round_down": 0,
"returns_round_up": 0,
"returns_round_down": 0,
"discounts_sum": 0,
"extra_charge_sum": 0
}
}
"status" - статус виконання команди,
"report" - блок даних з інформацією
"serial" - порядковий номер звіту,
"taxes" - блок даних з інформацією про податкові ставки, які діють у рамках обраної зміни. Для кожної податкової ставки набір даних складається з наступних пунктів:
"payments" - блок з інформацією про платежі в рамках поточної зміни
"sell_receipts_count" - кількість чеків продажу,
"return_receipts_count" - кількість чеків повернення,
"cash_withdrawal_receipts_count" - кількість чеків по операціям з видачі готівкових коштів,
"last_receipt_id" - UUID останнього фіскального чека,
"initial" - баланс каси у копійках на момент відкриття зміни,
"balance" - баланс каси у копійках на момент створення звіту,
"sales_round_up" - сума копійок чеків продажу, заокруглених в більшу сторону,
"sales_round_down" - сума копійок чеків продажу, заокруглених в меньшу сторону,
"returns_round_up" - сума копійок чеків повернення, заокруглених в більшу сторону,
"returns_round_down" - сума копійок чеків повернення, заокруглених в меньшу сторону,
"discounts_sum" - сума знижок в поточній зміні,
"extra_charge_sum" - сума надбавок в поточній зміні.
Окрім Х- або Z-звіту, ви можете також формувати періодичний звіт методом /api/v1/reports/periodical. При цьому інформація, яка не зберігається локально (за замовченням зберігається інформація за останні 30 днів) - запитується з серверів checkbox. Дата має бути вказаною у форматі <YYYY-MM-DDTHH:MM:SS>
.
accept: application/json
Тіло запиту у даному випадку має бути порожнім
curl -X 'GET' \ 'http://127.0.0.1:9200/api/v1/reports/periodical?from_date=2023-08-01T00%3A00%3A00&to_date=2023-09-01T00%3A00%3A00&is_short=true' \ -H 'accept: application/json'
null
null - у разі успішого виконання операції. У випадку помилки, повернеться message із причиною помилки.
Приклад повного періодичного звіту | Приклад скороченного періодичного звіту |
---|---|
Responce body 🖥️ | Description ✍🏻 | |
---|---|---|
400 | CheckBox Підпис неактивний, запустіть його, будь ласка | Якщо підпис касира не запущений, то ви отримаєте помилку 400. Ви можете використовувати його на захищеному хмарному сервісі, або встановити локально. |
400 | Офлайн сессія триває більше <n> годин, касу заблоковано! Необхідно відновити зв'язок з сервером. |
За замовченням дозволено перебувати в офлайн режимі роботи не більше 36 годин. Якщо ви перевищете цей ліміт, ви отримаєте помилку 400. В такому випадку роботу каси буде заблоковано, поки вона не перейде в онлайн режим роботи. Якщо при перевірці стану каси вона тривалий час знаходиться в офлайн режимі - будь ласка, зверніться до служби підтримки Checkbox зручним для вас способом. |
400 | Зміну не відкрито | Якщо ви спробуєте виконати запит у закритій зміні, а його можна виконати тільки у відкритій зміні - ви отримаєте помилку 400 |
400 | Створення чеків дозволено лише у день відкриття зміни. Для продовження роботи закрийте діючу зміну і відкрийте нову | Якщо ви спробуєте виконати фіскальний запит у касовій зміні, яка відкрита минулим днем - ви отримаєте помилку 400 |
400 | Зміна відкрита вже понад 24 години. Для продовження роботи закрийте діючу зміну і відкрийте нову | Якщо ви спробуєте виконати фіскальний запит у касовій зміні, яку відкрито понад 24 години (при цьому перевірку дня відкриття зміни відключено) - ви отримаєте помилку 400 |
400 | Неможливо виконати операцію, оскільки в касі недостатньо коштів (<сума, яку ви хочете вилучити> > <сума готівки у касі>) | Якщо ви спробуєте вилучити з каси більше коштів, ніж є у наявності, то отримаєте у відповідь помилку 400 |
400 | Сума копійок внесення або вилучення повинна бути кратною 10 (найменша копійка в обігу готівки) | Якщо ви спробуєте вилучити з каси копійки меньше, ніж є в обігу, то отримаєте у відповідь помилку 400 |
400 | Сума платежів не може бути меньшою ніж сума чеку | Якщо у блоці платежів вказати суму меншу, ніж ціна товару, то ви отримаєте помилку 400 |
400 | Сума платежів повинна дорівнювати сумі чеку повернення (4544.00) | Якщо у чеку поверненя в блоці платежів вказати суму, що відрізняється від загальної ціни товарів, то ви отримаєте помилку 400 |
400 | Виявлено невідповідніть поточного і попереднього стану каси. Зверніться у підтримку | Якщо файли захисту офлайн режиму було змінено або видалено, ви отримаєте помилку 400. Будь ласка, зверніться до служби підтримки Checkbox зручним для вас способом. |
400 | Дата створення останньої транзакції в локальній БД більше ніж поточна дата.Касу заблоковано. Перевірте налаштування локальної дати та часу | Якщо в локальній базі даних дата останньої транзакції більша, ніж поточна дата (наприклад, збився час на ПК), ви отримаєте помилку 400. Будь ласка, зачекайте, поки не пройде час створення транзакції |
400 | Дія не може бути виконана в режимі оффлайн. Перевірте правильність пін кода та ключа ліцензії | Якщо ви намагаєтесь виконати дію, але каса перебуває в офлайн режимі із сервером checkbox (наприклад, при розірванні інтернет-зв'язку), ви отримаєте помилку 400. Будь ласка, перевірте наявність інтернет-зв'язку |
403 | Термін дії ключа закінчився <YYYY-MM-DD HH:MM:SS> |
У випадку, якщо термін дії ключа касира скінчився, ви отримаєте помилку 403. Для продовження роботи вам необхідно отримати новий ключ та зареєструвати нового касира. |
403 | Доступ заборонено, оскільки касира деактивовано | Якщо касир деактивований користувачем, сервер поверне помилку 403 |
403 | Касира заблоковано: <причина блокування> |
Якщо касира було заблоковано на сторноні Checkbox (наприклад, сертифікат ключа відізвано ДПС або АЦСК, яким його було видано) - сервер поверне помилку 403. Будь ласка, зв'яжіться із службою підтримки Checkbox зручним для вас способом для вирішення питання. |
403 | Касу заблоковано через відсутність чеків за попередній період, необхідно сплатити за послуги користування касою для автоматичного розблокування або залишити заявку на веб-порталі https://my.checkbox.in.ua | У випадку, якщо ви не користувались касою тривалий період - вона автоматично заморожується, щоб не нараховувалась абонплата. Для розморозки - необхідно сплатити рахунок за користування касами та звернутись до служби підтримки Checkbox зручним для вас способом. |
403 | Каса заблокована через помилку ERROR_TYPE від ДПС |
У випадку, якщо касу деактивовано в ДПС, але вона активна в кабінеті Checkbox, під час наступного відкриття зміни або видачі чека ви отримаєте помилку. Будь ласка, виконайте синхронізацію даних з ДПС в особистому кабінеті Checkbox та зверніться до служби підтримки. |
403 | Для видачі чеків, будь ласка, оплатіть рахунок за користування касами. | Якщо ви не оплатили послуги Checkbox завчасно, усі каси організації буде заблоковано, сервер поверне помилку 403. Будь ласка, зверніться до служби підтримки Checkbox, що б ми оперативно розблокували роботу кас та надіслали вам актуальний рахунок. |
409 | Каса вже використовується іншим ID агента. Ймовірно запит виконано з каси дублікату. Зверніться до підтримки | При першому запуску каси для неї та касира встановлюється унікальний ідентифікатор пристрою X-Device-ID, який складається із декількох параметрів. Якщо ви запустили касу на іншому ПК, або від імені іншого користувача - ви отримаєте помилку 409. |
422 | { |
Якщо запит сформовано невірно, то ви отримаєте помилку 422, де буде вказано приблизне розташування та опис помилки. |
Якщо у Вас виникли питання, Ви знайшли помилку або хочете запропонувати вказати додаткову інформацію в інструкціях - Ви завжди можете зв'язатись з нами зручним для вас способом.