PRRO.cloud

Контакти

Відповідаємо в робочі дні.

Кабінет

OpenAPI v0.6.0

Документація API

REST API сервісу PRRO.cloud: реєстрація чеків, керування змінами, білінг і вебхуки. Джерело правди — специфікація OpenAPI 3.1; цю сторінку згенеровано з неї під час збірки, тож довідник не розходиться з контрактом.

Базова адреса: https://api.prro.cloud

Усі шляхи на цій сторінці — відносні до базової адреси. Тіла запитів і відповідей — JSON (application/json), кодування UTF-8.

Зміст сторінки

Автентифікація

Машинні запити автентифікуються довгоживучим Bearer-токеном (JWT). Випустіть його в кабінеті PRRO.cloud у розділі токенів — значення показується рівно один раз, збережіть його одразу. Токен передається в заголовку Authorization: Bearer <token>; відкликання в кабінеті набирає чинності на всіх репліках протягом ~2 секунд. Перевірити токен можна запитом:

curl -H "Authorization: Bearer $PRRO_TOKEN" \
  "$BASE_URL/v1/whoami"

Швидкий старт

Разовий виклик, щоб узяти id каси, і три запити фіскального циклу — перший чек зареєстровано. На касі в режимі test цей цикл безкоштовний: ДПС перевіряє документи, але не фіскалізує їх. Пишете на Go — той самий цикл є в клієнті prro-go: ключі ідемпотентності, повтори та перевірку підпису вебхуків він бере на себе.

  1. Візьміть id каси.

    Токен показує ті каси, на які він діє. id з відповіді — те саме значення, що далі йде у cash_register_id чека і в шляхи /cash-registers/{id}; фіскальний номер для цього не годиться. Виклик разовий — збережіть id у налаштуваннях інтеграції.

    curl -H "Authorization: Bearer $PRRO_TOKEN" \
      "$BASE_URL/v1/cash-registers"
  2. Відкрийте зміну.

    Якщо каса не в режимі shift_mode: manual, цей крок можна пропустити — перший чек відкриє зміну сам.

    curl -X POST "$BASE_URL/v1/cash-registers/$REGISTER_ID/shifts" \
      -H "Authorization: Bearer $PRRO_TOKEN" \
      -H "Idempotency-Key: shift-2026-07-14" \
      -H "Content-Type: application/json" \
      -d '{"cashier": "Каса самообслуговування"}'
  3. Зареєструйте чек.

    Суми — десяткові рядки, а не числа. У синхронному режимі (за замовчуванням) фіскальний номер — одразу у відповіді, а поруч із ним — посилання на чек для покупця.

    curl -X POST "$BASE_URL/v1/receipts" \
      -H "Authorization: Bearer $PRRO_TOKEN" \
      -H "Idempotency-Key: order-10412" \
      -H "Content-Type: application/json" \
      -d '{
        "cash_register_id": "'$REGISTER_ID'",
        "type": "sale",
        "items": [
          { "name": "Кава американо", "quantity": "1", "price": "65.00", "tax_letters": "А" }
        ],
        "payments": [
          { "type": "card", "sum": "65.00" }
        ]
      }'
  4. Закрийте день.

    Z-звіт і закриття зміни — одна операція (або налаштуйте shift_close_times на касі, і день закриватиметься сам).

    curl -X DELETE "$BASE_URL/v1/cash-registers/$REGISTER_ID/shifts/current" \
      -H "Authorization: Bearer $PRRO_TOKEN" \
      -H "Idempotency-Key: close-2026-07-14"

Для ШІ-асистентів

Цю документацію не обовʼязково читати вручну — віддайте її своєму ШІ-асистенту (Claude, ChatGPT, Copilot тощо), і він напише код інтеграції за вас. Для цього сайт публікує машиночитані версії за конвенцією llms.txt:

  • /llms.txt

    — індекс для ШІ-агентів: короткий опис сервісу та посилання на машиночитані документи. Почніть звідси.

  • /llms-full.txt

    — уся ця сторінка одним markdown-файлом: автентифікація, швидкий старт, чек для покупця, вебхуки, повний довідник ендпоінтів і схем. Вміщується в контекст моделі — цього файла достатньо, щоб написати інтеграцію без жодного іншого джерела.

  • /api/openapi.yaml

    — специфікація OpenAPI 3.1, з якої згенеровано довідник: джерело правди для кодогенерації та валідації.

Усі три файли генеруються під час збірки з тих самих джерел, що й ця сторінка, тож не розходяться з нею.

Ключові механіки

  • Ідемпотентність.

    Заголовок Idempotency-Key обовʼязковий для всіх фіскальних операцій. Повтор запиту з тим самим ключем повертає оригінальну задачу, а не другий чек — мережеві збої та ретраї безпечні. Той самий ключ з іншою операцією — 409.

  • Sync та async.

    За замовчуванням запит тримає зʼєднання до відповіді ДПС (до 30 с); якщо не встигли — 202 із задачею для опитування. mode=async повертає 202 одразу, а результат приходить через GET /v1/tasks/{id} та/або вебхук.

  • Гроші — рядки.

    Усі суми — десяткові рядки ("259.90"), ніколи не float. Кількість — до 3 знаків після коми, ціни — до 2.

  • Помилки.

    Єдиний конверт {code, message, details}: code — машинний код для обробки, message — людський текст. 422 — помилка валідації або відхилення операції (немає відкритої зміни, відмова ДПС).

  • Баланс.

    Сервіс передплатний: коли баланс перетинає мʼякий ліміт, нові чеки відповідають 402, доки баланс не поповнено. Операції зі змінами при цьому доступні. Перед тим приходить попередження, що кошти добігають кінця: вебхук client.balance_low — у data баланс, мʼякий ліміт, ціна чека і скільки чеків лишилося — і лист на адресу сповіщень клієнта.

  • Час продажу.

    Якщо ваша інтеграція дійшла до нас пізніше за касу (автомат, що годину тримав замовлення в черзі), передайте sold_at — і на чеку зʼявиться окремий рядок «Продаж від 03.09.2026 18:11», перед приміткою comment, якщо вона є. Фіскальним часом документа він не стає: ДПС приймає його лише в межах хвилини від власного годинника, тож документ завжди позначено моментом подання. Час у майбутньому або старіший за 31 день — 422.

  • Форма оплати й засіб.

    payments[].type — одна з форм, закритих законом (cash, card, certificate, bank_transfer, direct_debit); фіскальний код і назву за неї підставляє сервіс. Коли надрукувати треба точніше — «ПЕРЕКАЗ З КАРТКИ», талон, сертифікат мережі — назву задає payments[].means, а код форми лишається за type, тож лічильник готівки та розбивка Z-звіту не розходяться з чеком. Реквізити еквайрингу (ідентифікатор і податковий номер еквайра, платіжний пристрій, код авторизації, комісія) — у payments[].card.

  • Повернення.

    Повернення (type: return) звіряється з чеком з original.fiscal_number, якщо той видано в нашому сервісі: це має бути продаж у тому самому режимі (test чи production), не сторнований, і всі повернення за ним разом не перевищують суми продажу до заокруглення. Чек з іншої каси шукається за original.register_fiscal_number. Не зійшлося — задача завершується помилкою з кодом return.*, документ не реєструється й до ДПС не йде. Чек, виданий іншим ПРРО, приймається без звірки — тоді в результаті result.receipt.original.verified: false.

  • Текст чека — у windows-1251.

    Інших кодувань ДПС не приймає, але символ поза ним чек не валить — сервіс замінює його сам: поширені мають заміну (апостроф ʼ → ’, × → x, ₴ → грн, мінус → -), знаки з діакритикою й індекси спрощуються (é → e, ² → 2, ½ → 1/2), літери інших абеток стають ?, а емодзі та невидимі символи відкидаються. Текст, що вже вкладається в кодування, не змінюється. Що надруковано насправді, видно в receipt.registered і на receipt_url.

Чек для покупця

Відповідь на фіскалізацію несе не лише фіскальний номер: у result.receipt поруч із ним лежать два посилання — наша копія чека і той самий документ у кабінеті ДПС. Це все, що потрібно надіслати покупцеві листом чи в месенджер або показати QR-кодом на екрані каси — рендерити чек самотужки не треба.

