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

PATCH /v1/invoices/:id

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

#Параметры запроса

Параметр Тип Описание
id number ID счёта (в URL)

#Поля запроса (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 или запросить у администратора
contactId number ID контакта-плательщика
companyId number ID компании-плательщика
opportunity number Сумма
currencyId string Валюта. Список: GET /v1/currencies
assignedById number Ответственный. Список: GET /v1/users
comments string Комментарий

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

#Примеры

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

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

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

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

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

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

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

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/invoices/891', {
  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:WON',
  }),
})

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

#Поля ответа

Поле Тип Описание
id number ID счёта
title string Название
stageId string Стадия
opportunity number Сумма
currencyId string Валюта
assignedById number Ответственный
updatedTime datetime Дата изменения

Ответ содержит все поля счёта после обновления.

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

JSON
{
  "success": true,
  "data": {
    "id": 891,
    "title": "Счёт за услуги",
    "stageId": "DT31_5:WON",
    "categoryId": 5,
    "contactId": 42,
    "companyId": 15,
    "opportunity": 200000,
    "currencyId": "RUB",
    "assignedById": 1,
    "createdBy": 1,
    "createdTime": "2026-04-15T14:30:00+03:00",
    "updatedTime": "2026-04-15T15:10:00+03:00"
  }
}

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

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

JSON
{
  "success": false,
  "error": {
    "code": "NOT_FOUND",
    "message": "Entity not found"
  }
}

#Ошибки

HTTP Код Описание
404 NOT_FOUND Счёт с указанным ID не найден
403 SCOPE_DENIED API-ключ не имеет скоупа crm
401 TOKEN_MISSING API-ключ не имеет настроенных токенов
400 INVALID_REQUEST Невалидные поля

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

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