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

Обновить счёт

PATCH /v1/invoices/:id

Обновляет поля счёта. Передавайте только изменяемые поля.

Параметры

Параметр Тип Обяз. Описание
id (path) number да ID счёта

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

Поле Тип Описание
title string Название счёта
stageId string Стадия. Формат: DT31_{categoryId}:{stage}. Список стадий: GET /v1/statuses?filter[entityId]=SMART_INVOICE_STAGE_{categoryId} — categoryId зависит от портала. Узнать: GET /v1/invoices?limit=1&select=categoryId или запросить у администратора
categoryId number ID воронки
contactId number ID контакта-плательщика. Поиск: GET /v1/contacts
companyId number ID компании-плательщика. Поиск: GET /v1/companies
mycompanyId number ID своей компании-продавца, выставляющей счёт. Поиск: GET /v1/companies
opportunity number Сумма
currencyId string Валюта. Список: GET /v1/currencies
assignedById number Ответственный. Список: GET /v1/users
begindate datetime Дата начала счёта
closedate datetime Дата оплаты счёта
accountNumber string Печатный номер счёта
comments string Комментарий

Передавать нужно только изменяемые поля, но хотя бы одно: пустое тело отклоняется с 400 EMPTY_UPDATE_BODY.

Полный список полей: GET /v1/invoices/fields. Пользовательские поля (ufCrm_*) также принимаются.

Примеры

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

Terminal
curl -X PATCH https://vibecode.bitrix24.tech/v1/invoices/129 \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "opportunity": 200000,
    "stageId": "DT31_5:P"
  }'

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

Terminal
curl -X PATCH https://vibecode.bitrix24.tech/v1/invoices/129 \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "opportunity": 200000,
    "stageId": "DT31_5:P"
  }'

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/invoices/129', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    opportunity: 200000,
    stageId: 'DT31_5:P',
  }),
})

const { success, data } = await res.json()
console.log('Обновлён:', data.id)

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/invoices/129', {
  method: 'PATCH',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    opportunity: 200000,
    stageId: 'DT31_5:P',
  }),
})

const { success, data } = await res.json()

Поля ответа

Поле Тип Описание
success boolean Всегда true при успехе
data object Счёт целиком после обновления. Все поля — см. Поля счёта

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

Показаны основные поля. Полный состав записи — Поля счёта.

JSON
{
  "success": true,
  "data": {
    "id": 129,
    "title": "Счёт за услуги",
    "stageId": "DT31_5:P",
    "categoryId": 5,
    "contactId": 42,
    "companyId": 15,
    "opportunity": 200000,
    "currencyId": "RUB",
    "assignedById": 1,
    "createdBy": 1,
    "createdTime": "2026-08-25T08:13:37.000Z",
    "updatedTime": "2026-08-25T08:13:56.000Z"
  }
}

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

404 — счёт не найден:

JSON
{
  "success": false,
  "error": {
    "code": "ENTITY_NOT_FOUND",
    "message": "Элемент не найден"
  }
}

Ошибки

HTTP Код Описание
404 ENTITY_NOT_FOUND Счёт с указанным ID не найден
400 EMPTY_UPDATE_BODY Тело запроса пустое — нужно хотя бы одно поле
400 READONLY_FIELD В теле поле только для чтения — id, createdBy, createdTime и другие с этой пометкой в GET /v1/invoices/fields
400 INVALID_PARAMS id в адресе не целое неотрицательное число
403 SCOPE_DENIED API-ключ не имеет скоупа crm
401 TOKEN_MISSING API-ключ не имеет настроенных токенов

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

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

Имя, которого у счёта нет, принимается и не сохраняется. Такое поле не вызывает ошибки: ответ приходит с 200, остальные переданные поля записываются, а неизвестное просто не попадает в запись. Опечатку в имени поля по коду ответа не поймать — сверяйте имена со схемой GET /v1/invoices/fields.

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