{
  "task_id": "0197a2c1-…",
  "type": "receipt",
  "status": "succeeded",
  "result": {
    "receipt": {
      "document_id": "0197a2c3-…",
      "local_number": 42,
      "fiscal_number": "7466800082",
      "register_fiscal_number": "4001063533",
      "receipt_url": "https://r.prro.cloud/aB3xK9pQvT2mNr7c",
      "tax_url": "https://cabinet.tax.gov.ua/cashregs/check?fn=4001063533&id=7466800082&date=20260803&time=010754&sm=65.00"
    }
  }
}
  • receipt_url — копія чека.

    Сторінка відкривається без авторизації: 16-символьний код і є доступом, як паперовий чек у кишені. Подання обирає параметр ?format=: html (типово), png (сам чек картинкою завширшки 576 px — це растрова ширина стрічки 80 мм, тож на термопринтер вона йде як є, разом із QR) і qr (PNG з адресою цієї ж сторінки). Назовні віддається лише людиночитаний чек — ні XML, ні CMS, ні квитанції ДПС. Невідомий код і документ, який не можна показати, відповідають однаково — 404.

  • tax_url — незалежна перевірка.

    Той самий документ у кабінеті платника податків — підтвердження, яке покупець читає, не довіряючи нам. Доказ фіскалізації — це fiscal_number і tax_url; receipt_url лише показує чек.

  • Офлайн-чек.

    У документа з offline: true фіскальний номер обчислено локально (<sid>.<n>.<crc>), тож tax_url зʼявиться лише після того, як пакет сесії прийме фіскальний сервер. receipt_url є одразу — копія віддається з нашого журналу.

  • Сесія, якої ДПС не прийняла.

    Коли ДПС відхиляє пакети сесії, каса зупиняється: нові документи відповідають кодом state.offline_backlog_undeliverable. Усунувши причину, надсилання відновлюють (.../offline-session/retry) або від сесії відмовляються (.../offline-session/abandon). Документи, яких ДПС так і не отримала, стають abandoned: їхнього фіскального номера в ДПС не існує, tax_url не зʼявиться, а receipt_url відповідає 404. Перелік таких документів приходить у результаті задачі та в події register.offline_abandoned; чи видавати ці продажі знову, вирішує інтеграція.

  • register_fiscal_number — ФН ПРРО.

    Фіскальний номер каси, на якій видано документ, — той самий «ФН ПРРО», що друкується на чеку. Присутній завжди й однаковий у будь-якому режимі, на відміну від fiscal_number. Це те, за чим інтеграція зіставляє свої записи з касою: діставати номер із параметра fn= посилання tax_url не треба — саме його в офлайн-документа й немає.

  • Тільки розрахункові документи.

    Z-звіт, відкриття та закриття зміни друкованої форми не мають, тож посилань у їхніх DocResult не буде.

  • Посилання не протухають.

    Код зберігається разом із документом, а не перераховується, тож ротація ключів сервісу не ламає адрес, які вже в руках у покупців. Сторінку не індексують пошукові системи.

Вебхуки

Замість опитування задач підпишіться на події: зареєструйте endpoint через POST /v1/webhooks — і сервіс сам постукає у ваш бекенд.

  • Події.

    Завдання — task.completed і task.failed. Чеки — receipt.registered (див. нижче). Зміни — shift.opened і shift.closed. Ключ КЕП — key.expiring (раз на добу про сертифікат, що спливає протягом 30 днів). Стан каси — register.offline і register.online, register.offline_limit (наближення до законних меж офлайн-сесії, 36 і 168 годин), register.offline_abandoned (від офлайн-сесії відмовлено — у data документи, яких ДПС не отримала), register.remediated (сервіс сам усунув розбіжність із ДПС) і register.needs_attention (виправлення не тримаються — на касу має поглянути людина). Баланс — client.balance_low (передплачених коштів лишилося менше ніж на поріг чеків); ця подія стосується клієнта, а не каси, тож cash_register_id у ній немає.

  • Кожен чек — з повним вмістом.

    receipt.registered приходить на кожен зареєстрований чек — продаж, повернення, сторно, службове внесення й видачу, онлайн і офлайн — і зокрема на ті, що касир провів у кабінеті PRRO.cloud, а не через API. У data — документ у тому вигляді, в якому його отримала ДПС: позиції, оплати, податки, сума й заокруглення, касир, номери, зміна, оригінал повернення чи сторно, receipt_url і tax_url (у офлайн-чека — лише після прийняття ДПС). Звідки подано чек, каже source: api чи cabinet (тоді user_id — обліковий запис кабінету). Поля — у схемі ReceiptRegisteredData (розділ «Схеми даних»). Тож обліку не треба опитувати журнал, щоб бачити продажі, проведені в кабінеті.

  • Конверт доставки.

    POST на ваш URL з тілом {delivery_id, event, attempt, sequence, occurred_at, data}; у data — корисне навантаження події, sequence — номер події в межах каси (у подій рівня клієнта його немає).

  • Підпис.

    Заголовок X-Signature: sha256=<hex> — HMAC-SHA256 від тіла запиту під секретом endpoint'а. Секрет видається один раз при створенні; перевіряйте підпис перед обробкою.

  • Гарантії.

    Доставка at-least-once — дедуплікуйте за delivery_id. Невдалі доставки ретраяться, вичерпані потрапляють у DLQ (status=dead) і можуть бути повторені вручну через replay.

  • Історія доставок не вічна.

    Доставлені зберігаються 30 днів, невдалі (dead) — 14 днів від останньої спроби, потім зникають з історії. Replay доступний, поки доставка в ній є: щоб повторити невдалу, у вас два тижні.

  • Порядок — за sequence.

    Події однієї каси надсилаються по одній і по порядку, але подія, яку ваш приймач не прийняв, наступних не затримує: після ретраю чи replay вона прийде пізніше за них. Упорядковуйте події каси за sequence — він зростає, пропуски можливі. Актуальний стан каси завжди дає GET /v1/cash-registers/{id}.

  • Чому не доставлено.

    У журналі доставок last_error каже, чим скінчилася остання невдала спроба: код і початок відповіді вашого приймача або причина збою зʼєднання — зокрема TLS (прострочений чи чужий сертифікат, звичайний HTTP на https-адресі).

  • Скільки вебхуків.

    Не більше, ніж кас у клієнта, плюс один; призупинені теж рахуються, видалені — ні. Понад ліміт POST /v1/webhooks відповідає 409 з кодом webhook_limit_reached і details {limit, used}; ті самі limit і used повертає GET /v1/webhooks, тож інтеграція бачить ліміт заздалегідь.

  • Пауза й видалення — різні речі.

    active: false призупиняє доставку, не втрачаючи черги: увімкнете назад — накопичене піде далі. Видалення endpoint'а переводить усе недоставлене в dead, тож на час ремонту свого бекенду вимикайте вебхук, а не видаляйте його.

  • Листи поруч із вебхуками.

    Те, що має побачити людина, сервіс дублює поштою клієнта: client.balance_low, key.expiring, register.needs_attention і завершене поповнення рахунку. Адресу сповіщень і перемикачі окремих листів задають у кабінеті; на доставку вебхуків це не впливає, тож інтеграції нічого не треба міняти. Покупцеві сервіс не пише ніколи — копію чека надсилає інтеграція.

POST https://example.com/prro-hook
X-Signature: sha256=2b7e9f…

{
  "delivery_id": "0197a2c4-…",
  "event": "task.completed",
  "attempt": 1,
  "sequence": 17,
  "occurred_at": "2026-07-14T10:15:04Z",
  "data": { "task_id": "0197a2c1-…", "status": "succeeded" }
}

Довідник ендпоінтів

Згенеровано зі специфікації OpenAPI. Кабінетні ендпоінти (cookie-сесія панелі) сюди не входять — інтеграції працюють лише з машинним API.

Сервісні

GET /v1/version

Версія збірки сервісу

Відповіді

  • 200 Версія, зашита у збірку.
    Поле Тип Обовʼязковий Опис
    versionstringтакТег збірки: dev у локальній збірці, інакше версія релізу.
GET /v1/whoami Bearer

Клієнт і дозволи наданого токена

Відповіді

  • 200 Клієнт, дозволи (scopes) та обмеження за касами.
    Поле Тип Обовʼязковий Опис
    client_idstring (uuid)такКлієнт, від імені якого діє токен.
    scopesarray<string>такДозволи, видані токену.
    all_cash_registersbooleanтакtrue — токен діє на всі каси клієнта (поточні й майбутні); false — лише на перелічені у cash_registers.
    cash_registersarray<string (uuid)>—Присутнє лише для обмеженого токена — перелік uuid кас, до яких він прив'язаний. Відсутнє, коли all_cash_registers.
    jtistring (uuid)такІдентифікатор токена — за ним його відкликають у кабінеті.
    expires_atstring (date-time)—Коли токен спливає; у безстрокового відсутнє.
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error
GET /v1/system/dps Bearer

Поточний режим роботи з ДПС (онлайн/офлайн)

Режим, у якому сервіс зараз працює з ДПС; доступний будь-якому машинному токену.

Відповіді

  • 200 Режим роботи з ДПС і телеметрія, що його пояснює. DPSPulse
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error

Фіскальні операції

POST /v1/receipts Bearer

Зареєструвати розрахунковий документ

Типи документів: sale — реалізація, return — повернення, storno — сторно, service_in — службове внесення, service_out — інкасація. Сервіс проходить повний фіскальний цикл: локальний номер, XML за check01, підпис КЕП (CAdES-T), надсилання до ДПС, квитанція. Режим sync (типовий) чекає на результат до 30 секунд і віддає 202 з номером завдання, якщо не дочекався; async віддає 202 одразу. Idempotency-Key обов'язковий: повтор із тим самим ключем повертає те саме завдання, а не реєструє другий документ.

Параметри

Параметр Тип Обовʼязковий Опис
Idempotency-Key header string так Ключ операції, який обирає клієнт. Повтор запиту з тим самим ключем поверне початкове завдання, а не виконає фіскальну операцію вдруге.
mode query string — Режим доставки результату; має перевагу над однойменним полем у тілі. sync (типовий) чекає на результат у межах синхронного очікування; async одразу віддає 202 і номер завдання.

Тіло запиту application/json

ReceiptInput

Відповіді

  • 200 Повтор за тим самим Idempotency-Key; завдання вже завершене. Task
  • 201 Зареєстровано в межах синхронного очікування. Task
  • 202 Ще виконується; статус — через GET /tasks/{id}. Task
  • 400 Конверт помилки. Error
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error
  • 402 Баланс опустився нижче порога: нові чеки заблоковано до поповнення. Операції зі змінами лишаються доступними. Error
  • 404 Конверт помилки. Error
  • 409 Цей Idempotency-Key уже використано для іншої операції. Error
  • 422 Не пройшла валідація або завдання завершилося помилкою (немає відкритої зміни, відмова ДПС тощо). Error
GET /v1/tasks/{id} Bearer

