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

Добавить расходы источника сквозной аналитики

POST /v1/crm-tracking/sources/:id/expenses

Добавляет вручную пакет расходов источника за указанный период. Поля передаются в корне JSON без обёртки.

Метод выходит в обновлении crm 26.2100.0 и доступен не на всех порталах Битрикс24. Пока возможность не включена для портала, API возвращает 422 METHOD_NOT_YET_AVAILABLE.

Требуется скоуп crm и ключ с правом записи READWRITE.

Параметры

Параметр Тип Обяз. По умолч. Описание
Параметрid (path) Типinteger Обяз.да По умолч.— ОписаниеПоложительный ID источника. Список источников

Параметры строки запроса не принимаются.

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

Поле Тип Обяз. Описание
ПолеdateFrom Типstring Обяз.да ОписаниеНачало периода в формате YYYY-MM-DD
ПолеdateTo Типstring Обяз.да ОписаниеКонец периода в формате YYYY-MM-DD
Полеamount Типnumber Обяз.да ОписаниеСумма в единицах валюты: 12.5 означает 12,50, без преобразования в сотые доли
ПолеcurrencyId Типstring Обяз.да ОписаниеКод валюты. Валюты
Полеactions Типinteger Обяз.нет ОписаниеКоличество действий
Полеcomment Типstring | null Обяз.нет ОписаниеКомментарий к расходам

Источник задаётся только в пути. Поле sourceId в теле запроса не принимается.

Примеры

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

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/crm-tracking/sources/2/expenses" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"dateFrom":"2026-10-01","dateTo":"2026-10-07","amount":12.5,"currencyId":"USD"}'

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

Terminal
curl -X POST "https://vibecode.bitrix24.tech/v1/crm-tracking/sources/2/expenses" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"dateFrom":"2026-10-01","dateTo":"2026-10-07","amount":12.5,"currencyId":"USD"}'

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/crm-tracking/sources/2/expenses', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ dateFrom: '2026-10-01', dateTo: '2026-10-07', amount: 12.5, currencyId: 'USD' })
})
const { data } = await res.json()
console.log(data.id)

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/crm-tracking/sources/2/expenses', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ dateFrom: '2026-10-01', dateTo: '2026-10-07', amount: 12.5, currencyId: 'USD' })
})
const { data } = await res.json()
console.log(data.id)

Поля ответа

HTTP 201 при создании.

Поле Тип Описание
Полеsuccess Типboolean Описаниеtrue при успехе
Полеdata Типobject ОписаниеРезультат создания
Полеdata.id Типnumber ОписаниеID пакета расходов. Список расходов

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

Пример структуры ответа.

JSON
{"success":true,"data":{"id":7}}

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

400 — не переданы обязательные поля.

JSON
{"success":false,"error":{"code":"MISSING_REQUIRED_FIELDS","message":"dateFrom, dateTo, amount and currencyId are required"}}

Ошибки

HTTP Код Описание
HTTP400 КодMISSING_REQUIRED_FIELDS ОписаниеНе передано обязательное поле
HTTP400 КодINVALID_PARAMS ОписаниеНекорректный ID, формат даты, тип поля или неизвестное поле тела
HTTP400 КодUNKNOWN_FILTER_FIELD ОписаниеПередан параметр строки запроса
HTTP403 КодSCOPE_DENIED ОписаниеНет скоупа crm
HTTP403 КодWRITE_BLOCKED_READONLY_KEY ОписаниеКлюч разрешает только чтение
HTTP422 КодMETHOD_NOT_YET_AVAILABLE ОписаниеВозможность не включена для портала или метод недоступен в его версии
HTTP502 КодBITRIX_UNAVAILABLE ОписаниеПолучен некорректный ответ Битрикс24

Другие отказы Битрикс24 передаются с его кодом и сообщением. Секреты в сообщениях удаляются. Общие ошибки — Ошибки.

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

Битрикс24 проверяет ограничения суммы, валюты и периода, включая предел в 365 дней. API проверяет форму запроса и не устанавливает собственные ограничения этих значений.

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