# Машиночитаемое коммерческое предложение

**Машиночитаемое коммерческое предложение** — ответ поставщика на запрос цены в структурированном виде (JSON по открытой схеме), который ИИ-агент покупателя может без ручного переноса положить в таблицу сравнения: позиции с единицами и количеством, цена и НДС, срок поставки, условия оплаты и доставки, срок действия предложения, реквизиты поставщика, ссылки на документы. Отправляется вместе с обычным письмом и PDF, а не вместо них.

## Зачем это поставщику

Поставщиков всё чаще находит и сравнивает машина. ИИ-агент Сбер2B для закупок (с 28.09.2026) сам ищет поставщиков в открытых источниках и итогах торгов, рассылает запросы, собирает коммерческие предложения и сводит их в таблицу. Казначейство с января 2027 года откроет своего агента в ЕИС для всех государственных заказчиков — он тоже проверяет поставщиков и считает начальную цену контракта.

В таблицу сравнения попадает то, что агент смог прочитать. КП в PDF или в теле письма агент разбирает с ошибками или откладывает для человека. Машиночитаемое КП ложится в таблицу сразу и без искажений: цена за единицу, ступени по количеству, НДС, срок действия — отдельными полями.

## Формат 1.0

Схема: [kp-1.0.schema.json](/mashinochitaemoe-kp/kp-1.0.schema.json) (JSON Schema 2020-12). Лицензия — CC BY 4.0: пользуйтесь, указывая источник. Поля сверх схемы допускаются.

| Поле | Что внутри | Обязательно |
|---|---|---|
| `schema_version` | версия формата, «1.0» | да |
| `quote_id`, `rfq_id` | номер КП и номер запроса | номер КП — да |
| `issued`, `valid_until` | когда выдано и до какого дня действуют цены | да |
| `supplier` | название, ИНН, КПП, ОГРН, почта, сайт | название и ИНН — да |
| `buyer` | покупатель из запроса | нет |
| `currency`, `vat` | валюта (RUB) и НДС: включён ли, ставка | да |
| `items[]` | артикул, наименование, количество, единица (`unit_code` по UN/CEFACT: H87 — штука), цена, сумма, НДС, наличие, срок | артикул, наименование, количество, единица, цена, сумма — да |
| `items[].price_tiers[]` | вся шкала цен по количеству — агент видит, сколько стоит взять больше | нет |
| `total` | сумма и НДС | сумма — да |
| `minimum_order`, `availability`, `lead_time` | минимальная партия, наличие, срок отгрузки | нет |
| `payment_terms` | предоплата, отсрочка, доля в процентах | тип — да |
| `delivery_terms` | самовывоз, перевозчик, доставка поставщика; стоимость или «по тарифу» | да |
| `how_to_order` | что сделать, чтобы получить счёт | нет |

## Как это работает у поставщика

1. Агент или человек отправляет запрос: `POST /api/v1/rfq` с артикулом, количеством и реквизитами покупателя.
2. Если цена позиции известна (прайс со ступенями) — КП приходит **сразу в ответе**. Если нужен расчёт (подбор цвета, изделие под размер) — ответ «запрос принят» с номером, а КП тем же форматом приходит письмом.
3. Отдел продаж получает письмо о каждом запросе — с суммой и ссылкой на КП.
4. Человеку та же ссылка открывается страницей КП, которую можно распечатать в PDF.

## Пример

