Коммерческий биллинг
Счета, предоплаченный баланс и пополнения для B2B-организаций.
Этот раздел отличается от usage: usage показывает фактическое потребление и лимиты, а коммерческий биллинг отвечает за оплату пакетов, рублевый баланс и доступ к новым LLM-запросам.
Требуется токен администратора (роли owner или admin).
GET /api/organizations/{orgId}/billing
Сводка коммерческого биллинга: баланс, тариф, счета, журнал и решение о доступе к моделям.
curl -s https://api.example.com/api/organizations/org_abc/billing \
-H "Authorization: Bearer <token>"Ответ 200 — BillingOverview (те же поля, что в billing внутри GET /api/overview).
GET /api/organizations/{orgId}/billing/invoices
Список счетов организации.
curl -s https://api.example.com/api/organizations/org_abc/billing/invoices \
-H "Authorization: Bearer <token>"Ответ 200 — массив Invoice:
[
{
"id": "inv_001",
"organizationId": "org_abc",
"planCode": "monthly",
"kind": "initial",
"status": "issued",
"amountRub": 50000,
"balanceRub": 50000,
"buyerLegal": {
"legalName": "ООО Пример",
"inn": "7707083893",
"kpp": "770701001",
"legalAddress": "г. Москва, ул. Примерная, 1"
},
"issuedAt": "2026-06-03T12:00:00Z"
}
]Поле buyerLegal — снимок реквизитов плательщика на момент выставления счёта (не меняется при последующем редактировании профиля организации). Заполняется из organization.legalDetails — см. Организации.
POST /api/organizations/{orgId}/billing/top-ups
Создать счет на пополнение баланса внутри активного пакета.
Первичный счёт (kind: "initial") должен быть оплачен до создания top-up счетов.
Для top-up в организации должны быть заполнены реквизиты: ИНН, КПП (для юрлица с ИНН из 10 цифр) и юридический адрес (PATCH /api/organizations/{orgId}).
Тело:
| Поле | Формат | Описание |
|---|---|---|
amountRub | number | Сумма пополнения в рублях |
curl -s -X POST https://api.example.com/api/organizations/org_abc/billing/top-ups \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"amountRub":12000}'Ответ 201 — Invoice со статусом issued.
POST /api/organizations/{orgId}/billing/invoices/{invoiceId}/mark-paid
Отметить счет как оплаченный. Для первой версии это ручное действие администратора; интеграция с платежным провайдером или банком может заменить его webhook-ом позже.
curl -s -X POST https://api.example.com/api/organizations/org_abc/billing/invoices/inv_001/mark-paid \
-H "Authorization: Bearer <token>"Ответ 200 — Invoice со статусом paid.
После оплаты сумма balanceRub зачисляется на коммерческий баланс организации и отражается в billing.ledger внутри GET /api/overview. Событие попадает в аудит (billing.invoice_paid).
Списание за inference
После успешного запроса к API моделей gateway фиксирует usage; finance-worker списывает стоимость с balanceRub по price catalog и тарифу организации. История операций — в billing.ledger (GET /api/overview). Отдельного эндпоинта синхронизации usage для списания нет.