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

`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 источника. [Список источников](/docs/entities/crm-tracking/sources-list) |

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

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

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

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

## Примеры

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

```bash
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-приложение

```bash
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 пакета расходов. [Список расходов](/docs/entities/crm-tracking/expenses-list) |

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

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

```json
{"success":true,"data":{"id":7}}
```

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

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

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

## Ошибки

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

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

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

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

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

- [Список источников](/docs/entities/crm-tracking/sources-list)
- [Список расходов](/docs/entities/crm-tracking/expenses-list)
- [Удалить расходы](/docs/entities/crm-tracking/expenses-delete)