Статус і результат завдання

Параметри

Параметр Тип Обовʼязковий Опис
id path string (uuid) так Ідентифікатор завдання з відповіді на фіскальну операцію.

Відповіді

  • 200 Завдання в поточному стані. Task
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error
  • 404 Конверт помилки. Error
GET /v1/cash-registers Bearer

Каси, доступні токену

Токен без обмежень бачить усі каси клієнта, обмежений — лише свої. Звідси беруть cash_register_id для решти маршрутів. Поточний стан каси — у GET /v1/cash-registers/{id}.

Відповіді

  • 200 Каси в межах токена, від найстаріших.
    Поле Тип Обовʼязковий Опис
    cash_registersarray<CashRegisterListItem>такКаси в межах токена, від найстаріших.
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error
GET /v1/cash-registers/{id} Bearer

Стан реєстратора (зміна, режим, лічильники)

Параметри

Параметр Тип Обовʼязковий Опис
id path string (uuid) так Ідентифікатор каси — uuid із GET /v1/cash-registers.

Відповіді

  • 200 Поточний стан реєстратора. CashRegisterState
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error
  • 404 Конверт помилки. Error
POST /v1/cash-registers/{id}/shifts Bearer

Відкрити зміну

Завдання, режими доставки та Idempotency-Key — як у POST /v1/receipts.

Параметри

Параметр Тип Обовʼязковий Опис
id path string (uuid) так Ідентифікатор каси — uuid із GET /v1/cash-registers.
Idempotency-Key header string так Ключ операції, який обирає клієнт. Повтор запиту з тим самим ключем поверне початкове завдання, а не виконає фіскальну операцію вдруге.
mode query string — Режим доставки результату; має перевагу над однойменним полем у тілі. sync (типовий) чекає на результат у межах синхронного очікування; async одразу віддає 202 і номер завдання.

Тіло запиту application/json · optional

Поле Тип Обовʼязковий Опис
cashierstring—Ім'я касира, яке друкують у документі відкриття зміни.
modestring—Режим доставки результату; параметр запиту ?mode= має перевагу над цим полем.syncasync

Відповіді

  • 201 Зміну відкрито. Task
  • 202 Ще виконується; статус — через GET /tasks/{id}. Task
  • 400 Конверт помилки. Error
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error
  • 404 Конверт помилки. Error
  • 422 Конверт помилки. Error
DELETE /v1/cash-registers/{id}/shifts/current Bearer

Закрити поточну зміну

Однією операцією формує Z-звіт і документ закриття зміни.

Параметри

Параметр Тип Обовʼязковий Опис
id path string (uuid) так Ідентифікатор каси — uuid із GET /v1/cash-registers.
Idempotency-Key header string так Ключ операції, який обирає клієнт. Повтор запиту з тим самим ключем поверне початкове завдання, а не виконає фіскальну операцію вдруге.
mode query string — Режим доставки результату; має перевагу над однойменним полем у тілі. sync (типовий) чекає на результат у межах синхронного очікування; async одразу віддає 202 і номер завдання.

Відповіді

  • 201 Зміну закрито; у результаті — і Z-звіт, і документ закриття. Task
  • 202 Ще виконується; статус — через GET /tasks/{id}. Task
  • 400 Конверт помилки. Error
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error
  • 404 Конверт помилки. Error
  • 422 Конверт помилки. Error
POST /v1/cash-registers/{id}/offline-session/close Bearer

Передати й завершити офлайн-сесію зараз

Передає пакети сесії до ДПС і завершує її, не чекаючи фонової передачі. Каса повертається онлайн лише після того, як ДПС прийняла всі документи сесії. Якщо ДПС недоступна, операція відхиляється з кодом state.offline_close_needs_dps — сесію буде передано й завершено автоматично, щойно зв'язок відновиться.

Параметри

Параметр Тип Обовʼязковий Опис
id path string (uuid) так Ідентифікатор каси — uuid із GET /v1/cash-registers.
Idempotency-Key header string так Ключ операції, який обирає клієнт. Повтор запиту з тим самим ключем поверне початкове завдання, а не виконає фіскальну операцію вдруге.
mode query string — Режим доставки результату; має перевагу над однойменним полем у тілі. sync (типовий) чекає на результат у межах синхронного очікування; async одразу віддає 202 і номер завдання.

Тіло запиту application/json · optional

Поле Тип Обовʼязковий Опис
cashierstring—Ім'я касира, яке друкують у документі завершення сесії.
modestring—Режим доставки результату; параметр запиту ?mode= має перевагу над цим полем.syncasync

Відповіді

  • 201 Сесію закрито; у результаті — документ завершення. Task
  • 202 Ще виконується; статус — через GET /tasks/{id}. Task
  • 400 Конверт помилки. Error
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error
  • 404 Конверт помилки. Error
  • 422 Конверт помилки. Error
POST /v1/cash-registers/{id}/offline-session/retry Bearer

Відновити надсилання офлайн-пакетів

Сервіс зупиняє надсилання, коли ДПС відхиляє пакет сесії. Спершу усуньте причину, потім викликайте цей маршрут. Сесію, яку ДПС не прийме ніколи, закривають через .../offline-session/abandon.

Параметри

Параметр Тип Обовʼязковий Опис
id path string (uuid) так Ідентифікатор каси — uuid із GET /v1/cash-registers.

Відповіді

  • 200 Скільки сесій повернуто до надсилання.
    Поле Тип Обовʼязковий Опис
    resumed_sessionsintegerтакСкільки сесій повернуто до надсилання; 0 — зупинених не було.
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error
  • 404 Конверт помилки. Error
POST /v1/cash-registers/{id}/offline-session/abandon Bearer

Відмовитися від офлайн-сесії, яку не приймає ДПС

Доступно лише для сесії, надсилання якої зупинено (state.offline_backlog_undeliverable), і лише коли ДПС відповідає; інакше — state.offline_session_not_paused або state.offline_abandon_needs_dps. Документи сесії, яких ДПС не отримала, позначаються abandoned: їхні офлайн-фіскальні номери в ДПС не існують, а локальні номери переходять до наступних документів. Сесію завершують у ДПС на тому, що вона вже має, і каса отримує нові офлайн-ключі. Перелік покинутих документів — у результаті та в події register.offline_abandoned; чи видавати їх знову, вирішує інтеграція.

Параметри

Параметр Тип Обовʼязковий Опис
id path string (uuid) так Ідентифікатор каси — uuid із GET /v1/cash-registers.
Idempotency-Key header string так Ключ операції, який обирає клієнт. Повтор запиту з тим самим ключем поверне початкове завдання, а не виконає фіскальну операцію вдруге.
mode query string — Режим доставки результату; має перевагу над однойменним полем у тілі. sync (типовий) чекає на результат у межах синхронного очікування; async одразу віддає 202 і номер завдання.

Тіло запиту application/json · optional

Поле Тип Обовʼязковий Опис
modestring—Режим доставки результату; параметр запиту ?mode= має перевагу над цим полем.syncasync

Відповіді

  • 201 Від сесії відмовлено; у результаті — offline_abandon. Task
  • 202 Ще виконується; статус — через GET /tasks/{id}. Task
  • 400 Конверт помилки. Error
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error
  • 404 Конверт помилки. Error
  • 422 Конверт помилки. Error
DELETE /v1/cash-registers/{id}/attention Bearer

Зняти позначку «потребує уваги» з реєстратора

Параметри

Параметр Тип Обовʼязковий Опис
id path string (uuid) так Ідентифікатор каси — uuid із GET /v1/cash-registers.

Відповіді

  • 200 Чи справді було знято позначку.
    Поле Тип Обовʼязковий Опис
    clearedbooleanтакfalse означає, що позначки й не було.
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error
  • 404 Конверт помилки. Error
PUT /v1/cash-registers/{id}/cash-balance Bearer

Заявити фактичний залишок готівки

Переставляє лічильник готівки на перераховану суму — коли касу підключили з непорожнім ящиком або лічильник розійшовся з фактом. Операція не фіскальна: заявлений залишок не потрапляє в документи і не змінює підсумків зміни. Рух готівки реєструють чеком service_in або service_out. Від'ємне значення — 422.

Параметри

Параметр Тип Обовʼязковий Опис
id path string (uuid) так Ідентифікатор каси — uuid із GET /v1/cash-registers.

Тіло запиту application/json

Поле Тип Обовʼязковий Опис
amountCashAmountтакПерерахований залишок; не може бути від'ємним.

Відповіді

  • 200 Лічильник після заяви. CashBalanceDeclaration
  • 400 Конверт помилки. Error
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error
  • 404 Конверт помилки. Error
  • 422 Конверт помилки. Error

Білінг

GET /v1/billing/usage Bearer

Передплачений баланс і підсумок тарифікації за період

Суми — копійки десятковим рядком. Типовий період — поточний календарний місяць за UTC, межа to не включається; період понад 366 днів — 422. Тарифікація асинхронна, тож підсумок може відставати від останнього чека на кілька секунд.

Параметри

Параметр Тип Обовʼязковий Опис
from query string (date) — Початок періоду, включно (дата за UTC); типово — перше число поточного місяця.
to query string (date) — Кінець періоду, не включно; типово — перше число наступного місяця. Понад 366 днів — 422.

Відповіді

  • 200 Баланс і використання за період. BillingUsage
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error
  • 422 Конверт помилки. Error
GET /v1/invoices Bearer

Рахунки клієнта, від найновішого періоду

Один рядок на розрахунковий період, а не на окремий платіж.

Параметри

Параметр Тип Обовʼязковий Опис
limit query integer — Скільки рахунків повернути: 1–200, типово 50.
offset query integer — Скільки рахунків пропустити — посторінковий обхід.