Первая реализация — клей для акрилового камня LISTACRYL (ООО «Хотьковское РТП»): [listacryl.ru/klej/](https://listacryl.ru/klej/#ceny), запрос — `POST https://listacryl.ru/api/v1/rfq`. Ответ на запрос 300 картриджей (сокращён):

```json
{
 "schema": "https://geooptimization.ru/mashinochitaemoe-kp/kp-1.0.schema.json",
 "schema_version": "1.0",
 "quote_id": "KP-20261024-C75ED1",
 "rfq_id": "RFQ-20261024-C75ED1",
 "issued": "2026-10-24T08:33:27+03:00",
 "valid_until": "2026-11-07",
 "supplier": {
  "name": "ООО «Хотьковское РТП»",
  "inn": "5042004895",
  "kpp": "504201001",
  "ogrn": "1035008368141",
  "email": "sales@listacryl.ru",
  "site": "https://listacryl.ru"
 },
 "buyer": {
  "name": "ООО «Пример»",
  "inn": "7700000000",
  "email": "zakupki@example.ru"
 },
 "currency": "RUB",
 "vat": {
  "included": true,
  "rate": 22
 },
 "items": [
  {
   "line": 1,
   "sku": "LSTC-ADH-75",
   "name": "Клей для акрилового камня LISTACRYL Super Adhesive Acrylic Stone, картридж 75 мл, 10:1",
   "qty": 300,
   "unit": "шт",
   "unit_code": "H87",
   "price": 780,
   "price_tier": "100–999 шт",
   "amount": 234000,
   "vat_amount": 42196.72,
   "availability": "in_stock",
   "shelf_life_months": 12,
   "price_tiers": [
    {
     "min_qty": 10,
     "max_qty": 99,
     "price": 980
    },
    {
     "min_qty": 100,
     "max_qty": 999,
     "price": 780
    },
    {
     "min_qty": 1000,
     "max_qty": 9999,
     "price": 580
    },
    {
     "min_qty": 10000,
     "max_qty": null,
     "price": 380
    }
   ]
  }
 ],
 "total": {
  "amount": 234000,
  "vat_amount": 42196.72,
  "vat_included": true
 },
 "minimum_order": {
  "qty": 10,
  "unit": "шт"
 },
 "payment_terms": {
  "type": "prepayment",
  "percent": 100,
  "text": "100% предоплата по счёту"
 },
 "delivery_terms": {
  "options": [
   {
    "method": "pickup",
    "place": "187110, Ленинградская область, г. Кириши, проспект Победы, 32"
   },
   {
    "method": "carrier",
    "price": null,
    "text": "по тарифу транспортной компании"
   }
  ]
 },
 "how_to_order": "Ответьте на sales@listacryl.ru с номером RFQ-20261024-C75ED1 и реквизитами покупателя — отдел продаж выставит счёт. КП не является публичной офертой; договор заключается выставлением и оплатой счёта."
}
```

## Внедрить у себя

Позиция прайс-листа «Машиночитаемое КП — API запроса КП» — **15 000 ₽** без НДС за сайт (коэффициент движка применяется), срок — 1 неделя: эндпоинт запроса КП с описанием OpenAPI, автоматический расчёт по вашему прайсу со ступенями, ответ в формате 1.0, страница КП для человека, письмо менеджеру о каждом запросе, лимиты от злоупотреблений. Позиции без открытой цены — в режиме «запрос принят». Посчитать вместе с остальными работами — в [калькуляторе](/ceny/#kalkulyator) (галка «Машиночитаемое КП»), смета через API — параметр `kp=1`.

Перед внедрением полезно проверить сайт целиком: агент не дойдёт до запроса КП, если не нашёл и не прочитал карточку товара. [Бесплатная проверка](https://agentreadyscan.ru/) покажет, что агент видит сейчас.

## Вопросы

**Это замена электронной площадке или ЭДО?** Нет. Машиночитаемое КП — этап до площадки и до счёта: ответ на запрос цены, который агент кладёт в сравнение. Счёт, договор и документооборот остаются прежними.

**А если цены нет в открытом доступе?** Тогда API отвечает «запрос принят» с номером и датой ответа, а КП приходит письмом в том же формате. Публиковать прайс не обязательно.

**Обязательно ли API?** Нет. Можно прикладывать JSON по схеме к обычному письму с КП. API нужен, чтобы агент получал ответ сразу, без ожидания менеджера.
