API для інтеграції з кабінетом Вчасно.Каса та фіскалізації чеків. Напряму, без залучення Device Manager. Якщо ви користуєтесь Device Manager, то вам не потрібне це АПІ.
HOST: https://kasa.vchasno.ua
Для всіх методів очікуються такі хедери:
Content-Type: application/json
Authorization: VCHASNO_KASA_PRRO_TOKEN
Де VCHASNO_KASA_PRRO_TOKEN - токен каси, класти у хедер без префіксу Bearer.
Приклад запиту на дані по касі:
curl --location 'https://kasa.vchasno.ua/api/v3/fiscal/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: ••••••' \
--data '{
"fiscal": {
"task": 18
}
}'
Токен каси можна отримати у веб-кабінеті Вчасно.Каса (https://kasa.vchasno.ua/), перейшовши у Налаштування конкретної каси (Дії з касою -> Налаштування каси -> блок Токен)

Токен відображається тільки один раз при його формуванні. Повторне отримання цього ж токену - неможливо (дані хешуються). Тому, якщо ви загубите токен каси, його треба буде перегенерувати. При перегенерації старий токен припиняє дію.
Тестовий режим
У веб-кабінеті Вчасно.Каса також доступна тестова каса, по якій можна взяти токен і тестувати інтеграцію. Відмінність тестової каси від реальної - чеки не відправляються до ДПС, всюди підсвічується, що це тестова каса та тестовий чек. Чеки з тестової каси не можна надавати покупцям, так як це порушення правил фіскалізації - клієнти мають отримувати дійсний чек з реальної каси. Реєстрація реальної каси також доступна у веб-кабінеті Вчасно.Каса.
Для фіскалізації чеків необхідно додати ключ у сховище ключів.
Зробити це можна у веб-кабінеті, сторінка "Сховище ключів" (https://kasa.vchasno.ua/app/storage-keys)

Всі запити на фіскалізацію виконуються через POST /api/v3/fiscal/execute
Зазвичай час виконання запиту на фіскалізацію складає до 1 секунди.
При проблемах з АЦСК чи ДПС ми виконуємо додаткові заходи задля забезпечення безперебійної роботи, тому рекомендуємо виставити таймаут на запит у 25 секунд. Обов'язково передавайте у запитах на фіскалізацію свій унікальний tag.
Флоу роботи:
Пояснення щодо обов'язковості ключів у запитах:
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| dt | string | Дата і час завдання в форматі YYYYMMDDHHMMSS.
Використовується як дата і час для чеку
Якщо не передати - використається час серверу ВАЖЛИВО! Дата чеку, що проводиться, має бути >= дати попереднього проведеного чеку. В іншому випадку ДПС не прийме такий чек. |
❌ |
| tag | string | Ідентифікатор запиту.
Можна вказати довільний рядок.
Використовується для ідентифікації повторних запитів на фіскалізацію. Для уникнення дублювання чеків, необхідно у кожному запиті вказувати власний унікальний ідентифікатор.
Якщо не передати чи передати пустим, сервером буде згенеровано uuid для цього поля. |
❌ |
| source | string | Назва джерела завдання, може бути довільною. Слугує для кращої ідентифікації в логах | ❌ |
| fiscal | object | Об'єкт з реквізитами фіскального завдання | ✅ |
| userinfo | object | Дані, куди надсилати посилання на чек (для завдань 1, 2, 3, 4, 14, 15, 16).
Об'єкт виду: { "email" : "...", "phone": "+380XXXXXXXXX" } Очікуємо формат +380XXXXXXXXX, та якщо ви вкажете додаткові розділові знаки у номері (наприклад +380ХХ-ХХХ-ХХ-ХХ), ми спробуємо конвертувати його у потрібний формат У випадку, якщо телефон чи емейл вказано невірно - повідомлення не буде відправлено, але на проведення чеку це ніяк не вплине (не буде валідаційної помилки). |
❌ |
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| task | integer | Тип фіскального завдання:
0 - відкриття зміни 1 - чек продажу 2 - чек повернення 3 - службове внесення 4 - службова видача 14 - чек видачі готівки 15 - чек переказу коштів 16 - чек видачі коштів при переказі 10 - X-звіт 11 - Z-звіт 18 - статус пРРО |
✅ |
| subtask | integer | Маркування, тільки для чеків передплати та постоплати
1 - передплата 2 - постоплата |
✔ |
| cashier | string | Інформація про касира | ❌ |
| receipt | object | Поля чеку (для завдань 1 і 2) | ✔ |
| cash | object | Поля внесення/видачі, чеку видачі готівки і чеку видачі готівки при переказі (для завдань 3, 4, 14 і 16) | ✔ |
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| sum | float | Сума чеку (2 знаки після коми) з урахуванням всіх знижок | ✅ |
| round | float | Сума округлення (входить до суми чеку). На цю суму має відрізнятись сума чеку від сум по всіх видам оплати. | ❌ |
| comment_up | string | Коментар, який друкується перед списком товарів | ❌ |
| comment_down | string | Коментар, який друкується внизу чеку | ❌ |
| rows | array | Рядки чеку | ✅ |
| pays | array | Перелік засобів оплат | ✅ |
| purchase_receipt_fisn | string | Обов'язкове поле для чеків повернення (task 2) по програмі "Національний кешбек"
Фіскальний номер чеку на продаж на основі якого здійснюється повернення |
✔ |
| purchase_rro_fisn | string | Обов'язкове поле для чеків повернення (task 2) по програмі "Національний кешбек"
Фіскальний номер РРО або ПРРО з якого було здійснено оригінальний продаж товару по чеку вказаного в purchase_receipt_fisn |
✔ |
| purchase_receipt_dt | string | Обов'язкове поле для чеків повернення (task 2) по програмі "Національний кешбек"
Дата фіскалізації чеку на продаж по якому здійснюється повернення в форматі YYYYMMDD. |
✔ |
| disc | float | Сума або відсоток загальної знижки на чек. | ❌ |
| disc_type | integer | Визначає тип загальної знижки у fiscal.receipt.disc
Значення:
0 - сумова 1 - відсоткова знижка |
❌ |
| discounts | array | Список загальних знижок (якщо є потреба задати декілька). | ❌ |
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| code | string | Артикул товару в обліковій системі підприємства | ❌ |
| code1 | string | ШК (штрихкод) товару | ❌ |
| code2 | string | Код УКТЗЕД | ❌ |
| code3 | string | Код ДКПП | ❌ |
| code_a | string | Код акцизної марки товару | ❌ |
| code_aa | array | Масив акцизних марок товарів (для випадку, коли для одної позиції декілька марок) | ❌ |
| name | string | Назва товару | ✅ |
| cnt | float | Кількість товару (не більше 3х знаків після коми) | ✅ |
| price | float | Ціна товару (2 знаки після коми) Може бути пустим, тоді рахується автоматично шляхом поділу поля cost на cnt і математичним округленням | ✅ |
| disc | float | Знижка на рядок чеку (2 знаки після коми) | ✅ |
| cost | float | Сума по рядку до знижки Може бути пустим, тоді рахується автоматично шляхом множення поля cnt на price і математичним округленням | ✅ |
| taxgrp | integer | Код податкової групи:
1 ПДВ 20% 2 Без ПДВ 3 ПДВ 20% + акциз 5% 4 ПДВ 7% 5 ПДВ 0% 6 Без ПДВ + акциз 5% 7 Не є об`єктом ПДВ 8 ПДВ 20% + ПФ 7.5% 9 ПДВ 14% |
✅ |
| comment | string | Коментар на рядок | ❌ |
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| type | integer | Код засобу оплати. Коди за замовчуванням:
0 Готівка 1 Безготівка 2 Картка 3 Передплата 4 Післясплата 5 Кредит 6 Сертифікат 8 Чек 11 Бонусні бали 12 Погашення кредиту 13 Переказ через QR-код 14 Переказ з картки 15 Переказ з поточного рахунку 16 Інтернет еквайринг 17 Платіж LiqPay 18 Платіж через сервіс переказу ROZETKA Pay 19 Платіж Portmone 20 Платіж NovaPay Або ж кастомний варіант (налаштовується у кабінеті) |
✅ |
| sum | float | Сума оплати (2 знаки після коми) | ✅ |
| comment | string | Коментар на рядок оплати | ❌ |
| change | float | Решта (для оплати готівкою)
Для правильного внесення оплати з рештою необхідно - в поле sum внести суму, яка іде в залік, - в поле change - решту. Загальна сума, яка отримана від покупця, розраховується як sum+change |
✔ |
| paysys | string | Назва платіжної системи (для оплати карткою) | ✔ |
| rrn | string | Код транзакції (для оплати карткою) | ✔ |
| cardmask | string | Замаскований номер картки (для оплати карткою) | ✔ |
| term_id | string | Ідентифікатор платіжного терміналу (для оплати карткою) | ✔ |
| bank_name | string | Назва банку еквайера (для оплати карткою).
Вказується виключно як інформаційне поле для відображення в формі чеку назви банку еквайера. Не відображається у в'ювері чеків без bank_id. Дані вказані в це поле не відправляються в ДПС. |
✔ |
| bank_id | string | Ідентифікатор банку (для оплати карткою) | ✔ |
| auth_code | string | Код авторизації (для оплати карткою) | ✔ |
| oper_type | string | Вид операції | ❌ |
| commission | float | Сума комісії | ❌ |
| purchase_dt | string | Обов'язкове поле для чеків продажу (task 1) по програмі "Національний кешбек"
Дата та час авторизації оплати на терміналі в форматі YYYYMMDDHHMMSS. У візуалізації чеку даний час не відображається, лише передається в ДПС. |
✔ |
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| disc | float | Сума або відсоток загальної знижки на чек. | ✅ |
| disc_type | integer | Тип загальної знижки.
Значення:
0 - сумова, 1 - відсоткова знижка. |
✅ |
| disc_name | string | Назва загальної знижки. За замовчуванням "Знижка". | ❌ |
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| type | integer | Код засобу оплати. Коди за замовчуванням:
0 Готівка 1 Безготівка 2 Картка 3 Передплата 4 Післясплата 5 Кредит 6 Сертифікат 8 Чек 11 Бонусні бали 12 Погашення кредиту 13 Переказ через QR-код 14 Переказ з картки 15 Переказ з поточного рахунку 16 Інтернет еквайринг 17 Платіж LiqPay 18 Платіж через сервіс переказу ROZETKA Pay 19 Платіж Portmone 20 Платіж NovaPay Або ж кастомний варіант (налаштовується у кабінеті) |
✅ |
| sum | float | Сума внесення\видачі (2 знаки після коми) | ✅ |
| comment_up | string | Коментар, який друкується перед сумою | ❌ |
| comment_down | string | Коментар, який друкується після суми | ❌ |
| paysys | string | Назва платіжної системи (лише для чеку видачі готівки та чеку видачі готівки при переказі) | ✔ |
| rrn | string | Код транзакції Обов'язкове поле для task 4, 16 | ✔ |
| cardmask | string | Замаскований номер картки (лише для чеку видачі готівки та чеку видачі готівки при переказі) | ✔ |
| term_id | string | Ідентифікатор платіжного терміналу (лише для чеку видачі готівки та чеку видачі готівки при переказі) | ✔ |
| bank_id | string | Ідентифікатор банку Обов'язкове поле для task 4, 16 | ✔ |
| auth_code | string | Код авторизації (лише для чеку видачі готівки та чеку видачі готівки при переказі) | ✔ |
| commission | float | Сума комісії (лише для чеку видачі готівки та чеку видачі готівки при переказі) | ✔ |
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| ver | integer | Версія схеми (службове поле) | ✅ |
| source | string | Назва джерела завдання | ✅ |
| device | string | Фіскальний номер каси | ✅ |
| tag | string | Мітка завдання для ідентифікації відповіді | ✅ |
| dt | string | Дата та час виконання в форматі YYYYMMDDHHMMSS | ✅ |
| res | integer | Код результату
0 - ОК > 0 - код помилки |
✅ |
| res_action | integer | Подальші рекомендовані дії для збереження транзакційної цілісності
0 - ОК, можна переходити до наступного завдання 1 - помилка, завдання не пройшло, необхідно повторити запит 2 - помилка + колізія. Виправлення колізії буде виконано при наступному запиті, тому необхідно виконати повтор для збереження транзакційності 3 - помилка, що потребує зупинки та ручного фіксу |
✅ |
| errortxt | string | Текстова інформація про помилку | ✅ |
| error_extra | object | null | Опційний об'єкт, в якому повертаються деталі щодо помилки. Наприклад перелік полів, та причини, чому вони не пройшли валідацію | ✅ |
| warnings | array | Масив об'єктів вигляду {code: 0, wtxt: "..."} з кодами та текстами попереджень, які потрібно донести до касира. Перелік кодів та текстів у розділі "Опис помилок" | ✅ |
| task | integer | Тип завдання | ✅ |
| info | object | Вихідні дані
Опис об'єкту info для конкретного типу завдання приведено у самих запитах нижче |
✅ |
"task": 0)Якщо зміну на ПРРО закрито, то при надсиланні першого чеку (task = 1,2,3,4,14,15,16) автоматично надсилається запит на відкриття зміни.
Опис відповіді
Структура об'єкту info для завдання відкриття зміни
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| task | integer | Тип завдання | ✅ |
| dt | string | Дата та час проведення чеку в форматі YYYYMMDDHHMMSS | ✅ |
| fisid | string | Фіскальний номер каси | ✅ |
| doccode | string | Фіскальний номер чеку | ✅ |
| dataid | integer | Номер сформованого пакету | ✅ |
| shift_link | integer | Номер зміни каси | ✅ |
| shift_id | string | ID зміни | ✅ |
| cashier | string | Інформація про касира | ✅ |
| isoffline | bool | В якому режимі проведено чек
true - в офлайні false - в онлайні |
✅ |
| safe | float | Сума готівки в касі | ✅ |
| dtype | integer | Тип девайсу
0 - тестовий 1 - фіскальний |
✅ |
curl --location --request POST 'https://kasa.vchasno.ua/api/v3/fiscal/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN' \
--data-raw '{
"fiscal": {
"task": 0
}
}'
{
"task": 0,
"type": 1,
"ver": 6,
"source": "",
"device": "99997655555555",
"tag": "33d2bd1acb739cc9d80a7d24451ba318",
"dt": "20240131100530",
"res": 0,
"res_action": 0,
"errortxt": "",
"warnings": [],
"info": {
"task": 0,
"fisid": "99997655555555",
"dataid": 195,
"doccode": "TEST_JC5D9PZUrd-ZKQ",
"dt": "20240131100530",
"cashier": "",
"dtype": 0,
"isprint": 0,
"isoffline": false,
"safe": 0,
"shift_link": 46,
"shift_id": "6b72e68d-e596-4e11-a190-bedbded40cc2"
},
"error_extra": null
}
"task": 1)Опис відповіді
Структура об'єкту info для завдань 1, 2, 3, 4, 14, 15, 16 (чек продажу та повернення, службове внесення/видача, чек видачі готівки, чек переказу коштів, чек видачі коштів при переказі)
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| task | integer | Тип завдання | ✅ |
| dt | string | Дата та час проведення чеку в форматі YYYYMMDDHHMMSS | ✅ |
| fisid | string | Фіскальний номер каси | ✅ |
| doccode | string | Фіскальний номер чеку | ✅ |
| dataid | integer | Номер сформованого пакету | ✅ |
| shift_link | integer | Номер зміни каси | ✅ |
| cashier | string | Інформація про касира | ✅ |
| isoffline | bool | В якому режимі проведено чек true - в офлайні false - в онлайні | ✅ |
| safe | float | Сума готівки в касі | ✅ |
| dtype | integer | Тип девайсу 0 - тестовий 1 - фіскальний | ✅ |
| qr | string | Посилання на електронний фіскальний чек Вчасно.Каса | ✅ |
| cancelid | string | Ідентифікатор для відміни операції | ✅ |
| mac | string | Контрольне число послідовності чеків | ✅ |
curl --location --request POST 'https://kasa.vchasno.ua/api/v3/fiscal/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN' \
--data-raw '{
"userinfo": {
"email": "RECIPIENT_EMAIL",
"phone": "+380XXXXXXXXX"
},
"fiscal": {
"task": 1,
"receipt": {
"sum": 199.99,
"round": 0.01,
"comment_up": "Зразок! Коментар шапки чеку",
"comment_down": "Зразок! ДЯКУЄМО за покупку",
"disc": 10.00,
"disc_type": 0,
"rows": [
{
"code": "00001",
"pop": "Оплата за послуги користування ПРРО",
"code1": "73463253",
"code2": "54321",
"code_aa": [
"XX11111111111",
"XX11111111112"
],
"name": "Продукт 1",
"cnt": 2,
"price": 55.00,
"disc": 10.00,
"taxgrp": "4",
"comment": "Зразок! Коментар"
},
{
"code": "00002",
"code1": "73463254",
"code2": "45667",
"code_a": "XX11111111113",
"name": "Продукт 2",
"cnt": 1,
"price": 89.99,
"disc": -10.00,
"taxgrp": 3,
"comment": "Зразок! \"Have a good day\""
}
],
"pays": [
{
"type": 0,
"sum": 150.00,
"change": 50.00,
"comment": "Зразок! Тест"
},
{
"type": 2,
"sum": 40.00,
"commission": 1.00,
"paysys": "paysys_test",
"rrn": "rrn_test",
"oper_type": "Оплата",
"cardmask": "cardmask****test",
"term_id": "term_id",
"bank_name": "bank_name",
"bank_id": "bank_id",
"auth_code": "auth_code",
"comment": "Зразок! СЛАВА*УКРАЇНІ",
"show_additional_info": true
}
]
}
}
}'
{
"task": 1,
"type": 1,
"ver": 6,
"source": "",
"device": "99997955555555",
"tag": "ea1a404fcc8f48f3e1dea03fe1ad3cbd",
"dt": "20241114121430",
"res": 0,
"res_action": 0,
"errortxt": "",
"warnings": [],
"info": {
"task": 1,
"fisid": "99997955555555",
"dataid": 152,
"doccode": "TEST_7B_WSDzzmo9H7w",
"dt": "20241114121430",
"cashier": "",
"dtype": 0,
"isprint": 0,
"isoffline": false,
"safe": 150,
"shift_link": 37,
"docno": 1,
"cancelid": "TEST_7B_WSDzzmo9H7w",
"qr": "https://kasa.vchasno.ua/c/TEST_7B_WSDzzmo9H7w?id=TEST_7B_WSDzzmo9H7w&date=20241114&time=12:14:30&fn=99997955555555&sm=189.99&mac=e8acd9a470a6b4258ec4df473bb2a121094543d48f611084f1bfb08cb712f2e8",
"mac": "e8acd9a470a6b4258ec4df473bb2a121094543d48f611084f1bfb08cb712f2e8"
},
"error_extra": null
}
"task": 2)Опис відповіді
Структура відповіді аналогічна чеку продажу (описано вище)
curl --location --request POST 'https://kasa.vchasno.ua/api/v3/fiscal/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN' \
--data-raw '{
"fiscal": {
"task": 2,
"receipt": {
"sum": 199.99,
"round": 0.01,
"comment_up": "Зразок! Коментар шапки чеку",
"comment_down": "Зразок! ДЯКУЄМО за повернення",
"rows": [
{
"code": "00001",
"code1": "73463253",
"code2": "54321",
"code_aa": [
"XX11111111111",
"XX11111111112"
],
"name": "Продукт 1",
"cnt": 2,
"price": 55.00,
"disc": 10.00,
"taxgrp": "4",
"comment": "Зразок! Коментар"
},
{
"code": "00002",
"code1": "73463254",
"code2": "45667",
"code_a": "XX11111111113",
"name": "Продукт 2",
"cnt": 1,
"price": 89.99,
"disc": -10.00,
"taxgrp": 3,
"comment": "Зразок! \"Have a good day\""
}
],
"pays": [
{
"type": 0,
"sum": 150.00,
"change": 50.00,
"comment": "Зразок! Тест"
},
{
"type": 2,
"sum": 50.00,
"commission": 1.00,
"paysys": "paysys_test",
"rrn": "rrn_test",
"oper_type": "Оплата",
"cardmask": "cardmask****test",
"term_id": "term_id",
"bank_id": "bank_id",
"auth_code": "auth_code",
"comment": "Зразок! СЛАВА*УКРАЇНІ",
"show_additional_info": true
}
]
}
}
}'
{
"task": 2,
"type": 1,
"ver": 6,
"source": "",
"device": "99997955555555",
"tag": "6fd430b3685d1d445c8a611d61cdd54a",
"dt": "20241114121508",
"res": 0,
"res_action": 0,
"errortxt": "",
"warnings": [],
"info": {
"task": 2,
"fisid": "99997955555555",
"dataid": 153,
"doccode": "TEST_g8MjrMAN_X6lKA",
"dt": "20241114121508",
"cashier": "",
"dtype": 0,
"isprint": 0,
"isoffline": false,
"safe": 0,
"shift_link": 37,
"docno": 1,
"cancelid": "TEST_g8MjrMAN_X6lKA",
"qr": "https://kasa.vchasno.ua/c/TEST_g8MjrMAN_X6lKA?id=TEST_g8MjrMAN_X6lKA&date=20241114&time=12:15:08&fn=99997955555555&sm=199.99&mac=975e62f6827b43fc88bc9997a6a36c68d95fb0cc8fea82d8ac89e9b75ac3050f",
"mac": "975e62f6827b43fc88bc9997a6a36c68d95fb0cc8fea82d8ac89e9b75ac3050f"
},
"error_extra": null
}
"task": 1, "subtask": 1)Додаткові параметри для створення чеку передплати
У об'єкті rows параметр cnt має бути 0
У об'єкті fiscal параметр subtask=1 вказує що це чек передплати, обов'язковий параметр, якщо його пропустити, не буде створено чек передплати
Об'єкт rows_pre_payment опційний. Вказуються всі товари по яким робиться чек передоплати, для кращої валідації чеку постоплати
curl --location --request POST 'https://kasa.vchasno.ua/api/v3/fiscal/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN' \
--data-raw '{
"fiscal": {
"task": 1,
"subtask": 1,
"receipt": {
"sum": 50.00,
"round": 0,
"comment_down": "Передплата по товарах: Товар, 100.00 грн",
"rows": [
{
"name": "Передплата",
"cnt": 0,
"price": 50.00,
"disc": 0,
"taxgrp": "1"
}
],
"rows_pre_payment": [
{
"name": "Товар",
"cnt": 1,
"price": 100.00,
"disc": 0,
"taxgrp": "1",
"code_aa": []
}
],
"pays": [
{
"type": 0,
"sum": 50.00,
"change": 0
}
]
}
}
}'
{
"task": 1,
"type": 1,
"ver": 6,
"source": "",
"device": "99997955555555",
"tag": "95ecf2c0b92d7b12e6ac9ee1e77131d0",
"dt": "20241114121544",
"res": 0,
"res_action": 0,
"errortxt": "",
"warnings": [],
"info": {
"task": 1,
"fisid": "99997955555555",
"dataid": 154,
"doccode": "TEST_kD2wSQzTqMSMdA",
"dt": "20241114121544",
"cashier": "",
"dtype": 0,
"isprint": 0,
"isoffline": false,
"safe": 50,
"shift_link": 37,
"docno": 2,
"cancelid": "TEST_kD2wSQzTqMSMdA",
"qr": "https://kasa.vchasno.ua/c/TEST_kD2wSQzTqMSMdA?id=TEST_kD2wSQzTqMSMdA&date=20241114&time=12:15:44&fn=99997955555555&sm=50.00&mac=9facb17a574dfcc29a03e48905fc88d3907b4cafc4777ac97fb5155eb5227d5d",
"mac": "9facb17a574dfcc29a03e48905fc88d3907b4cafc4777ac97fb5155eb5227d5d"
},
"error_extra": null
}
"task": 1, "subtask": 2)Додаткові параметри для створення чеку післяплати
post_payment_of_check_fn: prepayment_check_fn вказується для прив'язки до чеку передплати
У об'єкті fiscal обов'язковий параметр subtask: 2 який вказує що це чек післяплати
У об'єкті rows обов'язковий параметр disc_apply_type: 1 для знижок у післяплати
curl --location --request POST 'https://kasa.vchasno.ua/api/v3/fiscal/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN' \
--data-raw '{
"post_payment_of_check_fn": "TEST_kD2wSQzTqMSMdA",
"fiscal": {
"task": 1,
"subtask": 2,
"receipt": {
"sum": 50.00,
"round": 0,
"comment_down": "Післяплата по товарах: Товар, 100.00 грн. Чек передплати: TEST_kD2wSQzTqMSMdA",
"rows": [
{
"name": "Товар ",
"cnt": 1,
"price": 100.00,
"disc": 50.00,
"disc_apply_type": 1,
"taxgrp": "1",
"code_aa": []
}
],
"pays": [
{
"type": 0,
"sum": 50.00,
"change": 0
}
]
}
}
}'
{
"task": 1,
"type": 1,
"ver": 6,
"source": "",
"device": "99997955555555",
"tag": "a54aa166bcf17b33d9933fc5d7d109b2",
"dt": "20241114121643",
"res": 0,
"res_action": 0,
"errortxt": "",
"warnings": [],
"info": {
"task": 1,
"fisid": "99997955555555",
"dataid": 155,
"doccode": "TEST_K7_fVdv_44YxdA",
"dt": "20241114121643",
"cashier": "",
"dtype": 0,
"isprint": 0,
"isoffline": false,
"safe": 100,
"shift_link": 37,
"docno": 3,
"cancelid": "TEST_K7_fVdv_44YxdA",
"qr": "https://kasa.vchasno.ua/c/TEST_K7_fVdv_44YxdA?id=TEST_K7_fVdv_44YxdA&date=20241114&time=12:16:43&fn=99997955555555&sm=50.00&mac=c15a64d915581ca9b9dc8f184fcb9ff0f594c04ab8ceefb4e8c70e82c9a9fd3f",
"mac": "c15a64d915581ca9b9dc8f184fcb9ff0f594c04ab8ceefb4e8c70e82c9a9fd3f"
},
"error_extra": null
}
"task": 14)Опис відповіді
Структура відповіді аналогічна чеку продажу (описано вище)
curl --location --request POST 'https://kasa.vchasno.ua/api/v3/fiscal/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN' \
--data-raw '{
"fiscal": {
"task": 14,
"cash": {
"type": 2,
"sum": 100,
"commission": 1.01,
"bank_id": "bank_id",
"term_id": "terminal_id",
"paysys": "paysys_test",
"rrn": "rrn_test",
"cardmask": "cardmask****test",
"auth_code": "auth_code",
"comment_up": "Зразок! Верхній комент",
"comment_down": "Зразок Нижній комент"
}
}
}'
{
"task": 14,
"type": 1,
"ver": 6,
"source": "",
"device": "99997955555555",
"tag": "9926384e47ac3bd369959bf2aa13bb13",
"dt": "20241114121810",
"res": 0,
"res_action": 0,
"errortxt": "",
"warnings": [],
"info": {
"task": 14,
"fisid": "99997955555555",
"dataid": 158,
"doccode": "TEST_muS2KtTYKboVbA",
"dt": "20241114121810",
"cashier": "",
"dtype": 0,
"isprint": 0,
"isoffline": false,
"safe": 0,
"shift_link": 37,
"docno": 1,
"cancelid": "TEST_muS2KtTYKboVbA",
"qr": "https://kasa.vchasno.ua/c/TEST_muS2KtTYKboVbA?id=TEST_muS2KtTYKboVbA&date=20241114&time=12:18:10&fn=99997955555555&sm=101.01&mac=b617916f2ab2b1eef8644321d29b4f44e60f8cca06de4964a82660c6eaeacfd9",
"mac": "b617916f2ab2b1eef8644321d29b4f44e60f8cca06de4964a82660c6eaeacfd9"
},
"error_extra": null
}
"task": 15)Валідація:
Якщо хоча б в одному із об'єктів заповнені payer_code та/або payer_name, інші об'єкти повинні мати ідентичні дані по цим полям
Якщо в одному із об'єктів відсутнє значення payer_code і payer_name, заповнюємо з того об'єкту де воно є автоматично
Заборонено використовувати форму оплати "Інше" для чеку переказу коштів
Додаткові поля об'єкту fiscal.receipt для чеку переказу коштів:
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| psp_id | string | Номер ПТКС / номер відокремленого підрозділу надавача платіжних послуг За наявності | ✅ |
| psp_name | string | Найменування надавача платіжних послуг За наявності | ✅ |
| psp_code | string | Податковий номер надавача платіжних послуг За наявності | ✅ |
Додаткові поля об'єкту fiscal.receipt.rows для чеку переказу коштів:
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| recipient_name | string | Назва одержувача За наявності | ✅ |
| recipient_code | string | Ідентифікаційний код одержувача За наявності | ✅ |
| payer_name | string | Найменування платника За наявності | ✅ |
| payer_code | string | Ідентифікаційний код платника За наявності | ✅ |
| recipient_pan | string | Реквізити платіжного засобу отримувача За наявності | ✅ |
| recipient_nban | string | Номер рахунку отримувача відкритого у небанківського надавача платіжних послуг За наявності | ✅ |
| payer_pan | string | Реквізити платіжного засобу платника За наявності | ✅ |
| payer_pr | string | Підстава платежу платником За наявності | ✅ |
| transfer_id | string | Ідентифікатор переказу За наявності | ✅ |
| recipient_bankid | string | Код банку одержувача За наявності | ✅ |
| recipient_bankname | string | Найменування банку одержувача За наявності | ✅ |
| recipient_ban | string | Номер рахунку в банку одержувача За наявності | ✅ |
| pop | string | Призначення платежу (одержувача) За наявності | ✅ |
Опис відповіді
Структура відповіді аналогічна чеку продажу (описано вище)
curl --location --request POST 'https://kasa.vchasno.ua/api/v3/fiscal/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN' \
--data-raw '{
"fiscal": {
"task": 15,
"receipt": {
"sum": 110.00,
"comment_up": "Зразок! Коментар шапки чеку",
"comment_down": "Зразок! Дякуємо",
"psp_id": "psp_id",
"psp_code": "psp_code",
"psp_name": "psp_name",
"rows": [
{
"code": "1",
"name": "Переказ коштів",
"pop": "Оплата за послуги користування ПРРО",
"recipient_name": "Вчасно Сервіс",
"recipient_code": "recipient_code",
"payer_name": "Кобилянська О. Ю.",
"payer_code": "payer_code",
"recipient_pan": "recipient_pan",
"recipient_nban": "recipient_nban",
"payer_pan": "payer_pan",
"payer_pr": "payer_pr",
"transfer_id": "transfer_id",
"recipient_bankid": "recipient_bankid",
"recipient_bankname": "recipient_bankname",
"recipient_ban": "recipient_ban",
"cnt": 1,
"price": 100.00,
"cost": 100.00,
"taxgrp": 2,
"comment": "Коментар",
"disc": 0
}
],
"pays": [
{
"type": 0,
"sum": 100.00,
"commission": 10.00,
"bank_id": "EVOPAY",
"rrn": "rrn1234"
}
]
}
}
}'
{
"task": 15,
"type": 1,
"ver": 6,
"source": "",
"device": "9999973304407430",
"tag": "09cc6d20aa059b2e4dbd033f6068a23d",
"dt": "20250318101337",
"res": 0,
"res_action": 0,
"errortxt": "",
"warnings": [],
"info": {
"task": 15,
"fisid": "9999973304407430",
"dataid": 126,
"doccode": "TEST_BHWyKU8KbdGkIQ",
"dt": "20250318101337",
"cashier": "",
"dtype": 0,
"isprint": 0,
"isoffline": false,
"safe": 940.5,
"shift_link": 15,
"docno": 4,
"cancelid": "TEST_BHWyKU8KbdGkIQ",
"qr": "https://kasa.vchasno.ua/c/TEST_BHWyKU8KbdGkIQ?id=TEST_BHWyKU8KbdGkIQ&sm=110.00&fn=9999973304407430&date=20250318&time=10:13:37",
"mac": "7b1deb9bf40167ec765a17945dc7b88320da6429f6a0d4fda60478871cb0abc9"
},
"error_extra": null
}
"task": 16)Додаткові поля об'єкту fiscal.receipt для чеку видачі коштів при переказі:
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| psp_id | string | Номер ПТКС / номер відокремленого підрозділу надавача платіжних послуг За наявності | ✅ |
| psp_name | string | Найменування надавача платіжних послуг За наявності | ✅ |
| psp_code | string | Податковий номер надавача платіжних послуг За наявності | ✅ |
Додаткові поля об'єкту fiscal.receipt.rows для чеку видачі коштів при переказі:
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| recipient_name | string | Назва одержувача За наявності | ✅ |
| recipient_code | string | Ідентифікаційний код одержувача За наявності | ✅ |
| payer_name | string | Найменування платника За наявності | ✅ |
| payer_code | string | Ідентифікаційний код платника За наявності | ✅ |
| recipient_pan | string | Реквізити платіжного засобу отримувача За наявності | ✅ |
| recipient_nban | string | Номер рахунку отримувача відкритого у небанківського надавача платіжних послуг За наявності | ✅ |
| payer_pan | string | Реквізити платіжного засобу платника За наявності | ✅ |
| payer_pr | string | Підстава платежу платником За наявності | ✅ |
| transfer_id | string | Ідентифікатор переказу За наявності | ✅ |
| recipient_bankid | string | Код банку одержувача За наявності | ✅ |
| recipient_bankname | string | Найменування банку одержувача За наявності | ✅ |
| recipient_ban | string | Номер рахунку в банку одержувача За наявності | ✅ |
| pop | string | Призначення платежу (одержувача) За наявності | ✅ |
Опис відповіді
Структура відповіді аналогічна чеку продажу (описано вище)
curl --location --request POST 'https://kasa.vchasno.ua/api/v3/fiscal/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN' \
--data-raw '{
"fiscal": {
"task": 16,
"receipt": {
"sum": 50.00,
"comment_up": "Зразок! Коментар шапки чеку",
"comment_down": "Зразок! Дякуємо",
"rows": [
{
"code": "1",
"name": "Переказ коштів",
"pop": "Оплата за послуги користування ПРРО",
"recipient_name": "Вчасно Сервіс",
"recipient_code": "41231992",
"payer_name": "Кобилянська О. Ю.",
"payer_code": "774635422",
"cnt": 1,
"price": 40.00,
"cost": 40.00,
"commission": 10.0,
"taxgrp": 2,
"comment": "Коментар",
"disc": 0
}
],
"pays": []
},
"cash": {
"type": 1,
"sum": 40.00,
"commission": 10.00,
"bank_id": "EVOPAY",
"rrn": "rrn1234"
}
}
}'
{
"task": 16,
"type": 1,
"ver": 6,
"source": "",
"device": "9999973304407430",
"tag": "b216810fd02c37ddeaa37a39944a0971",
"dt": "20250317124218",
"res": 0,
"res_action": 0,
"errortxt": "",
"warnings": [],
"info": {
"task": 16,
"fisid": "9999973304407430",
"dataid": 104,
"doccode": "TEST_Mo173a74miyVDg",
"dt": "20250317124218",
"cashier": "",
"dtype": 0,
"isprint": 0,
"isoffline": false,
"safe": 730,
"shift_link": 14,
"docno": 2,
"cancelid": "TEST_Mo173a74miyVDg",
"qr": "https://kasa.vchasno.ua/c/TEST_Mo173a74miyVDg?id=TEST_Mo173a74miyVDg&sm=50.00&fn=9999973304407430&date=20250317&time=12:42:18",
"mac": "12dbf3fcca612d99ebb85983d73cc91c3cf0ba01205ecdbe90932cccda20eab8"
},
"error_extra": null
}
"task": 3)Опис відповіді
Структура відповіді аналогічна чеку продажу (описано вище).
curl --location --request POST 'https://kasa.vchasno.ua/api/v3/fiscal/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN' \
--data-raw '{
"fiscal": {
"task": 3,
"cash": {
"type": 0,
"comment_up": "Зразок! Тестове внесення готівка",
"sum": 500.50,
"comment_down": "Зразок! Внесення"
}
}
}'
{
"task": 3,
"type": 1,
"ver": 6,
"source": "",
"device": "99997955555555",
"tag": "49c8b16e0ee40a2c3337fd97e9d0f8e7",
"dt": "20241114121717",
"res": 0,
"res_action": 0,
"errortxt": "",
"warnings": [],
"info": {
"task": 3,
"fisid": "99997955555555",
"dataid": 156,
"doccode": "TEST_Kh3BQlxRKP0cUg",
"dt": "20241114121717",
"cashier": "",
"dtype": 0,
"isprint": 0,
"isoffline": false,
"safe": 600.5,
"shift_link": 37,
"docno": 1,
"cancelid": "TEST_Kh3BQlxRKP0cUg",
"qr": "https://kasa.vchasno.ua/c/TEST_Kh3BQlxRKP0cUg?id=TEST_Kh3BQlxRKP0cUg&date=20241114&time=12:17:17&fn=99997955555555&sm=500.50&mac=ee8c01741c0b95cf28c6688e4e29b92fbb0c3fedf511482b8306ce0a7c75840e",
"mac": "ee8c01741c0b95cf28c6688e4e29b92fbb0c3fedf511482b8306ce0a7c75840e"
},
"error_extra": null
}
"task": 4)Опис відповіді
Структура відповіді аналогічна чеку продажу (описано вище)
curl --location --request POST 'https://kasa.vchasno.ua/api/v3/fiscal/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN' \
--data-raw '{
"fiscal": {
"task": 4,
"cash": {
"type": 0,
"comment_up": "Зразок! Тестова видача готівка",
"sum": 500.50,
"comment_down": "Зразок! Видача"
}
}
}'
{
"task": 4,
"type": 1,
"ver": 6,
"source": "",
"device": "99997955555555",
"tag": "6cd1fb1f115381545a486ecffae7e0ed",
"dt": "20241114121744",
"res": 0,
"res_action": 0,
"errortxt": "",
"warnings": [],
"info": {
"task": 4,
"fisid": "99997955555555",
"dataid": 157,
"doccode": "TEST_V4vcSOQWEKS06Q",
"dt": "20241114121744",
"cashier": "",
"dtype": 0,
"isprint": 0,
"isoffline": false,
"safe": 100,
"shift_link": 37,
"docno": 2,
"cancelid": "TEST_V4vcSOQWEKS06Q",
"qr": "https://kasa.vchasno.ua/c/TEST_V4vcSOQWEKS06Q?id=TEST_V4vcSOQWEKS06Q&date=20241114&time=12:17:44&fn=99997955555555&sm=500.50&mac=40657d5bda76650d3e80138c8e6eeb369dff20655ac0a1403f947446aae7d674",
"mac": "40657d5bda76650d3e80138c8e6eeb369dff20655ac0a1403f947446aae7d674"
},
"error_extra": null
}
"task": 10)Опис відповіді
Структура об'єкту info для завдань 10, 11 (X\Z-звіт)
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| task | integer | Тип завдання | ✅ |
| dt | string | Дата та час проведення чеку в форматі YYYYMMDDHHMMSS | ✅ |
| fisid | string | Фіскальний номер каси | ✅ |
| doccode | string | Фіскальний номер чеку (для X-звіту повертається пусте значення) | ✅ |
| docno | integer | Порядковий номер Z-звіту | ✅ |
| dataid | integer | Номер сформованого пакету | ✅ |
| shift_link | integer | Номер зміни каси | ✅ |
| shift_id | string | ID зміни | ✅ |
| cashier | string | Інформація про касира | ✅ |
| isoffline | bool | В якому режимі проведено чек
true - в офлайні false - в онлайні |
✅ |
| safe | float | Сума готівки в касі | ✅ |
| dtype | integer | Тип девайсу
0 - тестовий 1 - фіскальний |
✅ |
| taxes | array | Підсумки по податкам в розрізі податкових груп | ✅ |
| pays | array | Підсумки по видам оплат | ✅ |
| money | array | Підсумки по службовим внесенням\видачам | ✅ |
| cash | array | Підсумки по операціям видачі готівки | ✅ |
| summary | object | Загальні підсумки по обороту, податкам, знижкам по продажам і поверненням за зміну | ✅ |
| receipt | object | Підсумки по кількості чеків | ✅ |
| lastcheck | object | Об'єкт із даними про останній фіскальний чек в зміні. | ✅ |
Структура об'єктів масиву info.taxes (підсумки по податкам)
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| gr_code | integer | Код податкової групи | ✅ |
| base_sum_p | float | База, обкладена податком і акцизом (сума) по продажам | ✅ |
| base_sum_m | float | База, обкладена податком і акцизом (сума) по поверненням | ✅ |
| tax_name | string | Назва податку | ✅ |
| tax_fname | string | Назва податку (повна) | ✅ |
| tax_lit | string | Буква, що позначає податок | ✅ |
| tax_percent | float | Ставка податку | ✅ |
| tax_sum_p | float | Сума податку по продажам | ✅ |
| tax_sum_m | float | Сума податку по поверненням | ✅ |
| ex_name | string | Назва акцизу | ✅ |
| ex_percent | float | Ставка акцизу | ✅ |
| ex_sum_p | float | Сума акцизу по продажам | ✅ |
| ex_sum_m | float | Сума акцизу по поверненням | ✅ |
Структура об'єктів info.pays/money (підсумки по видам оплат, службовим внесенням/видачам)
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| type | integer | Код виду оплати | ✅ |
| name | string | Назва виду оплати | ✅ |
| sum_p | float | Сума по виду оплати по продажам | ✅ |
| sum_m | float | Сума по виду оплати по поверненням | ✅ |
| round_pu | float | Сума округлень, прийнятих в більшу сторону | ✅ |
| round_pd | float | Сума округлень прийнятих в меншу сторону | ✅ |
| round_mu | float | Сума округлень виданих в меншу сторону | ✅ |
| round_md | float | Сума округлень виданих в меншу сторону | ✅ |
Структура об'єктів info.сash (підсумки по операціям видачі готівки)
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| type | integer | Код виду оплати | ✅ |
| name | string | Назва виду оплати | ✅ |
| sum_m | float | Сума виданої готівки | ✅ |
| round_mu | float | Сума комісії | ✅ |
Структура об'єкту info.receipt (підсумки по кількості чеків)
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| count_p | integer | Кількість чеків продажу | ✅ |
| count_m | integer | Кількість чеків повернень | ✅ |
| last_docno_p | integer | Останній локальний номер чеку продажу в зміні | ✅ |
| last_docno_m | integer | Останній локальний номер чеку повернення в зміні | ✅ |
| count_transfer | integer | Кількість чеків переказу коштів | ✅ |
Структура об'єкту info.summary (загальні підсумки)
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| base_p | float | Загальний обіг по продажам (сума всіх податкових баз по продажам) | ✅ |
| base_m | float | Загальний обіг по поверненням (сума всіх податкових баз по поверненням) | ✅ |
| taxex_p | float | Загальна сума всіх податків і акцизів по продажам | ✅ |
| taxex_m | float | Загальна сума всіх податків і акцизів по поверненням | ✅ |
| disc_p | float | Загальна знижка по всім товарним позиціям всіх чеків | ✅ |
| disc_m | float | Загальна націнка по всім товарним позиціям всіх чеків | ✅ |
Структура об'єкту info.money_transfer
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| type | integer | Код виду оплати | ✅ |
| name | string | Назва | ✅ |
| sum_p | float | Чек переказу (гроші прийшли до нас) | ✅ |
| sum_m | float | Чек видачі коштів при переказі (кошти покидають нас) | ✅ |
| commission_p | float | Комісія переказу | ✅ |
| commission_m | float | Комісія видачі коштів | ✅ |
Структура об'єкту info.lastcheck (Об'єкт із даними про останній фіскальний чек в зміні)
У вибірку потрапляють чеки з task: 1, 2, 14, 15, 16.
Якщо у зміні немає чеків даного типу, відповідь info.lastcheck міститиме дефолтні значення для полів: integer=0, string=''.
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| packnum | integer | Номер пакету чеку ( == info.data_id з відповіді при фіскалізації чеку) | ✅ |
| docnum | integer | Номер чеку з зміні (локальний номер). | ✅ |
| fisnum | string | Фіскальний номер чеку. | ✅ |
| packtype | integer | Тип завдання чеку, відповідає task. | ✅ |
curl --location --request POST 'https://kasa.vchasno.ua/api/v3/fiscal/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN' \
--data-raw '{
"fiscal": {
"task": 10
}
}'
{
"task": 10,
"type": 1,
"ver": 6,
"source": "",
"device": "99997655555555",
"tag": "82cbb2831eee8f0d9617996670d45d43",
"dt": "20240521162236",
"res": 0,
"res_action": 0,
"errortxt": "",
"warnings": [],
"info": {
"task": 10,
"fisid": "99997655555555",
"dataid": 0,
"doccode": "",
"dt": "20240521162236",
"cashier": "",
"dtype": 0,
"isprint": 0,
"isoffline": false,
"safe": 377.88,
"shift_link": 0,
"shift_id": "6b72e68d-e596-4e11-a190-bedbded40cc2",
"docno": 0,
"receipt": {
"count_p": 7,
"count_m": 0,
"count_14": 1,
"count_transfer": 0,
"last_docno_p": 7,
"last_docno_m": 0
},
"summary": {
"base_p": 350,
"base_m": 0,
"taxex_p": 58.31,
"taxex_m": 0,
"disc_p": 100,
"disc_m": 0
},
"taxes": [
{
"gr_code": 1,
"base_sum_p": 350,
"base_sum_m": 0,
"base_tax_sum_p": 350,
"base_tax_sum_m": 0,
"base_ex_sum_p": 0,
"base_ex_sum_m": 0,
"tax_name": "ПДВ_А",
"tax_fname": "ПДВ 20%",
"tax_lit": "А",
"tax_percent": 20,
"tax_sum_p": 58.31,
"tax_sum_m": 0,
"ex_name": "",
"ex_percent": 0,
"ex_sum_p": 0,
"ex_sum_m": 0
}
],
"pays": [
{
"type": 0,
"name": "Готівка",
"sum_p": 350,
"sum_m": 0,
"round_pu": 0,
"round_pd": 0,
"round_mu": 0,
"round_md": 0
}
],
"money": [
{
"type": 0,
"name": "Готівка",
"sum_p": 500.5,
"sum_m": 572.62,
"round_pu": 0,
"round_pd": 0,
"round_mu": 0,
"round_md": 0
}
],
"cash": [
{
"type": 2,
"name": "Картка",
"sum_p": 0,
"sum_m": 100,
"round_pu": 0,
"round_pd": 0,
"round_mu": 1.01,
"round_md": 0
}
],
"money_transfer": []
},
"error_extra": null
}
"task": 11)Опис відповіді
Структура відповіді аналогічна X-звіту (описано вище)
curl --location --request POST 'https://kasa.vchasno.ua/api/v3/fiscal/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN' \
--data-raw '{
"fiscal": {
"task": 11
}
}'
{
"task": 11,
"type": 1,
"ver": 6,
"source": "",
"device": "99997655555555",
"tag": "704e5fca77edf44d2ce8e379bdd68429",
"dt": "20240131101319",
"res": 0,
"res_action": 0,
"errortxt": "",
"warnings": [],
"info": {
"task": 11,
"fisid": "99997655555555",
"dataid": 202,
"doccode": "TEST_cTMHA3qiU6DDvA",
"dt": "20240131101319",
"cashier": "",
"dtype": 0,
"isprint": 0,
"isoffline": false,
"safe": 400.5,
"shift_link": 46,
"shift_id": "6b72e68d-e596-4e11-a190-bedbded40cc2",
"docno": 46,
"receipt": {
"count_p": 1,
"count_m": 1,
"count_14": 1,
"count_transfer": 0,
"last_docno_p": 1,
"last_docno_m": 1
},
"summary": {
"base_p": 199.99,
"base_m": 199.99,
"taxex_p": 27.17,
"taxex_m": 27.17,
"disc_p": 0,
"disc_m": 0
},
"taxes": [
{
"gr_code": 3,
"base_sum_p": 99.99,
"base_sum_m": 99.99,
"base_tax_sum_p": 95.23,
"base_tax_sum_m": 95.23,
"base_ex_sum_p": 99.99,
"base_ex_sum_m": 99.99,
"tax_name": "ПДВ_Г",
"tax_fname": "ПДВ 20% + акциз 5%",
"tax_lit": "ГД",
"tax_percent": 20,
"tax_sum_p": 15.87,
"tax_sum_m": 15.87,
"ex_name": "Акцизний податок 5% Д",
"ex_percent": 5,
"ex_sum_p": 4.76,
"ex_sum_m": 4.76
},
{
"gr_code": 4,
"base_sum_p": 100,
"base_sum_m": 100,
"base_tax_sum_p": 100,
"base_tax_sum_m": 100,
"base_ex_sum_p": 0,
"base_ex_sum_m": 0,
"tax_name": "ПДВ_В",
"tax_fname": "ПДВ 7%",
"tax_lit": "В",
"tax_percent": 7,
"tax_sum_p": 6.54,
"tax_sum_m": 6.54,
"ex_name": "",
"ex_percent": 0,
"ex_sum_p": 0,
"ex_sum_m": 0
}
],
"pays": [
{
"type": 0,
"name": "Готівка",
"sum_p": 150,
"sum_m": 150,
"round_pu": 0.01,
"round_pd": 0,
"round_mu": 0.01,
"round_md": 0
},
{
"type": 2,
"name": "Картка",
"sum_p": 50,
"sum_m": 50,
"round_pu": 0,
"round_pd": 0,
"round_mu": 0,
"round_md": 0
}
],
"money": [
{
"type": 0,
"name": "Готівка",
"sum_p": 1001,
"sum_m": 500.5,
"round_pu": 0,
"round_pd": 0,
"round_mu": 0,
"round_md": 0
}
],
"cash": [
{
"type": 2,
"name": "Картка",
"sum_p": 0,
"sum_m": 100,
"round_pu": 0,
"round_pd": 0,
"round_mu": 1.01,
"round_md": 0
}
],
"money_transfer": []
},
"error_extra": null
}
"task": 1)Опис відповіді
Структуру відповіді можна подивитись у чеках без Національного кешбеку
curl --location --request POST 'https://kasa.vchasno.ua/api/v3/fiscal/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN' \
--data-raw '{
"fiscal": {
"task": 1,
"receipt": {
"sum": 200.00,
"rows": [
{
"code": "00001",
"code1": "73463253",
"code2": "54321",
"code_aa": [
"XX11111111111",
"XX11111111112"
],
"disc": 0,
"name": "Продукт 1",
"cnt": 1,
"price": 200.00,
"taxgrp": "1"
}
],
"pays": [
{
"purchase_dt": "20241210135800",
"type": 2,
"sum": 200.00,
"paysys": "paysys_test",
"rrn": "rrn_test",
"oper_type": "Оплата",
"cardmask": "cardmask****test",
"term_id": "term_id",
"bank_name": "bank_name",
"bank_id": "bank_id",
"auth_code": "auth_code",
"comment": "Зразок! СЛАВА*УКРАЇНІ",
"show_additional_info": true
}
]
}
}
}'
{
"task": 1,
"type": 1,
"ver": 6,
"source": "",
"device": "99997955555555",
"tag": "7ad71ed9dfd812f73b4c39d6067cf864",
"dt": "20241210135738",
"res": 0,
"res_action": 0,
"errortxt": "",
"warnings": [],
"info": {
"task": 1,
"fisid": "99997955555555",
"dataid": 166,
"doccode": "TEST_Qbpv_J3WUwT_lQ",
"dt": "20241210135738",
"cashier": "",
"dtype": 0,
"isprint": 0,
"isoffline": false,
"safe": 0,
"shift_link": 39,
"docno": 4,
"cancelid": "TEST_Qbpv_J3WUwT_lQ",
"qr": "https://kasa.vchasno.ua/c/TEST_Qbpv_J3WUwT_lQ?id=TEST_Qbpv_J3WUwT_lQ&date=20241210&time=13:57:38&fn=99997955555555&sm=200.00&mac=53591fe4bce3b067a06253fc787c6a3e7e0e8b8d1460ceb550612321043db92f",
"mac": "53591fe4bce3b067a06253fc787c6a3e7e0e8b8d1460ceb550612321043db92f"
},
"error_extra": null
}
"task": 2)Опис відповіді
Структуру відповіді можна подивитись у чеках без Національного кешбеку
curl --location --request POST 'https://kasa.vchasno.ua/api/v3/fiscal/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN' \
--data-raw '{
"fiscal": {
"task": 2,
"receipt": {
"sum": 200.00,
"rows": [
{
"purchase_receipt_fisn": "TEST_Qbpv_J3WUwT_lQ",
"purchase_rro_fisn": "99997955555555",
"purchase_receipt_dt": "20241210",
"code": "00001",
"code1": "73463253",
"code2": "54321",
"code_aa": [
"XX11111111111",
"XX11111111112"
],
"name": "Продукт 1",
"cnt": 1,
"price": 200.00,
"disc": 0,
"taxgrp": "1"
}
],
"pays": [
{
"type": 2,
"sum": 200.00,
"paysys": "paysys_test",
"rrn": "rrn_test",
"oper_type": "Оплата",
"cardmask": "cardmask****test",
"term_id": "term_id",
"bank_id": "bank_id",
"auth_code": "auth_code",
"comment": "Зразок! СЛАВА*УКРАЇНІ",
"show_additional_info": true
}
]
}
}
}'
{
"task": 2,
"type": 1,
"ver": 6,
"source": "",
"device": "99997955555555",
"tag": "9e079adf787629601a69148e3a997d4b",
"dt": "20241210135937",
"res": 0,
"res_action": 0,
"errortxt": "",
"warnings": [],
"info": {
"task": 2,
"fisid": "99997955555555",
"dataid": 167,
"doccode": "TEST_BLDVZH08aKpjrw",
"dt": "20241210135937",
"cashier": "",
"dtype": 0,
"isprint": 0,
"isoffline": false,
"safe": 0,
"shift_link": 39,
"docno": 1,
"cancelid": "TEST_BLDVZH08aKpjrw",
"qr": "https://kasa.vchasno.ua/c/TEST_BLDVZH08aKpjrw?id=TEST_BLDVZH08aKpjrw&date=20241210&time=13:59:37&fn=99997955555555&sm=200.00&mac=df6c67395c22429e58e1e29bb76a5997c464c5bad4388c9a4bd513448074687d",
"mac": "df6c67395c22429e58e1e29bb76a5997c464c5bad4388c9a4bd513448074687d"
},
"error_extra": null
}
"task": 18)POST https://kasa.vchasno.ua/api/v3/fiscal/execute
Хоч даний АПІ запит має шлях як у запитів фіскалізації чеків, при його обробці не виконуються запити до ДПС, лише повертається статус з сервісу Вчасно.Каса.
Опис відповіді
Структура об'єкту info для завдання 18 (статус пРРО)
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| edrpou | string | ЄДРПОУ/ІПН | ✅ |
| fisid | string | Фіскальний номер каси | ✅ |
| isFis | integer | ПРРО є фіскальним
0 - не фіскальний (тестовий) 1 - фіскальний |
✅ |
| shift_status | integer | Статус зміни:
-1 - невідомо 0 - закрита 1 - відкрита |
✅ |
| shift_dt | string | Дата та час відкриття активної зміни:
"" - невідомо інакше - дата и та час відкриття в форматі YYYYMMDDHHMMSS |
✅ |
| shift_id | string | ID зміни | ✅ |
| online_status | integer | Статус зв'язку з ДФС:
0 - online 1 - offline |
✅ |
| sign_status | integer | Статус ЕЦП:
-1 - невідомо 0 - підпис не використовується 1 - підпис є і нема попереджень 2 - підпис є попередження 3 - підпису нема або помилка зараз завжди повертається -1, інші статуси буде імплементовано пізніше |
✅ |
| safe | float | Сума залишку готівки в касі | ✅ |
curl --location --request POST 'https://kasa.vchasno.ua/api/v3/fiscal/execute' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN' \
--data-raw '{
"fiscal": {
"task": 18
}
}'
{
"task": 18,
"type": 1,
"ver": 6,
"source": "",
"device": "99999955555555",
"tag": "42fff4e7e105865f7155ac6a08cf3869",
"dt": "20250321093818",
"res": 0,
"res_action": 0,
"errortxt": "",
"warnings": [],
"info": {
"edrpou": "55555555",
"fisid": "99999955555555",
"isFis": 0,
"shift_status": -1,
"shift_dt": "",
"shift_id": "6b72e68d-e596-4e11-a190-bedbded40cc2",
"online_status": 0,
"sign_status": -1,
"safe": 0
},
"error_extra": null
}
GET https://kasa.vchasno.ua/api/v3/check-task/<check_fisn>
Запит на отримання JSON-у запиту фіскалізованого чеку. Повертає весь json body, по якому було створено чек
check_fisn - Фіскальний номер чеку
Опис відповіді
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| fiscal_number | string | Фіскальний номер чеку | ✅ |
| task | object | boby чеку (опис вище) | ✅ |
curl --location --request GET 'https://kasa.vchasno.ua/api/v3/check-task/<check_fisn>' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN'
{
"fiscal_number": "TEST_FFFFFFFFFF",
"task": {
"tag": "af19aacc778509cb4a9fbf28ffd4a68c",
"device": "99997655555555",
"fiscal": {
"task": 1,
"cashier": "",
"receipt": {
"sum": 199.99,
"pays": [
{
"sum": 150,
"type": 0,
"change": 50,
"comment": "Зразок! Тест"
},
{
"rrn": "rrn_test",
"sum": 50,
"type": 2,
"paysys": "paysys_test",
"bank_id": "bank_id",
"comment": "Зразок! СЛАВА*УКРАЇНІ",
"term_id": "term_id",
"cardmask": "cardmask****test",
"auth_code": "auth_code",
"oper_type": "Оплата",
"commission": 1,
"show_additional_info": true
}
],
"rows": [
{
"cnt": 2,
"code": "00001",
"disc": 10,
"name": "Продукт 1",
"code1": "73463253",
"code2": "54321",
"price": 55,
"taxgrp": "4",
"code_aa": [
"XX11111111111",
"XX11111111112"
],
"comment": "Зразок! Коментар"
},
{
"cnt": 1,
"code": "00002",
"disc": -10,
"name": "Продукт 2",
"code1": "73463254",
"code2": "45667",
"price": 89.99,
"code_a": "XX11111111113",
"taxgrp": 3,
"comment": "Зразок! \"Have a good day\""
}
],
"round": 0.01,
"comment_up": "Зразок! Коментар шапки чеку",
"comment_down": "Зразок! ДЯКУЄМО за покупку"
}
},
"source": ""
}
}
GET https://kasa.vchasno.ua/c/{fiscal_number}.json
Запит на отримання фіскалізованого чеку у форматі JSON. Цей роут не працює з сервісними чеками та Z-звітом.
fiscal_number - Фіскальний номер чеку
Типи даних:
Опис полів:
| Ключ | Зміст |
|---|---|
| fiscal_number | Фіскальний номер чеку |
| company_name | Назва компанії |
| notification_company_name | Назва компанії для сповіщень |
| company_edrpou | ЄДРПОУ |
| company_tax_number | ПН |
| shop_name | Назва Торгової Точки |
| shop_type | Тип Торгової Точки |
| shop_address | Адреса ТТ |
| rro_fiscal_number | Фіскальний номер ПРРО |
| is_offline | Чи видано чек в офлайні |
| is_test | Чи це тестовий чек |
| date_created | Дата створення запису чеку |
| check_flow | 0-продаж,1-повернення,2-службове внесення-винесення,4-переказ коштів,7-видача коштів при переказі,14-видача готівки |
| check_url | Посилання на чек в нашому кабінеті |
| qr_content | Сформований рядок для QR коду в чеці |
| target_url | Посилання на чек в ДПС |
| data | Об'єкт з деталями по чеку |
Об'єкт data
| Ключ | Зміст |
|---|---|
| data:cash | Об'єкт, опис окремо |
| data:check_type | 1-продаж,2-повернення,3-сервісне внесення,4-сервісне винесення,14-видача готівки,15-переказ коштів,16-видача готівки при переказі |
| data:items | Список об'єктів, опис окремо |
| data:close | Об'єкт, опис окремо |
| data:pays | Список об'єктів, опис окремо |
| data:taxes | Список об'єктів, опис окремо |
| data:markups | Сума націнки |
| data:top_comment | Верхній коментар чеку. Список з рядків, розділених по довжині в N символів |
| data:last_comment | Верхній коментар чеку. Структура як у верхнього коментаря. |
| data:date | Дата з чеку |
| data:mac | Контрольне число чеку |
| data:rounding | Сума заокруглення |
| data:service_move_data | Об'єкт, опис окремо |
| data:global_discounts | Список, опис окремо |
Об'єкт data:cash - в чеці видачі готівки
| Ключ | Зміст |
|---|---|
| cash_sum | Сума готівки |
| commission | Сума комісії |
| bank_id | Ідентифікатор єквайера торговця |
| term_id | Ідентифікатор платіжного пристрою |
| cardmask | Реквізити ЕПЗ |
| auth_code | Код авторизації |
| paysys | Назва платіжної системи |
| rrn | Ідентифікатор транзакції |
Об'єкт data:items
| Ключ | Зміст |
|---|---|
| name | Назва товару, послуги, або операції |
| tg_print | Позначення податку, яким обкладається товар |
| sum | Сума операції |
| cnt | Кількість |
| price | Ціна товару |
| code | Код товару в обліковій системі підприємства |
| code1 | Штрихкод |
| code2 | Код товарної підкатегорії згідно з УКТЗЕД |
| comment | Список рядків коментарів |
| excise_codes | Список з акцизних кодів |
| markup | Об'єкт, націнка |
| discount | Об'єкт, знижка |
Об'єкт data:items::markup/discount
| Ключ | Зміст |
|---|---|
| sum | Сума операції |
| tg_print | Позначення податку |
Об'єкт data:close
| Ключ | Зміст |
|---|---|
| sum | Сума чеку |
| to_pay | Сума до оплати |
Об'єкт data:pays
| Ключ | Зміст |
|---|---|
| name | Тип |
| pay_sum | Сума оплати |
| change | Решта |
| sum | Сума з урухуванням решти |
| comment | Коментар |
| bank_id | Ідентифікатор єквайера торговця |
| term_id | Ідентифікатор платіжного пристрою |
| operation | Тип операції(платіж/повернення/переказ тощо) |
| cardmask | Реквізити ЕПЗ |
| auth_code | Код авторизації |
| commission | Сума комісії |
| paysys | Назва платіжної системи |
| rrn | Ідентифікатор транзакції |
Об'єкт data:taxes
| Ключ | Зміст |
|---|---|
| tax_caption | позначення податку |
| tax_percent | відсоток податку |
| tax_sum | сума податку |
| dt_caption | назва додаткового збору (акциз/в.збір) |
| dt_percent | відсоток додаткового збору |
| dt_sum | сума додаткового збору |
Об'єкт data:service_move_data
| Ключ | Зміст |
|---|---|
| tag | I-внесення, O-видача |
| name | назва оплати |
Об'єкт data:global_discounts
| Ключ | Зміст |
|---|---|
| sum | сума загальної знижки |
| name | назва загальної знижки |
curl --location --request GET 'https://kasa.vchasno.ua/c/{fiscal_number}.json' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN'
{
"fiscal_number": "TEST_KkcD6uzuYeq08g",
"company_name": "Приватне підприємство \"Тестер\"",
"notification_company_name": "Приватне підприємство \"Тестер\"",
"company_edrpou": "55555555",
"company_tax_number": "",
"shop_name": "Тестова торгова точка",
"shop_type": "Тип Торгової Точки",
"shop_address": "Україна, м.Київ, вул. Хрещатик, 999",
"rro_fiscal_number": "99997655555555",
"is_offline": false,
"is_test": true,
"date_created": "2024-01-31T10:05:55.798668+02:00",
"check_flow": 0,
"check_url": "https://kasa.vchasno.ua/c/TEST_KkcD6uzuYeq08g",
"qr_content": "https://kasa.vchasno.ua/c/TEST_KkcD6uzuYeq08g?id=TEST_KkcD6uzuYeq08g&date=20240131&time=10:05:55&fn=99997655555555&sm=200.00&mac=160cf7bebc397274f765d73d6174b3dfc8b299786070227a31f0483a80c7d9b6",
"target_url": "https://kasa.vchasno.ua/c/TEST_KkcD6uzuYeq08g?id=TEST_KkcD6uzuYeq08g&date=20240131&time=10:05:55&fn=99997655555555&sm=200.00&mac=160cf7bebc397274f765d73d6174b3dfc8b299786070227a31f0483a80c7d9b6",
"data": {
"cash": null,
"check_type": "0",
"items": [
{
"name": "Продукт 1",
"tg_print": "В",
"sum": "110.00",
"cnt": "2.000",
"price": "55.00",
"code": "00001",
"code1": "73463253",
"code2": "54321",
"comment": [
"Зразок! Коментар"
],
"excise_codes": [
"XX11111111111",
"XX11111111112"
],
"discount": {
"sum": "10.00",
"tg_print": "В"
},
"markup": null
},
{
"name": "Продукт 2",
"tg_print": "ГД",
"sum": "89.99",
"cnt": "1.000",
"price": "89.99",
"code": "00002",
"code1": "73463254",
"code2": "45667",
"comment": [
"Зразок! \"Have a good day\""
],
"excise_codes": [
"XX11111111113"
],
"discount": null,
"markup": {
"sum": "10.00",
"tg_print": "ГД"
}
}
],
"close": {
"sum": "199.99",
"to_pay": "200.00"
},
"pays": [
{
"name": "Готівка",
"pay_sum": "200.00",
"change": "50.00",
"sum": "150.00",
"comment": [
"Зразок! Тест"
],
"bank_id": "",
"term_id": "",
"operation": "Оплата",
"oper_type": "Оплата",
"cardmask": "",
"auth_code": "",
"commission": "0.00",
"paysys": "",
"rrn": "",
"show_additional_info": true
},
{
"name": "Картка",
"pay_sum": "50.00",
"change": "0.00",
"sum": "50.00",
"comment": [
"Зразок! СЛАВА*УКРАЇНІ"
],
"bank_id": "bank_id",
"term_id": "term_id",
"operation": "Оплата",
"oper_type": "Оплата",
"cardmask": "cardmask****test",
"auth_code": "auth_code",
"commission": "1.00",
"paysys": "paysys_test",
"rrn": "rrn_test",
"show_additional_info": true
}
],
"taxes": [
{
"tax_caption": "ПДВ_Г",
"tax_percent": "20",
"tax_sum": "15.87",
"dt_caption": "Акцизний податок 5% Д",
"dt_percent": "0.05",
"dt_sum": "4.76"
},
{
"tax_caption": "ПДВ_В",
"tax_percent": "7",
"tax_sum": "6.54",
"dt_caption": "",
"dt_percent": "0.00",
"dt_sum": "0.00"
}
],
"markups": "10.00",
"top_comment": [
"Зразок! Коментар шапки чеку"
],
"last_comment": [
"Зразок! ДЯКУЄМО за покупку"
],
"date": "2024-01-31T10:05:55+02:00",
"mac": "b7c9d8cc246acaaace9d2ce1b2c375173a9262d87a34067d56a89351bd23087a",
"rounding": "0.01",
"service_move_data": null
}
}
GET https://kasa.vchasno.ua/api/v3/shifts
Запит на отримання змін по касі, ідентифікатором каси служить токен каси.
За замовчуванням повертає відсортований по date_closed список об'єктів з лімітом 100
Додаткові параметри: пагінація page=n&limit=n (значення n не може бути менше 1)
Опис відповіді об'єкту items
| Ключ | Зміст |
|---|---|
| id | Ідентифікатор зміни |
| date_started | Дата і час початку зміни |
| date_closed | Дата і час кінця зміни |
| cash_started | Залишок готівки на початку зміни |
| cash_current | Поточний залишок готівки |
| cash_closed | Залишок готівки при закритті зміни |
curl --location --request GET 'https://kasa.vchasno.ua/api/v3/shifts' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN'
{
"page_num": 1,
"page_size": 100,
"has_prev": false,
"has_next": false,
"items": [
{
"id": "0f9c3ef1-7f6d-d8ee-5d54-2fa68dc8b6cb",
"date_started": "2024-05-22T13:42:12+03:00",
"date_closed": "2024-05-22T13:42:52+03:00",
"cash_started": 0,
"cash_current": 5000,
"cash_closed": 5000
},
{
"id": "0f9c3eeb-91cb-340a-e3ca-e5eb65124614",
"date_started": "2024-05-22T13:41:33+03:00",
"date_closed": "2024-05-22T13:42:00+03:00",
"cash_started": 0,
"cash_current": 0,
"cash_closed": 0
}
]
}
GET https://kasa.vchasno.ua/api/v3/shift/checks?shift_id=<shift_id>
Запит на отримання чеків по зміні, shift_id - ідентифікатор зміни
За замовчуванням повертає відсортований по date_created список об'єктів з лімітом 100
Додаткові параметри: пагінація page=n&limit=n (значення n не може бути менше 1)
Опис відповіді об'єкту items
| Ключ | Зміст |
|---|---|
| id | Ідентифікатор чеку |
| shift_id | Ідентифікатор зміни |
| local_number | Локальний номер чеку відносно зміни |
| fiscal_number | Фіскальний номер чеку |
| type | Тип чеку: chk - чек z_report - З-звіт service - сервісний чек |
| status | Підтвердження фіскалізації чеку:
0 - Unknown, не визначений; 1 - OK, чек фіскалізовано, надано номер; -1 - ERROR_VEREFY, помилка перевірки підпису; -2 - ERROR_CHECK, помилка перевірки РРО; -3 - ERROR_SAVE, помилка запису; -4 - ERROR_UNKNOWN, загальна помилка; -5 - ERROR_TYPE, помилка типу посилки; -6 - ERROR_NOT_PREV_ZREPORT, нема Z-звіту за попередній день; -7 - ERROR_XML, невірний формат XML ( структура , фіскальний номер); -8 - ERROR_XML_DATE, невірний формат XML дата не відповідає Check.date; -9 - ERROR_XML_CHK, невірний формат XML чеку; -10 - ERROR_XML_ZREPORT, невірний формат Z-звіту; -11 - ERROR_OFFLINE_168, РРО заблокований, перевищено ліміт 168 годин офлайну; -12 - ERROR_BAD_HASH_PREV, невірний хеш попереднього чеку; -13 - ERROR_NOT_REGISTERED_RRO, не зареєстровано ПРРО; -14 - ERROR_NOT_REGISTERED_SIGNER, не зареєстрований підписант; -15 - ERROR_NOT_OPEN_SHIFT, не відкрита зміна; -16 - ERROR_OFFLINE_ID, невірний оффлайн ID |
| source | Ідентифікація джерела видачі чеку:
1 - device_manager, 2 - кабінет без офлайну або аварійне закриття, 3 - веб API, 4 - автозгенерований кабінетом, 5 - мобільний додаток, 6 - вебкабінет з офлайном |
| date_created | Дата створення |
| data_id | Загальний номер чеку відносно каси |
| check_hash | Хеш чеку, генерація SHA256 від xml чеку |
| flow | Який чек створено:
0 - Чек продажу 1 - Чек повернення 2 - Службовий чек внесення коштів 4 - Переказ коштів 7 - Чек видачі коштів при переказі 8 - Відкриття зміни 9 - Чек переходу в офлайн 10 - Чек виходу з офлайн 12 - Запит фіскальних номерів 14 - Видача готівки |
| safe_cash | Залишок готівки у касі |
| tag | Мітка завдання для ідентифікації |
| is_offline | Чи видано чек в офлайні |
curl --location --request GET 'https://kasa.vchasno.ua/api/v3/shift/checks?shift_id=<shift_id>' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN'
{
"page_num": 1,
"page_size": 100,
"has_prev": false,
"has_next": false,
"items": [
{
"id": "0f878d94-cbb2-79a3-be3b-3afebe38aa12",
"shift_id": "0f878d90-1d33-94b3-52e1-4a1b522eb12b",
"local_number": 6,
"fiscal_number": "TEST_BwA32_ONSQuY-g",
"type": "z_report",
"status": 1,
"source": 6,
"date_created": "2024-02-09T15:57:14.052979+02:00",
"data_id": 19,
"check_hash": "40a965329822e629305acc6d45092f785e581fe080b44a03a2e56c0aa921612f",
"flow": null,
"safe_cash": 127700,
"tag": "78a513d91ed485c4d40c1494ce305a91",
"is_offline": false
},
{
"id": "0f878d93-8ac6-bae7-f2b8-5a6b45a339ca",
"shift_id": "0f878d90-1d33-94b3-52e1-4a1b522eb12b",
"local_number": 2,
"fiscal_number": "TEST_p72E1ZvyYG7nWg",
"type": "chk",
"status": 1,
"source": 6,
"date_created": "2024-02-09T15:57:05.837365+02:00",
"data_id": 18,
"check_hash": "171c1fde6dd0e1c18fdeac1bc7853cf728bfb00fc06b15bad1d02d2902d912db",
"flow": 2,
"safe_cash": null,
"tag": "8x2pdUWGzZAWrj6ECCiMm",
"is_offline": false
},
{
"id": "0f878d92-a070-d84a-4e38-70fc8e56bbbd",
"shift_id": "0f878d90-1d33-94b3-52e1-4a1b522eb12b",
"local_number": 1,
"fiscal_number": "TEST_6dBu2HbHwwXlkg",
"type": "chk",
"status": 1,
"source": 6,
"date_created": "2024-02-09T15:56:59.838403+02:00",
"data_id": 17,
"check_hash": "2e71d9890a2f42732d276e42ff6f0f655245d08da88ba7f91177722f3b8dad0b",
"flow": 2,
"safe_cash": null,
"tag": "OOFDZ1RQW2P9wPYE3WuTa",
"is_offline": false
},
{
"id": "0f878d91-94c8-71d1-2718-1fc6c2891dd0",
"shift_id": "0f878d90-1d33-94b3-52e1-4a1b522eb12b",
"local_number": 2,
"fiscal_number": "TEST_3cN5dDgeeOOo4A",
"type": "chk",
"status": 1,
"source": 6,
"date_created": "2024-02-09T15:56:52.986339+02:00",
"data_id": 16,
"check_hash": "da41659c4044d14d89b7634a553c6c16981de58ab31189d5b76fd23fe6fa778c",
"flow": 0,
"safe_cash": null,
"tag": "y5aLwUMX5OTenyBV0jM0w",
"is_offline": false
},
{
"id": "0f878d90-d072-605a-975f-5ef986d6e9b5",
"shift_id": "0f878d90-1d33-94b3-52e1-4a1b522eb12b",
"local_number": 1,
"fiscal_number": "TEST_EixB0aXSylhhJw",
"type": "chk",
"status": 1,
"source": 6,
"date_created": "2024-02-09T15:56:47.960189+02:00",
"data_id": 15,
"check_hash": "f13025fe880c2c9c111540df49d8a8c074d13104d2630a593aaf9d437084fc18",
"flow": 0,
"safe_cash": null,
"tag": "wX764EHfcV83mAcbuIVEr",
"is_offline": false
},
{
"id": "0f878d90-1d41-cef0-4f84-667b4f889154",
"shift_id": "0f878d90-1d33-94b3-52e1-4a1b522eb12b",
"local_number": 0,
"fiscal_number": "TEST_nUgNU8xboXD9Jw",
"type": "service",
"status": 1,
"source": 6,
"date_created": "2024-02-09T15:56:43.371487+02:00",
"data_id": 14,
"check_hash": "67e9dd0df87c1353043fed0b679817ba0579493f4aa559d399c5b538a45ec0e1",
"flow": 8,
"safe_cash": 10000,
"tag": "3627c284440d2b67a22ea580a75537bb",
"is_offline": false
}
]
}
POST https://kasa.vchasno.ua/api/v3/notifications/checks
Запит для надсилання посилання на чек користувачу через email, sms чи viber.
Структура запиту
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| recipient | string | email або номер телефону отримувача | ✅ |
| channel | string | Канал відправки:
- sms - viber - cascade (спробує надіслати через viber, якщо користувач не зареєстрований у viber - відправить sms) |
✅ |
| check | string | Фіскальний номер чеку | ✅ |
Опис відповіді
| Ключ | Тип json даних | Зміст | Обов'язковий |
|---|---|---|---|
| recipient | string | email або номер телефону отримувача | ✅ |
| channel | string | Канал відправки:
- sms - viber - cascade (спробує надіслати через viber, якщо користувач не зареєстрований у viber - відправить sms) |
✅ |
| check_id | string | ID надісланого чеку | ✅ |
Текст sms:
Chek vid {COMPANY_NAME} za {CHECK_DATE}
https://kasa.vchasno.ua/c/{CHECK_FN}
Текст viber:
Ви отримали фіскальний чек від {COMPANY_NAME}
https://kasa.vchasno.ua/c/{CHECK_FN}
curl --location --request POST 'https://kasa.vchasno.ua/api/v3/notifications/checks' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN' \
--data-raw '{
"recipient": "RECIPIENT_EMAIL",
"channel": "email",
"check": "CHECK_FISCAL_NUMBER"
}'
{
"recipient": "RECIPIENT_EMAIL",
"channel": "email",
"check_id": "0f85b1ee-75fa-ea9f-b3dd-b4c0e88a5d64"
}
POST https://kasa.vchasno.ua/api/v3/reports/acquire?report_type=<type>
report_type приймає такі значення:
z_reports - З-звіти. Фіскальні звітні чеки у вигляді таблиці (максимум 366 днів)z_reports_views - З-звіти (періодичні звіти). Фіскальні звітні чеки (максимум 366 днів)z_reports_archive - Архів z-звітів. Архів зі з-звітами (html) на кожну касу + "zreports.csv", що містить ФН каси, ФН звіту, дату звітуchecks - Звіт по продажах. Всі продажі та повернення товарів (максимум 31 день, до 50 тис. чеків)checks_split_products - Звіт по чеках. Чеки продажу та повернення (максимум 31 день, до 10 тис. чеків)checks_daily - Звіт про щоденні чеки. Чеки продажу та повернення згруповані по дням (максимум 31 день)checks_control_tape - Контрольна стрічка. Основна інформація по чеках (максимум 31 день, до 300 тис. чеків)checks_archive - Контрольна стрічка + архів чеків. Копії розрахункових документів (максимум 31 день, до 1 тис. чеків)z_reports_funds_circulation - Оборот компанії. Сума всіх продажів компанії (максимум 366 днів)rros_offline_time - Лічильник offline. Кількість годин в режимі офлайн (максимум 366 днів)Повертає id сформованого звіту
curl --location --request POST 'https://kasa.vchasno.ua/api/v3/reports/acquire?report_type=<type>' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN' \
--data-raw '{
"date_from": "2024-04-19T09:00:00",
"date_to": "2024-04-19T13:59:59"
}'
{
"id": "0f959fa6-d771-5421-91df-389c210faa9e",
"pollingInterval": {
"milliseconds": 2000
}
}
GET https://kasa.vchasno.ua/api/v3/reports/download?id=<report_id>
id - ідентифікатор сформованого звіту
Опис відповіді
| Ключ | Зміст |
|---|---|
| id | Ідентифікатор |
| status | Статус |
| type | Тип звіту |
| filename | Назва файлу |
| content | Дані у форматі base64 |
curl --location --request GET 'https://kasa.vchasno.ua/api/v3/reports/download?id=<report_id>' \
--header 'Content-Type: application/json' \
--header 'Authorization: VCHASNO_KASA_PRRO_TOKEN'
{
"id": "0f959fa6-d771-5421-91df-389c210faa9e",
"status": "done",
"type": "checks",
"filename": "Vchasno_Kasa_checks_19_04_2024_19_04_2024.xlsx",
"content": "cGxhY2Vob2xkZXI="
}
У відповіді на запит фіскалізації наявні поля, що відображають статус операції.
res_action у якому система рекомендує наступні дії дотримання транзакційної цілісності. В першу чергу, слід звертати увагу на значення цього поля і в разі отримання значення 3 - дивитися додаткові поля з кодами/текстом помилок.res - це код відповіді, що дорівнює 0 у разі успішного виконання запиту. У разі помилки поле містить код помилки.errortxt містить текст помилки та може містити технічну інформацію, призначене більше для логування та подальших досліджень причин.error_extra: object | null - опційний об'єкт, в якому повертаються деталі щодо помилки. Наприклад перелік полів, та причини, чому вони не пройшли валідацію.{
"res": 1001,
"res_action": 3,
"errortxt": "Сума всіх позицій товару відрізняється від загальної суми чеку",
"error_extra": {
"sum": 10050,
"rows_sum": 10000
}
}
res_actionres, errortxt, error_extra, котрі містять деталі помилки.Повторні запити слід надсилати з параметром tag рівним початковому запиту/відповіді.
res| Код | Опис |
|---|---|
| 1001 | Помилка валідації вхідних даних |
| 1006 | Внутрішня помилка сервісу Вчасно.Каса |
| 1011 | Об'єкт не знайдено у базі |
| 1013 | Для вхідних даних не реалізовано функціонал (Not Implemented Error) |
| 1014 | Об'єкт вже існує у базі |
| 1015 | Каса зайнята попереднім запитом (Lock Error) |
| 1016 | Перевищено таймаут на обробку запиту |
| 1017 | Дію заборонено (Action not allowed error) |
| 1019 | Ключ ЕЦП не зареєстровано у ДПС |
| 1020 | Каса не активна (скасована) у ДПС |
| 1029 | Помилка пов'язана з підписами чи ключами ЕЦП |
| 1062 | Ключ ЕЦП скасовано у АЦСК |
| 2000 | Базова помилка. Може бути пов'язана з різними причинами (дивитися значення поля “errortxt”) |
| 2001 | Помилка зв'язку з ДПС |
| 2002 | Запит у ДПС перевищив допустимий таймаут |
| 2003 | Отримано код відповіді від ДПС, який вважається "випадковою помилкою" |
| 2004 | Отримано код критичної помилки під час роботи з ДПС, запит не може бути виконаний (точніший опис причини дивитись у полі “errortxt”) |
| 2005 | Каса (ПРРО) у стані колізії |
| 2006 | Помилка під час перевірки хешу чеку |
| 2007 | Необхідно відкрити зміну |
| 2008 | Необхідно закрити зміну |
| 2009 | ПРРО заблоковано |
| 2011 | Помилка при спробі змінити режим роботи каси |
| 2012 | Не можна виконати дію, оскільки останній чек було проведено з Девайс Менеджеру. Для проведення чеків з іншого джерела потрібно закрити зміну у Девайс Менеджері. |
АПІ запити на фіскалізацію (POST /api/v3/fiscal/execute) повертають 200 OK HTTP статус також при клієнтських помилках (деталі по помилці у тілі відповіді).
Виключення:
401 - Помилка при авторизації, потрібно перевірити авторизаційний токен каси5** - Непередбачена помилка на стороні сервісу, потрібно повторити запит пізніше.| Дата | Зміни |
|---|---|
| 2026-02-17 | Додано параметр shift_id у відповіді на task: 0,10,11,18 |
| 2025-08-18 | Додано можливість задавати список загальних знижок (fiscal.receipt.discounts). Запит "Статус пРРО" перенесено до службових запитів. |
| 2025-05-28 | data.global_discounts у відповіді на json чеку |
| 2025-05-06 | info.lastcheck об'єкт у відповіді при запиті на x/z-звіт |
| 2025-04-28 | Додано можливість вивантажити архів z-звітів |
| 2025-03-03 | Додано нові засоби оплат |
| 2024-12-10 | Додано нові параметри purchase_dt в об'єкт fiscal.receipt.pays та purchase_receipt_dt в об'єкт fiscal.receipt.rows по програмі "Національний кешбек" |
| 2024-11-14 | Додано параметр bank_name в об'єкт fiscal.receipt.pays Додано mac параметр у відповідь фіскалізації чеків |
| 2024-09-23 | Додано підтримку загальної знижки на чек. Параметри disc та disc_type в об'єкт fiscal.receipt |
| 2024-09-03 | Додано нові параметри purchase_receipt_fisn та purchase_rro_fisn в об'єкт fiscal.receipt для чеків повернення по програмі "Національний кешбек" |
| 2024-04-19 | Додано чеки передплати, післясплати. Додано запити створення / вивантаження звітів |
| 2024-02-23 | Додано службові запити: Отримати зміни по касі, Отримати чеки по зміні |
| 2024-02-15 | Розширено формати поля userinfo: phone Запит на отримання JSON чеку повертає shop_type |
| 2024-01-31 | Оновлено документацію. Додано опис error_extra. Прибрано fiscal.receipt.pays.currency (параметр не оброблювався) |
| 2023-09-18 | Розширення виводу ЕПЗ даних |
| 2023-07-18 | Додано перегляд фіскалізованого JSON чеку |
| 2023-03-16 | Додано підтримку чеку видачі готівки (task 14) |
| 2022-09-07 | Внесено інформацію про автоматичне відкриття зміни разом із проведенням першого чеку (Запити на фіскалізацію -> Відкриття зміни) |
| 2022-08-04 | Initial version |
/s to any path — /s/uk/cloud/CloudAPI. Content renders via JavaScript; plain HTML fetchers should use the /s/ URL.