Відповіді

  • 200 Рахунки клієнта.
    Поле Тип Обовʼязковий Опис
    invoicesarray<Invoice>такРахунки, від найновішого періоду.
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error
  • 422 Конверт помилки. Error

Вебхуки

GET /v1/webhooks Bearer

Перелік вебхуків клієнта (без секретів)

Відповіді

  • 200 Точки доставки клієнта.
    Поле Тип Обовʼязковий Опис
    webhooksarray<WebhookEndpoint>такТочки доставки клієнта; секрети не повертаються.
    limitintegerтакСкільки вебхуків дозволено — кількість кас клієнта плюс один.
    usedintegerтакСкільки вебхуків зареєстровано, включно з призупиненими.
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error
POST /v1/webhooks Bearer

Зареєструвати вебхук

Доставка — POST з тілом {delivery_id, event, attempt, sequence, occurred_at, data} і заголовком X-Signature вигляду "sha256=<HMAC-SHA256 тіла у hex>", порахованим на секреті цієї точки доставки. Гарантія — «щонайменше один раз»: приймач має відкидати повтори за delivery_id. Події одного реєстратора надсилаються по одній і по порядку. Подія, яку приймач не прийняв, не затримує наступні: після повтору чи replay вона може прийти пізніше за них. Упорядковуйте події реєстратора за sequence — номером події в межах реєстратора, що зростає (пропуски можливі). Актуальний стан каси — GET /v1/cash-registers/{id}.

Тіло запиту application/json

Поле Тип Обовʼязковий Опис
urlstringтакАбсолютний http(s)-URL приймача.
eventsarray<WebhookEvent>—Події, на які підписані; порожній список або відсутнє поле означає всі події.task.completedtask.failedshift.openedshift.closedkey.expiringregister.offlineregister.onlineregister.offline_limitregister.offline_abandonedregister.remediatedregister.needs_attentionclient.balance_lowreceipt.registered
secretstring—Секрет HMAC; якщо не вказати, згенерує сервер.

Відповіді

  • 201 Створено; секрет повертається рівно один раз.
    Поле Тип Обовʼязковий Опис
    idstring (uuid)такІдентифікатор вебхука.
    urlstringтакАбсолютний http(s)-URL приймача.
    eventsarray<WebhookEvent>такПорожній список означає підписку на всі події.task.completedtask.failedshift.openedshift.closedkey.expiringregister.offlineregister.onlineregister.offline_limitregister.offline_abandonedregister.remediatedregister.needs_attentionclient.balance_lowreceipt.registered
    activebooleanтакДоставка ввімкнена; false призупиняє її, не втрачаючи черги.
    created_atstring (date-time)такКоли вебхук створено.
    updated_atstring (date-time)такКоли його востаннє змінювали.
    secretstringтакОтримати повторно неможливо.
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error
  • 409 Ліміт вебхуків вичерпано (код webhook_limit_reached): дозволено не більше, ніж кас у клієнта, плюс один; призупинені теж рахуються. У details — limit і used. Error
  • 422 Конверт помилки. Error
PATCH /v1/webhooks/{id} Bearer

Змінити URL, підписку або активність вебхука

Параметри

Параметр Тип Обовʼязковий Опис
id path string (uuid) так Ідентифікатор вебхука.

Тіло запиту application/json

Поле Тип Обовʼязковий Опис
urlstring—Новий абсолютний http(s)-URL приймача.
eventsarray<WebhookEvent>—Новий перелік подій; порожній список означає всі.task.completedtask.failedshift.openedshift.closedkey.expiringregister.offlineregister.onlineregister.offline_limitregister.offline_abandonedregister.remediatedregister.needs_attentionclient.balance_lowreceipt.registered
activeboolean—false призупиняє доставку, не втрачаючи черги.

Відповіді

  • 200 Оновлено. WebhookEndpoint
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error
  • 404 Конверт помилки. Error
  • 422 Конверт помилки. Error
DELETE /v1/webhooks/{id} Bearer

Видалити вебхук

Параметри

Параметр Тип Обовʼязковий Опис
id path string (uuid) так Ідентифікатор вебхука.

Відповіді

  • 204 Видалено; недоставлені події переведено в dead.
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error
  • 404 Конверт помилки. Error
GET /v1/webhooks/{id}/deliveries Bearer

Історія доставок вебхука

Доставлені зберігаються 30 днів, невдалі (dead) — 14 днів від останньої спроби; старіші зникають з історії.

Параметри

Параметр Тип Обовʼязковий Опис
id path string (uuid) так Ідентифікатор вебхука.
status query string — Показати лише доставки в цьому стані.
limit query integer — Скільки доставок повернути: 1–200, типово 50.

Відповіді

  • 200 Доставки.
    Поле Тип Обовʼязковий Опис
    deliveriesarray<WebhookDelivery>такДоставки, від найновішої.
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error
  • 404 Конверт помилки. Error
  • 422 Конверт помилки. Error
POST /v1/webhooks/{id}/deliveries/{deliveryId}/replay Bearer

Повторити доставку

Повертає доставку — зазвичай невдалу — в чергу з новим запасом спроб. Доступно, поки доставка є в історії: невдалу — 14 днів від останньої спроби.

Параметри

Параметр Тип Обовʼязковий Опис
id path string (uuid) так Ідентифікатор вебхука.
deliveryId path string (uuid) так Ідентифікатор доставки з історії.

Відповіді

  • 200 Повернуто в чергу; спроба — одразу. Події, доставлені тим часом, не повторюються: ця прийде після них. WebhookDelivery
  • 401 Немає облікових даних, або вони недійсні, протерміновані чи відкликані. Error
  • 404 Конверт помилки. Error
  • 409 Саме зараз триває спроба доставки. Error

Схеми даних

Обʼєкти, на які посилаються ендпоінти довідника. Обовʼязкові поля позначено «так».

Error object

Конверт помилки: машинний код, текст для людини і подробиці, якщо вони є.

Поле Тип Обовʼязковий Опис
codestringтакСтабільний машинний код помилки; саме на нього реагує інтеграція.
messagestringтакПояснення для людини; покладатися на його текст програмно не можна.
detailsany—Подробиці помилки, коли вони є, — наприклад перелік полів, які не пройшли валідацію.

CashRegisterState object

Поточний стан реєстратора: режим, зміна, готівка, офлайн-сесія.

Поле Тип Обовʼязковий Опис
idstring (uuid)такІдентифікатор каси в цьому API — те саме значення, що cash_register_id чека.
fiscal_numberstringтакФіскальний номер ПРРО, присвоєний ДПС, — «ФН ПРРО» на чеку.
local_numberstringтакCASHDESKNUM: власний номер каси у клієнта.
modestringтакproduction — бойовий режим; test — документи позначені як тестові. Документи зміни мають режим, у якому її відкрито; змінити режим можна лише при закритій зміні.productiontest
statestringтакclosed — зміна закрита; opened — відкрита; offline — триває офлайн-сесія.closedopenedoffline
offline_readyboolean—Чи має реєстратор видані ДПС офлайн-реквізити (приходять із квитанцією на відкриття зміни).
shift_modeShiftMode—Як керують змінами реєстратора. manual — клієнт відкриває і закриває їх сам. round_the_clock — зміна закривається в кожен із shift_close_times, наступний чек відкриває нову. working_hours — денне вікно, задане двома межами у shift_close_times. В обох керованих режимах зміну відкриває перший же чек.
shift_close_timesShiftCloseTimes—Час щоденного закриття зміни за київським часом; порожній рівно тоді, коли shift_mode — manual. Час прив'язаний до годинника, а не до моменту відкриття зміни. Потрібно щонайменше два значення з проміжком не більше 20 годин (рахуючи через опівніч). round_the_clock — два або більше за зростанням; working_hours — рівно два: початок і кінець дня саме в цьому порядку (вікно через опівніч — "08:00", потім "02:00").
cash_balanceCashBalance—Готівка в касі реєстратора. Це лічильник, а не фіскальна величина: він стартує з нуля при створенні реєстратора і враховує лише документи, що пройшли через цей сервіс. Рухають його готівкові рядки оплат — додають на реалізації, віднімають на поверненні та сторно — і службові документи; безготівкові форми не рухають нічого. Береться sum рядка оплати, решта вже врахована. Лічильник належить реєстратору, а не зміні, і Z-звіт його не скидає. Від'ємне значення означає, що в касі було більше, ніж побачив сервіс. Переставити лічильник: PUT /v1/cash-registers/{id}/cash-balance.
current_shiftobject—Поточна зміна каси; після закриття поле зникає.
idstring (uuid)—Ідентифікатор зміни.
numberinteger (int64)—Наскрізний номер зміни в межах каси («Зміна №147»). Присвоюється локально: ДПС номера зміни не видає.
statusstring—opening і closing — операція ще в роботі; opened і closed — завершена.openingopenedclosingclosed
testingboolean—Зміну відкрито на касі в режимі test — усі її документи тестові.
opened_atstring (date-time)—Коли зміну відкрито.
documentsinteger—Скільки документів створила зміна — усіх видів, не лише розрахункових. Відсутнє, якщо підрахунок не вдався.
shift_totalsShiftTotals—Поточні підсумки відкритої зміни — те саме накопичення, з якого буде побудований Z-звіт. Сторно віднімається з боку реалізації, а не додається до повернень. Службові внесення й видачі не належать до жодного боку. Розкладу за податковими літерами тут немає — він є лише в Z-звіті.
offline_sessionobject—Присутня, поки реєстратор працює офлайн.
idstring (uuid)—Ідентифікатор сесії в сервісі.
dps_session_idinteger (int64)—Номер сесії, виданий ДПС; входить у фіскальний номер офлайн- документа.
started_atstring (date-time)—Початок сесії — від нього рахують 36-годинну межу.
documentsinteger (int64)—Скільки документів видано в цій сесії.
last_significant_atstring (date-time)—Останній документ, що продовжує сесію; за ним рахують витрачений місячний час.
offline_limitsobjectтакЗаконодавчі межі офлайн-роботи в секундах: 36 годин на одну сесію і 168 годин на календарний місяць. Витрачене рахують від offline_session.started_at і offline_month_used_seconds.
session_secondsinteger (int64)такМежа однієї сесії — 36 годин у секундах.
month_secondsinteger (int64)такМежа на календарний місяць — 168 годин у секундах.
offline_month_used_secondsinteger (int64)—Час, відпрацьований офлайн у цьому календарному місяці (за київським часом).
attentionobject—Присутня, коли реєстратор позначено як такий, що потребує уваги (див. CashRegister.attention_reason). Знімається через DELETE .../attention; зупинене надсилання офлайн-пакетів додатково відновлюють через POST .../offline-session/retry.
reasonstringтакrecurring_remediation — розбіжності з ДПС усуваються знову і знову; offline_submission_paused — надсилання офлайн-пакетів зупинено; auto_close_failing — не вдається автоматичне закриття зміни.recurring_remediationoffline_submission_pausedauto_close_failing
sincestring (date-time)—Коли позначку поставлено.

