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

Счета

Управление счетами CRM: создание, получение, обновление, удаление, фильтрация. Счёт — документ на оплату: к нему привязываются плательщик, своя компания-продавец и товарные позиции, а стадия показывает, где счёт в цикле выставления и оплаты.

Битрикс24 API: crm.item.*, entityTypeId равен 31 Скоуп: crm

Создать счёт

POST /v1/invoices

Создаёт новый счёт в CRM.

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

Поле Тип Описание
title string Название счёта. Без него подставляется Счёт #<id>
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_CREATE_BODY.

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

Примеры

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

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/invoices \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Счёт за услуги",
    "stageId": "DT31_5:N",
    "contactId": 42,
    "companyId": 15,
    "opportunity": 150000,
    "currencyId": "RUB",
    "assignedById": 1
  }'

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

Terminal
curl -X POST https://vibecode.bitrix24.tech/v1/invoices \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Счёт за услуги",
    "stageId": "DT31_5:N",
    "contactId": 42,
    "companyId": 15,
    "opportunity": 150000,
    "currencyId": "RUB",
    "assignedById": 1
  }'

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/invoices', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    title: 'Счёт за услуги',
    stageId: 'DT31_5:N',
    contactId: 42,
    companyId: 15,
    opportunity: 150000,
    currencyId: 'RUB',
    assignedById: 1,
  }),
})

const { success, data } = await res.json()
console.log('Invoice ID:', data.id)

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

javascript
const res = await fetch('https://vibecode.bitrix24.tech/v1/invoices', {
  method: 'POST',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    title: 'Счёт за услуги',
    stageId: 'DT31_5:N',
    contactId: 42,
    companyId: 15,
    opportunity: 150000,
    currencyId: 'RUB',
    assignedById: 1,
  }),
})

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

Поля ответа

Поле Тип Описание
success boolean Всегда true при успехе
data object Созданный счёт целиком, включая пользовательские поля ufCrm_*. Все поля — см. Поля счёта

URL карточки счёта в Битрикс24 строится из id:

https://<portal>.bitrix24.ru/crm/type/31/details/<id>/

31entityTypeId смарт-счёта в Битрикс24. <portal> — домен портала. Доступ ограничен правами сотрудника в Битрикс24.

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

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

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

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

400 — тело запроса пустое:

JSON
{
  "success": false,
  "error": {
    "code": "EMPTY_CREATE_BODY",
    "message": "Request body is empty — provide at least one field to create smartInvoice."
  }
}

Ошибки

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

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

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