QUINCEFINСпробувати
Відкрити меню

QUINCE API. Роздріб: чеки та повернення

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

Методи та авторизація

МетодДокументи
POST /api/v2/document/receipt/listЧеки, Type = RECEIPT
POST /api/v2/document/purchase_return/listЧеки повернення, Type = PURCHASE_RETURN

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

Використовуйте налаштування підключення QUINCE API та заголовок Content-Type: application/json. Для API-ключа заголовок авторизації має вигляд Authorization: ApiKey <ваш-ключ>. Компанія облікового запису та користувач визначаються авторизацією: передавати TenantId, UserId або змінювати тип документа в тілі запиту не потрібно.

Застосовуються доступність типу документа за тарифом, право перегляду та доступ до конкретних документів. Недоступні чеки не входять ні у відповідь, ні в кількість результатів. Окреме право редагування для читання не потрібне.

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

ПолеТипПоведінка
filter.Idinteger або stringОдин документ. Без дат доступний незалежно від його дати.
filter.DateFromstringПочаток періоду включно: yyyy-mm-dd або yyyy-mm-dd HH:mm:ss.
filter.DateTostringКінець періоду включно у тому самому форматі; дата без часу включає весь день.
filter.Companyinteger або stringОрганізація.
filter.Posinteger або stringТочка продажу.
filter.Fixedbooleantrue — проведені, false — непроведені; без поля — обидва стани.
filter.Archivebooleanfalse або відсутнє поле — неархівні; true — лише архівні.
pageintegerНомер сторінки від 1; типово 1.
limitintegerКількість документів на сторінці від 1 до 1000; типово 100.

Усі фільтри поєднуються через AND. Ідентифікатори додатні; великі bigint передавайте десятковим рядком, щоб JavaScript не округлював значення. page та limit передавайте числами, логічні поля — true або false.

Дати інтерпретуються в часовому поясі користувача API. Якщо немає ані Id, ані дат, повертаються чеки за поточний день цього користувача. Дати потрібно передавати парою; можна поєднати дату без часу з датою і часом. Точність часу — одна секунда, кінцева секунда включається повністю. Допустимі календарні дати — від 1753 до 9998 року. Невалідний або зворотний діапазон повертає помилку.

Для історичної аналітики передавайте період явно. Налаштування касового екрана «показувати лише сьогодні» не замінює період цього API; права доступу залишаються чинними.

Приклад отримання чеків за місяць

{
  "filter": {
    "DateFrom": "2026-10-01",
    "DateTo": "2026-10-31",
    "Fixed": true,
    "Archive": false
  },
  "page": 1,
  "limit": 100
}

Надішліть запит до /api/v2/document/receipt/list. Для повернень використайте той самий фільтр із /api/v2/document/purchase_return/list.

Один чек із рядками

{ "filter": { "Id": "123456" } }

Окремий метод завантаження не потрібний: list із фільтром Id повертає один доступний документ із Rows. Для архівного документа додайте "Archive": true.

Відповідь

Нижче скорочений приклад із вигаданими даними; решта доступних полів описана в таблицях.

{
  "success": true,
  "data": [{
    "Id": 123456,
    "Type": "RECEIPT",
    "Number": 42,
    "Date": "2026-10-15T12:30:00",
    "Sum": 100.5,
    "SumCash": 40.5,
    "SumCard": 60,
    "Fixed": true,
    "Void": false,
    "Rows": [{
      "Id": 654321,
      "RowNo": 1,
      "Product": 1001,
      "ProductName": "Демонстраційний товар",
      "Qty": 2,
      "Price": 50.25,
      "Sum": 100.5,
      "PriceWithoutDiscount": 55,
      "PercentDiscount": 8.636
    }]
  }],
  "paging": { "page": 1, "size": 100, "totalItems": 1, "totalPages": 1 }
}

Поля документа

ПоляЗначення
Id, Type, Number, Date, DateModifiedІдентифікатор, тип, номер, дата та час останньої зміни. Дати — у часовому поясі користувача.
Sum, SumVat, SumWithoutVat, VatIncludeЗбережена сума документа, ПДВ, сума без ПДВ та ознака включення ПДВ.
SumWithoutDiscountЗбережена сума до знижки.
SumCash, SumCardЗбережені оплати готівкою та карткою. Вони не є сумами після вирахування комісії еквайрингу.
Company, Pos, Store, PartnerОрганізація, точка продажу, склад і партнер: об’єкти з Id та Name.
CurrencyВалюта документа: Id, Code; незаповнені реквізити можуть бути null.
CashAccount, TerminalКаса та термінал: Id, Name.
StatusКористувацький статус: Id, Name. Проведення визначається окремо полем Fixed.
Fixed, VoidПроведення та архівність.
Fiscalized, ReceiptLinkЗбережена ознака фіскалізації та посилання на чек, якщо воно заповнене.
Responsible, CommentID відповідального та коментар.
ParentDocДоступний батьківський документ: Id, Type, Number. Для пов’язаного повернення це вихідний чек. Якщо зв’язку або права перегляду немає, реквізити порожні.
RowsМасив товарних і сервісних рядків цього документа.

Поля рядка

ПоляЗначення
Id, RowNoID та номер рядка.
Product, ProductName, Article, Kind, UnitID позиції, назва, артикул, тип позиції та ID одиниці виміру.
Qty, Price, Sum, SumVatЗбережені кількість, ціна, сума та ПДВ рядка.
PriceWithoutDiscount, PercentDiscountЦіна до знижки та відсоток знижки.
StoreСклад рядка: Id, Name, якщо заповнений.

Незаповнені числові суми повертаються як 0. API віддає збережені значення, не перераховує проведення чи собівартість. Для чистих продажів враховуйте чеки повернення окремо: їхні суми та кількості не змінюють знак автоматично. Оплати та сума документа можуть відрізнятися, зокрема через бонусні розрахунки; не підміняйте Sum виразом SumCash + SumCard.

Пагінація та порожній результат

Документи впорядковані за Id за зростанням, рядки — за номером рядка та Id. Збільшуйте page до paging.totalPages, зберігаючи фільтри й limit. Кількість рахується лише за доступними документами. Якщо документи паралельно змінюються, повторна вибірка може мати іншу кількість: набір сторінок не є незмінним знімком.

Коли нічого не знайдено, відповідь містить success: true, data: [], totalItems: 0 і totalPages: 0. Сторінка за межами результатів також має порожній data, але зберігає загальну кількість знайдених документів. Недоступний або чужий ID не розкриває документ.

Помилки

codeПричина
VALIDATION_ERRORНевалідний формат фільтра, дата, ID, логічне поле або пагінація.
ACCESS_DENIEDНемає права перегляду типу документа.
FEATURE_UNAVAILABLEТип документа недоступний за тарифом.
UNKNOWNІнша серверна помилка; перевірте error.

Помилка має форму {"success": false, "error": "…", "code": "…"}. Перевіряйте поле success, а не лише HTTP-статус. Не додавайте відхилену або порожню відповідь до обороту як успішно прочитаний чек.

Фіскальні чеки

Фіскальні чеки отримуйте окремим методом POST /api/v2/document/fiscal_receipt/list. Кожен запис містить посилання на чек і SourceDocument — документ, з якого його видано. Фільтри, пагінація та повторний обмін описані в статті Журнал фіскальних чеків.