ShiftMode string

Як керують змінами реєстратора. manual — клієнт відкриває і закриває їх сам. round_the_clock — зміна закривається в кожен із shift_close_times, наступний чек відкриває нову. working_hours — денне вікно, задане двома межами у shift_close_times. В обох керованих режимах зміну відкриває перший же чек.

manualround_the_clockworking_hours

ShiftCloseTimes array

Час щоденного закриття зміни за київським часом; порожній рівно тоді, коли shift_mode — manual. Час прив'язаний до годинника, а не до моменту відкриття зміни. Потрібно щонайменше два значення з проміжком не більше 20 годин (рахуючи через опівніч). round_the_clock — два або більше за зростанням; working_hours — рівно два: початок і кінець дня саме в цьому порядку (вікно через опівніч — "08:00", потім "02:00").

CashRegisterListItem object

Каса в переліку: ідентифікатор для звернень і реквізити, за якими її впізнає людина.

Поле Тип Обовʼязковий Опис
idstring (uuid)такІдентифікатор каси в цьому API — те саме значення, що йде в cash_register_id чека і в {id} решти маршрутів.
fiscal_numberstringтакФіскальний номер ПРРО, присвоєний ДПС.
local_numberstringтакCASHDESKNUM: власний номер каси у клієнта.
org_namestring—Назва суб'єкта господарювання.
point_namestring—Назва господарської одиниці — точки продажу.
point_addressstring—Адреса господарської одиниці.
modestringтакproduction — бойовий режим; test — документи позначені як тестові. Документи зміни мають режим, у якому її відкрито; змінити режим можна лише при закритій зміні.productiontest
statestringтакclosed — зміна закрита; opened — відкрита; offline — триває офлайн-сесія.closedopenedoffline

Task object

Завдання фіскального конвеєра: у нього перетворюється кожен запит до ДПС.

Поле Тип Обовʼязковий Опис
task_idstring (uuid)такІдентифікатор завдання — за ним опитують GET /v1/tasks/{id}.
typestringтакОперація завдання: receipt — розрахунковий документ; open_shift і close_shift — зміна; close_offline_session — завершення офлайн-сесії; abandon_offline_session — відмова від офлайн-сесії, яку не приймає ДПС; verify_key — перевірка ключа КЕП; sync_register — звіряння з ДПС; dps_objects — запит об'єктів власника ключа.receiptopen_shiftclose_shiftclose_offline_sessionabandon_offline_sessionverify_keysync_registerdps_objects
statusstringтакpending — у черзі; processing — виконується; succeeded і failed — завершено, результат у result або fault.pendingprocessingsucceededfailed
created_atstring (date-time)такКоли завдання створено.
finished_atstring (date-time)—Коли завдання завершилося; поки воно в роботі — відсутнє.
errorstring—Текст помилки завдання; структурований опис того самого збою — у fault.
faultFault—Структурований опис збою завдання. Простори імен коду: dps.* — відмова фіскального сервера, fiscal.* — валідація документа, return.* — звірка повернення з початковим чеком, signer.* — рівень КЕП, state.* — стан реєстратора. Мову message задає Accept-Language, типово українська.
resultTaskResult—Фіскальні поля (prro_id/shift_id/testing/…) стосуються завдань на чек, зміну та офлайн-сесію; key_verification — єдиний результат завдання verify_key.

Fault object

Структурований опис збою завдання. Простори імен коду: dps.* — відмова фіскального сервера, fiscal.* — валідація документа, return.* — звірка повернення з початковим чеком, signer.* — рівень КЕП, state.* — стан реєстратора. Мову message задає Accept-Language, типово українська.

Поле Тип Обовʼязковий Опис
codestringтакСтабільний ідентифікатор, напр. dps.check_local_number_invalid.
classstringтакЩо може зарадити: resync — звірити стан із ДПС; config — виправити налаштування реєстратора; precursor — виконати пропущений попередній крок; user_action — потрібне рішення людини; transient — тимчасова недоступність, допоможе повтор; request — виправити запит; internal — збій сервісу.resyncconfigprecursoruser_actiontransientrequestinternal
paramsobject—Значення для підстановки в message.
messagestring—Текст для людини, локалізований із каталогу помилок.
upstream_messagestring—Дослівне повідомлення фіскального сервера.
remediationarray<string>—Автоматичні виправлення, застосовані під час обробки завдання.local_number_syncedshift_adoptedshift_abandonedzreport_recoveredzreport_autofiledregister_config_filled

TaskResult object

Фіскальні поля (prro_id/shift_id/testing/…) стосуються завдань на чек, зміну та офлайн-сесію; key_verification — єдиний результат завдання verify_key.

Поле Тип Обовʼязковий Опис
prro_idstring (uuid)—Каса, на якій виконано завдання.
shift_idstring (uuid)—Зміна, у межах якої видано документи завдання.
shift_numberinteger (int64)—Наскрізний номер зміни в межах каси. Присвоюється локально: ДПС номера зміни не видає (у квитанції такого поля немає).
testingboolean—Документи завдання тестові — каса в режимі test.
receiptDocResult—Розрахунковий документ, який видало завдання receipt.
shift_openDocResult—Документ відкриття зміни.
zreportDocResult—Z-звіт, яким закрито зміну.
shift_closeDocResult—Документ закриття зміни.
offline_endDocResult—Документ завершення офлайн-сесії.
offline_abandonOfflineAbandonResult—Результат відмови від офлайн-сесії (abandon_offline_session).
key_verificationKeyVerificationResult—Вердикт перевірки ключа КЕП — результат завдання verify_key.
key_password_checkKeyPasswordCheckResult—Результат швидкої перевірки пароля контейнера: контейнер лише розшифровується, без звернень до мережі. Завдання успішне і при ok=false — воно дійшло до вердикту. При внутрішньому збої вердикту немає і завдання повторюється.
reconcileReconcileReport—Підсумок звіряння реєстратора з ДПС (sync_register): який стан побачили на боці сервера і що виправили в себе.
dps_objectsarray<DPSTaxObject>—Господарські одиниці власника ключа — результат завдання dps_objects.

OfflineAbandonResult object

Результат відмови від офлайн-сесії (abandon_offline_session).

Поле Тип Обовʼязковий Опис
session_idstring (uuid)такСесія, від якої відмовлено.
dps_session_idinteger (int64)такНомер сесії, виданий ДПС.
held_documentsinteger (int64)такСкільки документів сесії ДПС отримала; вони лишаються зареєстрованими.
abandonedarray<AbandonedDocument>такДокументи сесії, яких ДПС не отримала.
closure_session_idstring (uuid)—Сесія, якою відмовлену сесію завершують у ДПС. Відсутня, якщо ДПС не отримала жодного документа сесії або вже завершила її сама.
closedbooleanтакСесію завершено в ДПС, каса знову онлайн. false — завершення ще передається; документи каси до того чекають.

AbandonedDocument object

Документ відмовленої офлайн-сесії — те, що отримав покупець. Його фіскального номера в ДПС не існує.

Поле Тип Обовʼязковий Опис
document_idstring (uuid)такІдентифікатор документа в сервісі.
task_idstring (uuid)—Завдання, яке видало документ.
classstringтакВид документа.checkzreportopen_shiftclose_shiftoffline_beginoffline_end
kindstring—Що саме оформив чек; лише для class = check.salereturnstornoservice_inservice_out
local_numberinteger (int64)такЛокальний номер, який мав документ.
fiscal_numberstring—Офлайн-фіскальний номер, надрукований на документі.
totalstring—Сума документа в гривнях; лише для чеків.
pay_formstring—Форма оплати; лише для чеків.cashcashlessmixed
created_atstring (date-time)такКоли документ видано.

ReconcileReport object

Підсумок звіряння реєстратора з ДПС (sync_register): який стан побачили на боці сервера і що виправили в себе.

