Перейти к содержаниюСправка

Receipt. Продажи

Метод возвращает чеки продаж и возвратов вместе со строками, оплатой и данными о кассе. Чеки можно только читать: создаются они кассовым приложением. Выгрузку можно вести по датам либо по маркеру — так удобно получать только новые чеки после прошлого обмена.

Как получить ключ, как формируются запросы и какие бывают ответы и ошибки — в статье Общие сведения. Здесь описаны только особенности метода receipt.

Запрос

Все параметры, кроме ключа apikey и формата format, принимаются и в адресной строке, и в теле POST.

GET https://[компания].myvirtualpos.ru/api/receipt?apikey=MySecret&datefrom=20260901&dateto=20260902&warehouseid=8

Параметры запроса

datefrom Дата ГГГГММДД или дата и время ГГГГММДДччммсс. Чеки, оформленные не раньше указанного момента. Если не указан, отбираются чеки за последние days дней
dateto Дата ГГГГММДД или дата и время ГГГГММДДччммсс. Чеки, оформленные раньше указанного момента (граница не включается). Для одного дня укажите следующий день
days Число. Глубина поиска в днях от текущего момента, если не указан datefrom. По умолчанию 25
warehouseid Число. Ид точки продаж. Только при выгрузке по датам
warehouseid2 Строка. Код точки продаж во внешней системе. Только при выгрузке по датам
marker Маркер последнего полученного чека вида метка:номер: вернуть чеки, появившиеся или изменившиеся после него. При указании маркера параметры datefrom, dateto, days, warehouseid и warehouseid2 игнорируются
fields Дополнительные поля через двоеточие, например itemname:user_login. Список допустимых значений ниже
bankTransaction 1 — добавить в чек данные банковской транзакции
format json (по умолчанию) или xml

Чеки возвращаются по возрастанию ид. В выгрузку попадают только фискальные чеки: с типом «продажа» или «возврат» (и операции покупки у клиента) и с заполненным регистрационным номером фискального регистратора.

Выгружайте порциями. Метод собирает в одном ответе все чеки за период вместе со строками. За большой период это долго и может закончиться ошибкой сервера по памяти. Ограничивайте выборку датами и точкой продаж либо используйте маркер.

Выгрузка новых чеков по маркеру

Каждый чек содержит поле marker вида 1780236802:0000386289. Запомните маркер последнего обработанного чека и передайте его в параметре marker в следующем запросе: ответ будет содержать только чеки, которые появились или были изменены после него. Так ничего не теряется и не приходят повторы.

Маркер состоит из двух чисел: времени последнего изменения чека и ид чека. Оба обязательны, ид не может быть просто 0. Для первой выгрузки используйте даты, а маркер берите из полученных чеков.

Дополнительные поля (''fields'')

Через двоеточие можно перечислить:

itemname В строку: название товара
itemid2 В строку: код товара во внешней системе
article В строку: артикул
lot_number В строку: серия (партия)
manufacturer_id, manufacturer_name В строку: ид и название производителя товара
discount_name В строку: название акции, по которой дана скидка
warehouseid2 В чек: код точки продаж во внешней системе
user_login В чек: логин кассира
user_fio В чек: фамилия и инициалы кассира
card_id, card_id2 В чек: ид карты клиента и её код во внешней системе
customer_id, customer_id2 В чек: ид клиента и его код во внешней системе
customer_fname, customer_lname, customer_mname В чек: имя, фамилия и отчество клиента
session_open_datetime В чек: дата и время открытия смены

Если указано неизвестное поле, метод вернёт ошибку со списком допустимых значений.

Структура ответа

success 1 — данные получены
type Тип данных, всегда receipt
count Количество чеков в ответе
receipts Список чеков. Каждый обёрнут в объект receipt

Поля чека

Пустые значения в JSON приходят как null, в XML — как пустой элемент.

Основное

receipt_id Строка. Уникальный идентификатор чека (GUID)
marker Строка. Маркер чека для выгрузки новых данных
doc_type Строка. Тип чека: sale — продажа, return — возврат, buy — покупка у клиента, buy_return — возврат покупки
date Строка. Дата и время чека, формат дд.мм.гггг чч:мм:сс
amount Строка. Сумма чека с учётом скидки
discount Строка. Скидка на чек
discount_misc Строка. Дополнительная скидка: часть, оплаченная купоном или сертификатом
round_amount Строка. Сумма округления
items_count Число. Количество строк в чеке
items Список строк чека. Каждая строка обёрнута в объект item

Касса и кассир

terminalid Строка. Регистрационный номер фискального регистратора. Если фискальный регистратор не используется — уникальный идентификатор кассы
short_fiscal_serial_number Строка. Краткий серийный номер ККТ
terminal_number Число. Номер кассы в зале
terminal_description Строка. Описание кассового места
device_model_name, device_model_version Строка. Модель и версия ККТ
warehouseid Число. Ид точки продаж
user_id Число. Ид кассира
corp_code Строка. Корпоративный код кассира
fr_session Число. Номер смены
doc_num Число. Номер документа по данным фискального регистратора
doc_num_session Число. Номер чека в смене по данным фискального регистратора
fiscal_attribute Строка. Фискальный признак документа
is_electronic Число. 1 — покупателю отправлен электронный чек

Оплата

pay_cash Строка. Оплачено наличными
pay_card Строка. Оплачено банковской картой
pay_sbp Строка. Оплачено через систему быстрых платежей
pay_credit, pay_tare Строка. Оплата в кредит и тарой; не используются
pay_bonus_id Число. Ид бонусной программы, по которой списаны бонусы
pay_bonus_amount Строка. Списано бонусов
pinpad_name Строка. Признак платёжного терминала
vat10_sum, vat18_sum, vat20_sum Строка. Сумма НДС по позициям со ставкой 10%, 18% и 20%

