Для AI-агентов: markdown этой страницы — /docs-content/entities/crm-payments/products-update.md индекс документации — /llms.txt

Изменить количество в позиции оплаты CRM

PATCH /v1/crm-payments/:id/products/:itemId

Задаёт новое количество в позиции оплаты CRM. Сумма оплаты пересчитывается сразу.

Поле передаётся плоско в корне JSON, без обёртки fields.

Параметры

Параметр Тип Обяз. Описание
id (path) number да ID оплаты. Список оплат объекта: GET /v1/crm-payments
itemId (path) number да ID позиции оплаты, а не товарной строки сделки. Список: GET /v1/crm-payments/:id/products, поле data[].id

Поля запроса (body)

Поле Тип Обяз. Описание
quantity number да Новое количество, положительное целое. Не больше текущего количества позиции плюс остаток строки в доступных товарных строках

Примеры

curl — личный ключ

Terminal
curl -X PATCH "https://vibecode.bitrix24.tech/v1/crm-payments/573/products/445" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "quantity": 3 }'

curl — OAuth-приложение

Terminal
curl -X PATCH "https://vibecode.bitrix24.tech/v1/crm-payments/573/products/445" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "quantity": 3 }'

JavaScript — личный ключ

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/crm-payments/573/products/445', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ quantity: 3 }),
})

const { data } = await res.json()
console.log(`Сумма оплаты ${data.accountNumber}: ${data.sum} ${data.currency}`)

JavaScript — OAuth-приложение

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/crm-payments/573/products/445', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ quantity: 3 }),
})

const { data } = await res.json()

Поля ответа

Ответ — оплата после изменения, а не позиция. Обновлённое количество позиции — в GET /v1/crm-payments/:id/products.

Поле Тип Описание
success boolean true при успехе
data object Объект оплаты. Ключевые поля оплаты — на странице Оплаты CRM
data.id number ID оплаты
data.accountNumber string Номер оплаты: номер связанного заказа и порядковый номер оплаты через /, например 1035/1
data.paid string Отметка оплаты: Y — оплачена, N — нет
data.datePaid string | null Время последней отметки «оплачена», ISO 8601 со смещением часового пояса. null, если отметки не было
data.empPaidId number | null ID сотрудника, который последним отметил оплату. Список: GET /v1/users
data.paySystemId number ID платёжной системы. Список: GET /v1/pay-systems
data.sum number Сумма оплаты с учётом нового количества
data.currency string Код валюты. Список: GET /v1/currencies
data.paySystemName string Название платёжной системы
meta.readbackUnavailable boolean Приходит только со значением true, когда количество изменено, а перечитать оплату не удалось. Тогда data содержит только id. Повторять изменение не нужно — проверьте позиции через GET /v1/crm-payments/:id/products

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

JSON
{
  "success": true,
  "data": {
    "id": 573,
    "accountNumber": "1035/1",
    "paid": "N",
    "datePaid": null,
    "empPaidId": null,
    "paySystemId": 19,
    "sum": 4500,
    "currency": "RUB",
    "paySystemName": "ЮKassa"
  }
}

Пример ответа при ошибке

404 — позиции с таким itemId нет в этой оплате:

JSON
{
  "success": false,
  "error": {
    "code": "ENTITY_NOT_FOUND",
    "message": "Payable item has not been found in this payment."
  }
}

Ошибки

HTTP Код Описание
400 MISSING_REQUIRED_FIELDS Тело не передано и заголовка Content-Type нет, не передан quantity, либо значение не положительное целое, например 0 или 1.5
400 FST_ERR_CTP_EMPTY_JSON_BODY Передан заголовок Content-Type: application/json, а тело пустое
400 READONLY_FIELD В теле есть поле кроме quantity, либо тело не JSON-объект, например null или массив
400 INVALID_ID id или itemId не положительное целое число
404 ENTITY_NOT_FOUND Позиции с таким itemId нет в этой оплате — сообщение Payable item has not been found in this payment.
404 ENTITY_NOT_FOUND Оплаты с таким id нет — сообщение Payment has not been found
422 BITRIX_ERROR quantity больше текущего количества позиции плюс остаток строки — сообщение Недостаточно товара для добавления в оплату
422 BITRIX_ERROR Битрикс24 отклонил запрос, причина — в error.message
422 BITRIX_NO_EFFECT Битрикс24 не подтвердил изменение количества
403 BITRIX_ACCESS_DENIED У пользователя ключа нет доступа к объекту CRM или оплате в Битрикс24
403 WRITE_BLOCKED_READONLY_KEY Ключу запрещена запись
403 SCOPE_DENIED API-ключ не имеет скоупа crm
401 TOKEN_MISSING API-ключ не имеет настроенных токенов
401 MISSING_API_KEY Не передан X-Api-Key

Полный список общих ошибок API — Ошибки.

Известные особенности

Уменьшение возвращает количество в остаток строки. После уменьшения позиции с 2 до 1 единицы quantity строки в доступных товарных строках вырастает на 1.

Смотрите также