Поле Тип Обовʼязковий Опис
fiscal_numberstringтакРеєстратор, який звіряли.
dps_shift_openedbooleanтакЧи вважає ДПС зміну відкритою.
dps_next_local_numberinteger (int64)такЛокальний номер, якого ДПС чекає від наступного документа.
dps_testingboolean—Чи вважає ДПС реєстратор тестовим.
counter_oldinteger (int64)—Наш лічильник локальних номерів до звіряння.
counter_newinteger (int64)—Наш лічильник після звіряння.
shift_adoptedboolean—Ми прийняли як свою зміну, відкриту на боці ДПС.
shift_abandonedboolean—Ми закрили в себе зміну, якої на боці ДПС немає.
offline_credentials_refreshedboolean—Офлайн-ключі реєстратора оновлено з даних ДПС.
cashobject—Скільки готівки зрушила поточна зміна за нашим підрахунком і за підсумками зміни на боці ДПС. Присутнє лише тоді, коли на сервері справді триває зміна. Довідкове поле: за розбіжністю нічого не виправляється.
oursCashAmountтакГривні з копійками десятковим рядком — у тій самій формі, що й суми в чеках; Money натомість рахує копійки і належить тарифікації.
dpsCashAmountтакГривні з копійками десятковим рядком — у тій самій формі, що й суми в чеках; Money натомість рахує копійки і належить тарифікації.
matchbooleanтакЧи збіглися обидва підрахунки.
totalsobject—Підсумки поточної зміни за нашим обліком і за даними ДПС. Присутнє лише тоді, коли зміна триває і на сервері, і в нас. Якщо підсумки розходяться, Z-звіт зміни подається з підсумками ДПС — інших сервер не приймає.
oursShiftTotalsBriefтакСуми й кількості чеків зміни, за якими ДПС звіряє Z-звіт.
dpsShiftTotalsBrief—Відсутнє, якщо ДПС не повернула підсумки.
matchbooleanтакЧи збіглися обидва підсумки.
z_report_sourcestringтакЗ яких підсумків буде подано Z-звіт зміни.localdps
forcedboolean—Це звіряння перевело Z-звіт зміни на підсумки ДПС.
heldstring—Чому підсумки не звірено або розбіжність не виправлено: dps_totals_unavailable — ДПС не повернула підсумки, звірити не вдалося (match тоді false, dps відсутнє); shift_closing — Z-звіт зміни вже подано; offline_backlog — офлайн-документи ще не доставлено до ДПС.dps_totals_unavailableshift_closingoffline_backlog
attention_clearedboolean—Знято позначку auto_close_failing — автоматичне закриття зміни відновлено.
skippedstring—Чому нічого не чіпали (офлайн-сесію звіряння не торкається).offline_session

ShiftTotalsBrief object

Суми й кількості чеків зміни, за якими ДПС звіряє Z-звіт.

Поле Тип Обовʼязковий Опис
salesCashAmountтакГривні з копійками десятковим рядком — у тій самій формі, що й суми в чеках; Money натомість рахує копійки і належить тарифікації.
sales_countintegerтакКількість чеків продажу.
returnsCashAmountтакГривні з копійками десятковим рядком — у тій самій формі, що й суми в чеках; Money натомість рахує копійки і належить тарифікації.
returns_countintegerтакКількість чеків повернення.
service_inputCashAmountтакГривні з копійками десятковим рядком — у тій самій формі, що й суми в чеках; Money натомість рахує копійки і належить тарифікації.
service_outputCashAmountтакГривні з копійками десятковим рядком — у тій самій формі, що й суми в чеках; Money натомість рахує копійки і належить тарифікації.

DPSTaxObject object

Одна господарська одиниця власника ключа (dps_objects).

Поле Тип Обовʼязковий Опис
namestringтакНазва господарської одиниці.
addressstring—Адреса господарської одиниці.
tinstringтакПодатковий номер власника — ЄДРПОУ або РНОКПП.
ipnstring—Індивідуальний податковий номер платника ПДВ.
org_namestringтакНазва суб'єкта господарювання.
registrarsarray<DPSRegistrar>такПРРО, зареєстровані за цією господарською одиницею.

DPSRegistrar object

Один ПРРО, зареєстрований за господарською одиницею.

Поле Тип Обовʼязковий Опис
fiscal_numberstringтакФіскальний номер ПРРО, присвоєний ДПС.
local_numberstringтакЛокальний номер ПРРО у власника.
namestring—Назва ПРРО з реєстрації.
closedboolean—ПРРО скасовано в ДПС.

KeyPasswordCheckResult object

Результат швидкої перевірки пароля контейнера: контейнер лише розшифровується, без звернень до мережі. Завдання успішне і при ok=false — воно дійшло до вердикту. При внутрішньому збої вердикту немає і завдання повторюється.

Поле Тип Обовʼязковий Опис
signing_key_idstring (uuid)такКлюч, пароль якого перевіряли.
okbooleanтакПароль підійшов — контейнер розшифровано.
verify_codestring—Присутній завжди при ok=false (напр. wrong_password).
verify_errorstring—Дослівна помилка бібліотеки підпису.

KeyVerificationResult object

Вердикт повної перевірки ключа КЕП: чи можна ним підписувати документи ПРРО і чий він.