Дополнительные блоки

sale_receipt_id, sale_receipt_date Только у возвратов: ид (GUID) и дата первоначального чека продажи
bankTransaction При bankTransaction=1: данные банковской транзакции — payment_type (card), rrn, trx_date, term_num, auth_code, card_type, card_name, amount_clear, client_card (номер карты в маскированном виде). Пусто, если по чеку нет данных терминала
coupons Если часть чека оплачена сертификатом: список coupon с barcode и номиналом sum. Тогда в bankTransaction приходят payment_type равный coupon и payment_denomination — сумма номиналов

Поля строки чека

line_id Строка. Уникальный идентификатор строки (GUID)
itemid Число. Ид товара
quantity Строка. Количество
pricebase Строка. Цена за единицу по прайс-листу без скидки
pricesale Строка. Цена продажи за единицу с учётом скидки
discount Строка. Сумма скидки по строке
amount Строка. Сумма по строке с учётом скидки
cogs Строка. Себестоимость единицы
barcode Строка. Штрихкод
vat_applied Строка. Ставка НДС; -1 — без НДС
vat_amount Строка. Сумма НДС
onhand_id Число. Ид товарного остатка, из которого списан товар
user_id Всегда пусто (не используется)

Пример ответа

{
  "success": 1,
  "type": "receipt",
  "count": 1,
  "receipts": [
    {
      "receipt": {
        "receipt_id": "57307ECE-1489-4B1F-A3AE-3F4E5CDC0BF1",
        "marker": "1780232425:0000386281",
        "terminalid": "100000032",
        "warehouseid": 8,
        "user_id": 3,
        "corp_code": "",
        "fr_session": 10,
        "doc_type": "sale",
        "doc_num": 23,
        "doc_num_session": 15,
        "date": "31.05.2026 16:00:23",
        "discount": "0.00",
        "discount_misc": "0.00",
        "amount": "150.00",
        "round_amount": "0.00",
        "pay_cash": "0.00",
        "pay_card": "150.00",
        "pay_tare": "0.00",
        "pay_credit": "0.00",
        "pay_sbp": "0.00",
        "pay_bonus_id": null,
        "pay_bonus_amount": "0.00",
        "pinpad_name": "standalone",
        "terminal_number": 2,
        "short_fiscal_serial_number": "000003",
        "device_model_name": "",
        "device_model_version": "",
        "terminal_description": "Касса № 2",
        "is_electronic": 0,
        "fiscal_attribute": null,
        "vat10_sum": "0.00",
        "vat18_sum": "0.00",
        "vat20_sum": "0.00",
        "items_count": 1,
        "items": [
          {
            "item": {
              "line_id": "CEDC9509-633B-5B89-7F57-B56588767BFA",
              "itemid": 4620,
              "quantity": "1.000",
              "pricebase": "150.00",
              "pricesale": "150.0000",
              "discount": "0.00",
              "amount": "150.00",
              "barcode": null,
              "cogs": "0.00",
              "user_id": null,
              "vat_applied": "-1.00",
              "vat_amount": "0.00",
              "onhand_id": 81540
            }
          }
        ]
      }
    }
  ]
}

Тот же ответ при format=xml (сокращённо):

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <success>1</success>
  <type>receipt</type>
  <count>1</count>
  <receipts>
    <receipt>
      <receipt_id>57307ECE-1489-4B1F-A3AE-3F4E5CDC0BF1</receipt_id>
      <marker>1780232425:0000386281</marker>
      <doc_type>sale</doc_type>
      <amount>150.00</amount>
      <!-- остальные поля чека -->
      <items_count>1</items_count>
      <items>
        <item>
          <line_id>CEDC9509-633B-5B89-7F57-B56588767BFA</line_id>
          <itemid>4620</itemid>
          <quantity>1.000</quantity>
          <!-- остальные поля строки -->
        </item>
      </items>
    </receipt>
  </receipts>
</root>

Примеры запросов

Задача Запрос
Чеки за последние 25 дней /api/receipt?apikey=MySecret
Чеки за сутки по точке продаж /api/receipt?apikey=MySecret&datefrom=20260901&dateto=20260902&warehouseid=8
Чеки за интервал времени /api/receipt?apikey=MySecret&datefrom=20260901090000&dateto=20260901180000
Только новые чеки после прошлого обмена /api/receipt?apikey=MySecret&marker=1780236802:0000386289
Чеки с названиями товаров и кассиром /api/receipt?apikey=MySecret&datefrom=20260901&dateto=20260902&fields=itemname:article:user_login
Чеки с банковскими транзакциями /api/receipt?apikey=MySecret&datefrom=20260901&dateto=20260902&bankTransaction=1

Ошибки

Ошибка авторизации и общие ошибки описаны в статье Общие сведения.

Сообщение Причина Что делать
Incorrect date format dateFrom='…' / dateTo='…' Дата не в формате ГГГГММДД или ГГГГММДДччммсс Передайте дату, например 20260901
Error parse marker '…'. Example 1394804029:000000010 (timestamp:id) Маркер не содержит двух частей через двоеточие Передайте маркер из ответа без изменений
Error parse marker '…'. Timestamp is not numeric / Id is not numeric Части маркера не числа Передайте маркер из ответа без изменений
Error parse marker '…'. Timestamp not found / Id not found Одна из частей маркера пуста или равна 0 Используйте маркер из ответа
Field '…' not found. Use combination of: […] Неизвестное поле в fields Используйте поля из списка

Если по условиям ничего не найдено, метод возвращает успешный ответ с count равным 0 и пустым списком receipts.

Связанные разделы