Cart.Add

Создаёт отдельную сохранённую корзину с переданными позициями.

Для авторизации передайте Bearer-токен интеграции в HTTP-заголовке. Подробнее — авторизация API.

Входные параметры

Название Тип данных Обязательность Описание
external_id string Обязательный Ключ создания корзины, от 1 до 100 символов, уникален в пределах интеграции
items array Обязательный От 1 до 150 позиций; суммарно в корзине не больше 150
items[].item_id int64 Обязательный Локальный ID любого доступного товара кассы из Item.Get или Item.Upsert
items[].price int64 Необязательный Цена единицы в тийинах, не меньше 0; без поля берётся цена из справочника
items[].quantity int64 Обязательный Количество ×1000, больше 0; 1000 означает одну единицу
items[].discount int64 Необязательный Скидка на позицию в тийинах, по умолчанию 0; не больше суммы позиции
items[].label string Необязательный Маркировка единицы; при передаче проверяется её формат и соответствие штрихкоду

Реквизиты берутся из ранее сохранённого товара. Переданная price действует только для этой позиции корзины и не меняет справочник. Сумма позиции: price × quantity / 1000, округлённая до целого тийина по правилу округления половин от нуля, минус discount. Скидка передаётся на всю позицию, а не на единицу. Данные сохраняются на момент добавления; последующие изменения справочника не пересчитывают позиции. Позиции добавляются отдельными строками.

Новый external_id создаёт новую корзину. Входной cart_id не поддерживается: дополнять существующую корзину этим методом нельзя. Повтор с тем же ключом и теми же параметрами возвращает актуальное состояние прежней корзины без дублирования, в том числе после отмены или оформления. Изменённые параметры с тем же ключом дают 703100. Сохраняйте исходные значения и порядок позиций для повтора. Весь запрос атомарен. ID созданной корзины возвращается в поле cart_id ответа.

Маркировку можно дополнить на этапе будущего оформления. Если label передан, количество позиции равно 1000 и одинаковую маркировку нельзя добавить дважды. Финальные проверки продажи, оплаты и фискализации при сохранении корзины не выполняются.

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

Authorization: Bearer <integration-token>
Content-Type: application/json;charset=utf-8
{
    "jsonrpc": "2.0",
    "method": "Cart.Add",
    "params": {
        "external_id": "ADD-001",
        "items": [
            {
                "item_id": 101,
                "quantity": 1000,
                "price": 11000,
                "discount": 1000
            }
        ]
    },
    "id": 2
}

Выходные параметры

Название Тип данных Описание
cart_id string Локальный ID корзины из Cart.Add
status string Состояние корзины: open, process, finished или canceled
receipt_id string или null ID завершённого чека; до завершения null
created_at string Время создания, местное время кассы, YYYY-MM-DD HH:mm:ss
updated_at string Время обновления, местное время кассы, YYYY-MM-DD HH:mm:ss
total int64 Сумма корзины после скидок в тийинах
items array Позиции корзины
items[].item_id int64 Локальный ID товара для Cart.Add
items[].name string Наименование товара
items[].barcode string Штрихкод; пустой при отсутствии
items[].icps string Код ИКПУ
items[].price int64 Цена единицы в тийинах
items[].quantity int64 Количество в тысячных долях единицы; 1000 — одна единица
items[].discount int64 Скидка на всю позицию в тийинах
items[].amount int64 Сумма после скидки в тийинах
items[].vat_value int64 Ставка НДС в сотых долях процента; -1 — без НДС
items[].package_code string или null Код упаковки; null при отсутствии
items[].label string Маркировка единицы; пустая при отсутствии

Результат: cart_id, status (open, process, finished или canceled), receipt_id (ID закрытого чека, до завершения — null), created_at, updated_at (местное время кассы, YYYY-MM-DD HH:mm:ss), total (сумма после скидок, тийины), items.

Каждая позиция содержит item_id, name, barcode, icps, price (цена единицы), quantity (×1000), discount, amount (сумма после скидки), vat_value, package_code и label. Денежные поля указаны в тийинах.

Новая корзина получает статус open. При открытии кассиром она переходит в process; после закрытия чека — в finished. Повтор исходного запроса возвращает актуальное состояние.

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

{
    "jsonrpc": "2.0",
    "result": {
        "cart_id": "0123456789abcdef0123456789abcdef",
        "status": "open",
        "receipt_id": null,
        "created_at": "2026-11-12 10:00:00",
        "updated_at": "2026-11-12 10:00:00",
        "total": 10000,
        "items": [
            {
                "item_id": 101,
                "name": "Тестовый товар",
                "barcode": "4780000000000",
                "icps": "00000000000000000",
                "price": 11000,
                "quantity": 1000,
                "discount": 1000,
                "amount": 10000,
                "vat_value": 0,
                "package_code": null,
                "label": ""
            }
        ]
    },
    "ok": true,
    "id": 2
}

Ошибки: общие ошибки; 701001 — товар не найден или удалён; 701003 — неверные параметры, в том числе неподдерживаемый cart_id, цена, количество, скидка, маркировка либо лимит позиций; 703100 — external_id использован с другими данными. Ошибки маркировки — из перечня.