Поле Тип Обовʼязковий Опис
signing_key_idstring (uuid)такКлюч, який перевіряли. При deleted=true запису вже немає.
statusstringтакactive — ключем можна користуватися; invalid — відхилено, причина у verify_code.activeinvalid
verify_codestring—Причина відхилення. not_prro можна перекрити через POST /cabinet/signing-keys/{id}/activate.wrong_passwordcert_not_foundcert_expirednot_prroverify_failedca_unreachable
verify_errorstring—Дослівна помилка перевірки.
key_typestring—Тип власника, визначений із сертифіката.individuallegal
prro_capablebooleanтакСертифікат придатний для підпису документів ПРРО.
cert_subjectstring—Поле subject сертифіката, як його видав АЦСК.
org_namestring—Назва організації (або ім'я особи) власника з сертифіката.
edrpoustring—ЄДРПОУ юридичної особи з сертифіката, лише цифри.
drfostring—РНОКПП (ДРФО) фізичної особи з сертифіката, лише цифри.
deletedboolean—Запис ключа видалено; так буває при будь-якому відхиленні, крім not_prro.

DocResult object

Документ, який видало завдання: номери в журналі та в ДПС і посилання для покупця.

Поле Тип Обовʼязковий Опис
document_idstring (uuid)такІдентифікатор документа в сервісі.
local_numberintegerтакНаскрізний номер документа в межах каси (ORDERNUM).
fiscal_numberstringтакПрисвоєний фіскальним сервером ДПС.
register_fiscal_numberstringтакФіскальний номер ПРРО, на якому видано документ, — «ФН ПРРО» на чеку (CASHREGISTERNUM). Це номер каси, а не документа: він однаковий у будь-якому режимі, на відміну від fiscal_number. Присутнє завжди.
offlineboolean—Документ підписано в межах офлайн-сесії: його фіскальний номер обчислено локально (<sid>.<n>.<crc>), і на фіскальному сервері він з'явиться лише після надсилання пакета сесії.
receipt_urlstring (uri)—Копія чека для покупця на короткому домені сервісу (https://r.prro.cloud/<код>): її пересилають листом або перетворюють на QR. Сторінка відкривається без авторизації — код і є доступом. Формат задає параметр запиту: ?format=html (типово), png (чек картинкою завширшки 576 px — стрічка 80 мм для термопринтера, з QR усередині) або qr (PNG з адресою цієї ж сторінки). Є лише в розрахункових документів і працює одразу, в офлайн-сесії теж. Це подання чека, а не доказ фіскалізації: доказ — fiscal_number і tax_url.
tax_urlstring (uri)—Той самий документ у кабінеті платника податків — незалежне підтвердження. Відсутнє, доки документ не потрапив на фіскальний сервер: в офлайн-чека до надсилання пакета сесії є лише локально обчислений номер.
originalReturnOriginal—Початковий чек повернення. Є лише в документа повернення.

ReturnOriginal object

Початковий чек повернення. Є лише в документа повернення.

Поле Тип Обовʼязковий Опис
fiscal_numberstringтакФіскальний номер початкового чека.
document_idstring (uuid)—Початковий чек у журналі сервісу; відсутній разом із verified.
verifiedbooleanтакtrue — початковий чек видано в цьому сервісі, і повернення звірено із залишком за ним. false — чека в сервісі немає (виданий іншим ПРРО), повернення прийнято без звірки.

ReceiptInput oneOf

Дві форми документа, які розрізняє поле type: розрахунок за товари несе позиції та оплати, рух готівки — лише суму. Поля чужої форми не ігноруються, а відхиляються з 422.

Одна з форм розрізняє поле: type

SettlementReceiptInput object

Розрахунок за товари — реалізація, повернення або сторно.

Поле Тип Обовʼязковий Опис
cash_register_idstring (uuid)—Реєстратор, на якому реєструють документ. Обов'язковий для POST /v1/receipts; у маршрутах, де касу вже задано в URL, поле або відсутнє, або збігається з нею, інакше 422.
typestringтакsale — реалізація; return — повернення; storno — сторно.salereturnstorno
cashierstring—Ім'я касира, яке друкують у чеку (CASHIER); без нього рядка на чеку не буде.
commentstring—Вільна примітка, яку друкують на самому документі (CHECKHEAD/COMMENT) — наприклад номер замовлення.
sold_atstring (date-time)—Момент фактичного продажу, якщо документ дійшов до сервісу пізніше за касу. Це не фіскальний час документа: ДПС приймає ORDERDATE/ORDERTIME лише в межах приблизно хвилини від власного годинника, тож документ позначено моментом подання. Поле друкує на документі рядок «Продаж від 03.09.2026 18:11» — перед приміткою з comment, якщо вона є. Час у майбутньому або старіший за 31 день — 422.
modestring—Режим доставки результату; параметр запиту ?mode= має перевагу над цим полем.syncasync
originalobject—Зв'язок із початковим чеком; обов'язковий для повернення та сторно. Повернення звіряється з початковим чеком, якщо той видано в цьому сервісі: це має бути чек продажу в тому самому режимі (тестовому чи фіскальному), не сторнований, а сума всіх повернень за ним не може перевищувати суму продажу до заокруглення. Інакше завдання завершується помилкою з кодом return.* і документ не реєструється. Чек, виданий поза сервісом, приймається без звірки — див. result.receipt.original.verified.
fiscal_numberstringтакФіскальний номер початкового чека.
register_fiscal_numberstring—Фіскальний номер ПРРО, на якому видано початковий чек, якщо це інший реєстратор. Без нього чек шукається на реєстраторі повернення.
datestring (date)—У форматі РРРР-ММ-ДД.
itemsarray<ReceiptItem>такПозиції чека; щонайменше одна.
paymentsarray<ReceiptPayment>такФорми оплати чека; щонайменше одна.
rounding_stepstring—Крок заокруглення готівки десятковим рядком ("0.10" за правилами НБУ); без цього поля заокруглення не застосовується.

ServiceReceiptInput object

Рух готівки повз продаж: service_in — службове внесення (DOCSUBTYPE 2), service_out — службова видача, тобто інкасація (DOCSUBTYPE 4). Обробляється як звичайний розрахунковий документ: автоматичне відкриття зміни в керованих режимах, офлайн-сесія, журнал і тарифікація як за чек. У підсумках зміни сума йде окремо в service_input/service_output і потрапляє до ZREPBODY Z-звіту; cash_balance зсувається на всю суму. Отримання підкріплення (DOCSUBTYPE 3) не підтримується.

Поле Тип Обовʼязковий Опис
cash_register_idstring (uuid)—Реєстратор, на якому реєструють документ. Обов'язковий для POST /v1/receipts; у маршрутах, де касу вже задано в URL, поле або відсутнє, або збігається з нею, інакше 422.
typestringтакservice_in — службове внесення; service_out — службова видача (інкасація).service_inservice_out
cashierstring—Ім'я касира, яке друкують у документі (CASHIER); без нього рядка не буде.
commentstring—Вільна примітка, яку друкують на документі (CHECKHEAD/COMMENT). Для руху готівки це єдине місце, де сказано, за що гроші: «Інкасація», «Розмінна монета».
sold_atstring (date-time)—Момент фактичного продажу, якщо документ дійшов до сервісу пізніше за касу. Це не фіскальний час документа: ДПС приймає ORDERDATE/ORDERTIME лише в межах приблизно хвилини від власного годинника, тож документ позначено моментом подання. Поле друкує на документі рядок «Продаж від 03.09.2026 18:11» — перед приміткою з comment, якщо вона є. Час у майбутньому або старіший за 31 день — 422.
modestring—Режим доставки результату; параметр запиту ?mode= має перевагу над цим полем.syncasync
sumstringтакСума руху — додатний десятковий рядок, до 2 знаків після коми; позицій у такого документа немає.

ReceiptItem object

Грошові величини — десяткові рядки ("259.90"); кількість допускає до 3 знаків після коми, ціни — до 2.

Поле Тип Обовʼязковий Опис
codestring—Внутрішній код товару.
barcodestring—Штрихкод товару.
uktzedstring—Код УКТЗЕД; взаємовиключний з dkpp.
dkppstring—Взаємовиключний з uktzed.
namestringтакНазва позиції, як її друкують у чеку.
unit_codeinteger—Код одиниці виміру (UNITCD).
unit_namestring—Назва одиниці виміру: «шт», «кг».
quantitystringтакКількість — десятковий рядок, до 3 знаків після коми.
pricestringтакЦіна за одиницю — десятковий рядок, до 2 знаків після коми.
tax_lettersstring—Податкові літери з tax_rates реєстратора, напр. "А" або "АГ". Порожнє значення застосовує default_tax_letter реєстратора (а якщо типової літери немає — позиція лишається без податку); "-" примусово робить позицію неоподаткованою.
discountobject—Знижка на позицію.
percentstring—Позначає відсоткову знижку; суму все одно вказують у sum.
sumstringтакСума знижки десятковим рядком — її вказують і для відсоткової знижки.
excise_labelsarray<string>—Коди марок акцизного податку.
commentstring—Примітка до позиції.

PaymentType string

Форма оплати; фіскальний код і назву, які потраплять у чек, визначає сервіс: cash — 0 ГОТІВКА, card — 301 КАРТКА, certificate — 305 СЕРТИФІКАТ, bank_transfer — 306 ПЕРЕКАЗ З ПОТОЧНОГО РАХУНКУ, direct_debit — 100000 ПРЯМИЙ ДЕБЕТ. Залишок готівки реєстратора рухає лише cash.

cashcardcertificatebank_transferdirect_debit

ReceiptPayment object

Одна оплата чека: форма, сума і — для картки — реквізити еквайрингу.

Поле Тип Обовʼязковий Опис
typePaymentTypeтакФорма оплати; фіскальний код і назву, які потраплять у чек, визначає сервіс: cash — 0 ГОТІВКА, card — 301 КАРТКА, certificate — 305 СЕРТИФІКАТ, bank_transfer — 306 ПЕРЕКАЗ З ПОТОЧНОГО РАХУНКУ, direct_debit — 100000 ПРЯМИЙ ДЕБЕТ. Залишок готівки реєстратора рухає лише cash.
sumstringтакСума, віднесена на цю форму оплати.
providedstring—Отримано готівкою; решта = provided − sum.
meansstring—Засіб оплати — чим саме внесено кошти; Положення № 13 (розд. II п.2, рядок 19) вимагає його окремо від форми оплати. Словник — той самий, що в прикладах ДПС: «Картка», «Переказ з поточного рахунку», «Подарунковий сертифікат», «Попередня оплата», «Прямий дебет», а також те, чого немає в type: «ПЕРЕКАЗ З КАРТКИ», «ТАЛОН», «ЖЕТОН». Заміняє лише назву, що друкується (PAYFORMNM); фіскальний код форми (PAYFORMCD) визначає type. Для cash не приймається.
cardobject—Реквізити еквайрингу (рядки 12–17). Усі три поля acquirer_* описують еквайра торговця, а не самого торговця.
system_namestring—Назва платіжної системи (рядок 17).
acquirer_idstring—Ідентифікатор еквайра (рядок 12).
acquirer_tax_idstring—Податковий номер еквайра (рядок 12).
acquirer_namestring—Найменування еквайра (рядок 12).
transaction_datestring (date-time)—Дата й час транзакції на платіжному пристрої (POSTRANSDATE).
transaction_numberstring—Номер транзакції на платіжному пристрої (POSTRANSNUM).
device_idstring—Ідентифікатор платіжного пристрою (рядок 13).
epz_detailsstring—Замаскований номер картки.
auth_codestring—Код авторизації (рядок 17).
commissionstring—Сума комісійної винагороди еквайра за цим платежем — рядок 14 форми ФКЧ-1, «у разі наявності». У звичайному продажу лишається порожнім: заповнюють лише там, де комісію платить платник — приймання коштів для подальшого переказу та видача готівки держателям карток (розділи VI і VII Положення № 13). Нуль означає, що комісії немає, і рядок не друкується.

WebhookEvent string

task.completed і task.failed — кожне завершене завдання; shift.opened і shift.closed — життєвий цикл зміни; key.expiring — раз на добу про сертифікат ключа, що спливає протягом 30 днів; register.offline, register.online, register.offline_limit — офлайн-сесії та законні межі їх тривалості (36 і 168 годин); register.offline_abandoned — від офлайн-сесії відмовлено, у події перелік документів, яких ДПС не отримала; register.remediated — автоматичне усунення розбіжності з ДПС; register.needs_attention — розбіжності не усуваються самі, потрібне втручання людини; client.balance_low — баланс опустився нижче порога, попередження перед тим, як чеки почнуть відхилятися з 402; receipt.registered — зареєстровано чек (продаж, повернення, сторно, службове внесення чи видача) з повним вмістом; схема даних — ReceiptRegisteredData.

task.completedtask.failedshift.openedshift.closedkey.expiringregister.offlineregister.onlineregister.offline_limitregister.offline_abandonedregister.remediatedregister.needs_attentionclient.balance_lowreceipt.registered

ReceiptRegisteredData object

Дані події receipt.registered: документ у тому вигляді, в якому його отримала ДПС. Суми — десяткові рядки в гривнях, як у запиті чека.

Поле Тип Обовʼязковий Опис
cash_register_idstring (uuid)такКаса.
register_fiscal_numberstringтакФіскальний номер ПРРО.
document_idstring (uuid)такДокумент у журналі.
task_idstring (uuid)такЗавдання, яке його зареєструвало.
typestringтакВид документа.salereturnstornoservice_inservice_out
sourcestringтакЗвідки подано чек — через API чи з панелі.apicabinet
user_idstring (uuid)—Обліковий запис панелі, з якого подано чек; лише для source cabinet. Власник бачить його в переліку команди.
cashierstring—Ім’я касира, надруковане на чеку.
local_numberinteger (int64)такЛокальний номер документа.
fiscal_numberstringтакФіскальний номер документа; в офлайні — обчислений локально.
offlinebooleanтакЧек подано в офлайн-сесії.
testingbooleanтакТестовий документ.
shift_idstring (uuid)такЗміна.
shift_numberinteger (int64)—Номер зміни на касі.
issued_atstring (date-time)такДата й час документа, як їх надруковано.
totalstringтакСума до сплати; для службових документів — сума руху готівки.
roundingstring—Заокруглення готівки, якщо було.
itemsarray<object>—Рядки чека.
codestring—
barcodestring—
uktzedstring—
dkppstring—
namestringтак
unit_namestring—
quantitystringтак
pricestringтак
coststring—Вартість рядка до знижки.
tax_lettersstring—
discountstring—Сума знижки.
paymentsarray<object>—Форми оплати.
typestring—Форма оплати, як у запиті чека.
namestringтакНазва, надрукована на чеку.
sumstringтак
taxesarray<object>—Податки чека.
letterstring—
namestringтак
ratestringтакСтавка, відсотки.
turnoverstringтакОборот за ставкою.
sumstringтакСума податку.
excludedboolean—Податок нараховано понад ціну.
commentstring—Коментар, надрукований на чеку.
originalobject—Чек, який повертає повернення чи скасовує сторно.
fiscal_numberstringтак
document_idstring (uuid)—Оригінал у журналі, якщо він там є.
verifiedbooleanтакЛише для повернення: оригінал знайдено в журналі й перевірено залишок.
receipt_urlstring—Копія чека для покупця.
tax_urlstring—Чек у кабінеті платника ДПС; відсутнє, доки офлайн-чек не прийнято ДПС.

WebhookEndpoint object

Точка доставки подій: куди слати й на які саме.

Поле Тип Обовʼязковий Опис
idstring (uuid)такІдентифікатор вебхука.
urlstringтакАбсолютний http(s)-URL приймача.
eventsarray<WebhookEvent>такПорожній список означає підписку на всі події.task.completedtask.failedshift.openedshift.closedkey.expiringregister.offlineregister.onlineregister.offline_limitregister.offline_abandonedregister.remediatedregister.needs_attentionclient.balance_lowreceipt.registered
activebooleanтакДоставка ввімкнена; false призупиняє її, не втрачаючи черги.
created_atstring (date-time)такКоли вебхук створено.
updated_atstring (date-time)такКоли його востаннє змінювали.

WebhookDelivery object

Одна доставка події та її стан.

Поле Тип Обовʼязковий Опис
idstring (uuid)такІдентифікатор доставки — його ж передають у replay.
eventstringтакТип події доставки. Крім значень WebhookEvent, доставка може нести зарезервовані типи, на які не можна підписатися: webhook.ping (тестова відправка) і system.dps_* (події доступності ДПС).
statusstringтакpending — у черзі; delivering — триває спроба; delivered — доставлено; failed — спроба невдала, буде повтор; dead — спроби вичерпано.pendingdeliveringdeliveredfaileddead
attemptsintegerтакСкільки спроб уже зроблено.
cash_register_idstring (uuid)—Каса, якої стосується подія; у подій рівня клієнта відсутня.
sequenceinteger (int64)—Номер події в межах каси (поле sequence конверта); за ним упорядковують події. У подій рівня клієнта відсутній.
dataanyтакКорисне навантаження події (поле data конверта).
last_errorstring—Чим завершилася остання невдала спроба: код і початок відповіді приймача або причина збою з’єднання (зокрема TLS).
next_attempt_atstring (date-time)—Коли буде наступна спроба; у завершених відсутнє.
created_atstring (date-time)такКоли подію поставлено в чергу.
delivered_atstring (date-time)—Коли приймач відповів успіхом.

Money string

Копійки десятковим рядком (numeric(14,4)); ніколи не число з рухомою комою.

CashAmount string

Гривні з копійками десятковим рядком — у тій самій формі, що й суми в чеках; Money натомість рахує копійки і належить тарифікації.

CashBalance object

Готівка в касі реєстратора. Це лічильник, а не фіскальна величина: він стартує з нуля при створенні реєстратора і враховує лише документи, що пройшли через цей сервіс. Рухають його готівкові рядки оплат — додають на реалізації, віднімають на поверненні та сторно — і службові документи; безготівкові форми не рухають нічого. Береться sum рядка оплати, решта вже врахована. Лічильник належить реєстратору, а не зміні, і Z-звіт його не скидає. Від'ємне значення означає, що в касі було більше, ніж побачив сервіс. Переставити лічильник: PUT /v1/cash-registers/{id}/cash-balance.

Поле Тип Обовʼязковий Опис
amountCashAmountтакГривні з копійками десятковим рядком — у тій самій формі, що й суми в чеках; Money натомість рахує копійки і належить тарифікації.
as_ofstring (date-time)—Коли залишок рухався востаннє. Null — рухів ще не було, тож нуль означає «немає даних», а не «каса порожня».

ShiftTotalsSide object

Один бік підсумків зміни — реалізація або повернення: кількість документів, сума і розклад за формами оплати.

Поле Тип Обовʼязковий Опис
countintegerтакКількість розрахункових документів цього боку.
sumCashAmountтакГривні з копійками десятковим рядком — у тій самій формі, що й суми в чеках; Money натомість рахує копійки і належить тарифікації.
pay_formsarray<object>—Накопичено за формами оплати. code/name — пара PAYFORMCD / PAYFORMNM, яка піде в Z-звіт; масиву немає, поки бік порожній.
codeintegerтакPAYFORMCD — фіскальний код форми оплати.
namestringтакPAYFORMNM — назва форми оплати, як її друкують.
sumCashAmountтакГривні з копійками десятковим рядком — у тій самій формі, що й суми в чеках; Money натомість рахує копійки і належить тарифікації.

ShiftTotals object

Поточні підсумки відкритої зміни — те саме накопичення, з якого буде побудований Z-звіт. Сторно віднімається з боку реалізації, а не додається до повернень. Службові внесення й видачі не належать до жодного боку. Розкладу за податковими літерами тут немає — він є лише в Z-звіті.

Поле Тип Обовʼязковий Опис
realizShiftTotalsSideтакОдин бік підсумків зміни — реалізація або повернення: кількість документів, сума і розклад за формами оплати.
returnShiftTotalsSideтакОдин бік підсумків зміни — реалізація або повернення: кількість документів, сума і розклад за формами оплати.
service_inCashAmountтакГривні з копійками десятковим рядком — у тій самій формі, що й суми в чеках; Money натомість рахує копійки і належить тарифікації.
service_outCashAmountтакГривні з копійками десятковим рядком — у тій самій формі, що й суми в чеках; Money натомість рахує копійки і належить тарифікації.

CashBalanceDeclaration object

Лічильник до заяви, після неї і поправка між ними.

Поле Тип Обовʼязковий Опис
amountCashAmountтакГривні з копійками десятковим рядком — у тій самій формі, що й суми в чеках; Money натомість рахує копійки і належить тарифікації.
previousCashAmountтакГривні з копійками десятковим рядком — у тій самій формі, що й суми в чеках; Money натомість рахує копійки і належить тарифікації.
adjustmentCashAmountтакГривні з копійками десятковим рядком — у тій самій формі, що й суми в чеках; Money натомість рахує копійки і належить тарифікації.

BillingUsage object

Баланс і підсумок тарифікації за період.

Поле Тип Обовʼязковий Опис
balanceMoneyтакКопійки десятковим рядком (numeric(14,4)); ніколи не число з рухомою комою.
soft_limitMoneyтакНижня межа балансу: поки balance < soft_limit, чеки заблоковані.
blockedbooleanтакЧеки зараз заблоковано — балансом або рішенням оператора.
periodobjectтакПеріод, за який пораховано підсумок.
fromstring (date)такВключно.
tostring (date)такНе включно.
receiptsinteger (int64)такКількість тарифікованих чеків за період.
chargedMoneyтакКопійки десятковим рядком (numeric(14,4)); ніколи не число з рухомою комою.
tariffobjectтакТариф, за яким рахували.
plan_idstring (uuid)такІдентифікатор тарифного плану.
price_per_receiptMoneyтакКопійки десятковим рядком (numeric(14,4)); ніколи не число з рухомою комою.

Invoice object

Рахунок за один розрахунковий період.

Поле Тип Обовʼязковий Опис
idstring (uuid)такІдентифікатор рахунка.
period_startstring (date)такВключно.
period_endstring (date)такВключно.
amountMoneyтакКопійки десятковим рядком (numeric(14,4)); ніколи не число з рухомою комою.
currencystringтакВалюта рахунка за ISO 4217 — UAH.
statusstringтакdraft — чернетка; issued — виставлено; paid — оплачено; overdue — прострочено.draftissuedpaidoverdue
created_atstring (date-time)такКоли рахунок сформовано.

DPSPulse object

Режим роботи з ДПС і телеметрія, що його пояснює. Конвеєр реагує на effective.

Поле Тип Обовʼязковий Опис
effectivestringтакПідсумковий операційний режим, якого дотримується конвеєр.onlineoffline
verdictstringтакВердикт детектора — відрізняє «повільно» від «недоступно».onlinedegradedoffline
sincestring (date-time)такВідколи діє поточний effective-режим.
latency_msinteger (int64)такЗатримка успішних викликів у вікні детектора, мс.
samplesintegerтакСкільки викликів у вікні.
failuresintegerтакСкільки з них невдалих.
last_ok_atstring (date-time)—Остання успішна відповідь ДПС.
last_probe_atstring (date-time)—Остання перевірка доступності ДПС.
tunablesobjectтакПороги, за якими судять числа вище: ширина вікна, поріг degraded і крок перевірок.
window_secondsinteger (int64)такШирина вікна детектора, с.
degraded_latency_msinteger (int64)такЗатримка, від якої відповідь вважають повільною, мс.
probe_interval_secondsinteger (int64)такКрок перевірок, с.