API: баланс, лицензии, выводы и счета
LanaChat оплачивается с одного предоплаченного баланса в долларах США: с него списываются лицензии (по одной на аккаунт Telegram, 30 дней) и комиссия с чистых продаж. Вы пополняете баланс криптовалютными депозитами. Партнёрские доходы можно выводить. Для каждого биллингового эндпоинта нужен owner токен: в примерах он хранится в $LANACHAT_TOKEN.
Endpoints #
| Method | Path | Description | Permission | Status |
|---|---|---|---|---|
| GET | /billing/balance | Баланс, чистые продажи за месяц и уровень комиссии | owner | Planned |
| GET | /billing/ledger | Все движения: депозиты, лицензии, комиссия, возвраты | owner | Planned |
| GET | /billing/ledger.csv | Тот же журнал в CSV (from=, to=) | owner | Planned |
| GET | /billing/deposit-addresses | Один адрес для депозита на каждую цепочку (с memo для Solana) | owner | Planned |
| GET | /billing/deposits | Депозиты и их подтверждения | owner | Planned |
| GET | /billing/licences | Лицензии на складе и назначенные, с оставшимися днями | owner | Planned |
| POST | /billing/licences/buy | Купить лицензии: одну или пакетом 10, 25 или 50 | owner | Planned |
| POST | /billing/licences/assign | Назначить лицензию из склада аккаунту | owner | Planned |
| POST | /billing/licences/unassign | Вернуть лицензию на склад с оставшимися днями | owner | Planned |
| PATCH | /billing/licences/auto-renew | Включить или выключить автообновление для аккаунта | owner | Planned |
| GET | /billing/withdrawals | Выводы партнёрских средств и их статус | owner | Planned |
| POST | /billing/withdrawals | Запросить вывод партнёрских средств (от $500) | owner | Planned |
| GET | /billing/invoices | Ежемесячные отчёты (year=) | owner | Planned |
| GET | /billing/invoices/{id}.pdf | Один отчёт в PDF | owner | Planned |
| PUT | /billing/details | Название компании, адрес и VAT в отчётах | owner | Planned |
Цены в одной таблице #
| Что | Цена |
|---|---|
| Одна лицензия (один аккаунт Telegram, 30 дней) | $19 |
| Пакет из 10 лицензий | $170 |
| Пакет из 25 лицензий | $375 |
| Пакет из 50 лицензий | $650 |
| Комиссия до $30k чистых продаж в месяц | 12% с AI-продаж, 4% с ручных |
| Комиссия от $30k до $100k | 10% и 3% |
| Комиссия свыше $100k | 8% и 2% |
Счётчик, это чистые продажи всего рабочего пространства за календарный месяц; сбрасывается 1-го числа. Telegram Stars считаются по $0.013 за штуку в чистых продажах.
Объект баланса #
{
"balance_cents": 48210,
"month": "2026-10",
"net_sales_cents": 1870400,
"tier": { "up_to_cents": 3000000, "ai_rate_bp": 1200, "manual_rate_bp": 300 },
"licences": { "in_stock": 4, "assigned": 11, "expiring_7d": 2 },
"low_balance": false
}
| Поле | Тип | Описание |
|---|---|---|
balance_cents | integer | Предоплаченный баланс в центах США |
month | string | Учтённый календарный месяц, YYYY-MM |
net_sales_cents | integer | Чистые продажи рабочего пространства за месяц |
tier | object | Текущий уровень: потолок up_to_cents, ставка AI и ручная ставка в базисных пунктах |
licences | object | Лицензии на складе in_stock, назначенные assigned и заканчивающиеся в течение 7 дней (expiring_7d) |
low_balance | boolean | true, если баланса не хватает на следующие 7 дней лицензий |
Ставки в базисных пунктах: 1200, это 12%.
Объект записи журнала #
Каждая строка из Billing › Activity в Console.
{
"id": "led_90211",
"at": "2026-10-06T14:40:00Z",
"kind": "licences",
"label": "Licences · pack of 10",
"amount_cents": -17000,
"balance_after_cents": 31210
}
| Поле | Тип | Описание |
|---|---|---|
id | string | Запись |
at | string | ISO 8601, UTC |
kind | string | deposit, licences, commission, refund, affiliate или other |
label | string | Текст записи, как в Console |
amount_cents | integer | Положительное, приход денег, отрицательное, расход |
balance_after_cents | integer | Баланс после этой записи |
Запись commission относится к одной продаже: Console показывает фаната, уровень, кто отправил оффер (AI или вручную), как считался нетто ("12,500 ★ × $0.013") и ставку.
Объект депозита #
{
"id": "dep_4",
"at": "2026-10-06T13:52:00Z",
"chain": "usdt-tron",
"sent_cents": 100000,
"fee_cents": 1000,
"credited_cents": 99000,
"status": "pending",
"confirmations": "12/19"
}
| Поле | Тип | Описание |
|---|---|---|
id | string | Депозит |
at | string | Время фиксации, ISO 8601 |
chain | string | usdc-eth, usdc-sol, usdt-sol, usdt-tron или usdt-eth |
sent_cents, fee_cents, credited_cents | integer | Отправлено, комиссия, зачислено на баланс |
status | string | pending, затем confirmed |
confirmations | string | Подтверждения сети, пока в статусе pending |
USDC на Ethereum зачисляется 1:1 без комиссии. На остальных цепочках комиссия 1%: депозит конвертируется в USDC (ERC20) при поступлении. Минимум для пополнения, $25.
Объект лицензии #
{
"account_id": "acc_1001",
"creator_id": "cr_lea",
"days_left": 18,
"expires_at": "2026-10-24T09:00:00Z",
"auto_renew": true
}
| Поле | Тип | Описание |
|---|---|---|
account_id | string | Аккаунт Telegram, на котором действует лицензия |
creator_id | string | Её автор |
days_left | integer | Остаток дней из 30 |
expires_at | string | Дата окончания |
auto_renew | boolean | Автообновление из склада (или покупка одиночной) при окончании |
Лицензии на складе считаются, но не перечисляются поштучно: каждая хранит свой остаток дней (30 для новой).
Объект вывода #
{ "id": "wd_118", "status": "pending_review", "amount_cents": 50000, "requested_at": "2026-10-06T15:00:00Z", "tx_hash": null }
| Поле | Тип | Описание |
|---|---|---|
id | string | Вывод |
status | string | pending_review, sent (с tx_hash) или rejected с причиной |
amount_cents | integer | Запрошенная сумма, минимум 50000 ($500) |
requested_at | string | ISO 8601, UTC |
tx_hash | string или null | Транзакция после отправки |
Объект счёта #
{
"id": "LC-2026-09",
"month": "2026-09",
"licences_cents": 22800,
"commission_cents": 930000,
"total_cents": 952800,
"status": "paid",
"pdf_url": "https://api.lanachat.ai/v1/billing/invoices/LC-2026-09.pdf"
}
| Поле | Тип | Описание |
|---|---|---|
id | string | Номер отчёта, LC-YYYY-MM |
month | string | Месяц отчёта |
licences_cents, commission_cents, total_cents | integer | Лицензии, комиссия и итог за месяц |
status | string | Оплачен, в процессе (текущий месяц) или неудача |
pdf_url | string | PDF отчёта |
Баланс и журнал #
Получить баланс #
GET /billing/balance · owner
curl https://api.lanachat.ai/v1/billing/balance \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Ответ, объект баланса.
Список журнала #
GET /billing/ledger · owner
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
from, to | string | Нет | Даты YYYY-MM-DD, UTC, включительно |
limit, cursor | number, string | Нет | Пагинация |
curl "https://api.lanachat.ai/v1/billing/ledger?from=2026-10-01&to=2026-10-06" \
-H "Authorization: Bearer $LANACHAT_TOKEN"
{
"data": [
{ "id": "led_90211", "at": "2026-10-06T14:40:00Z", "kind": "licences", "label": "Licences · pack of 10", "amount_cents": -17000, "balance_after_cents": 31210 },
{ "id": "led_90207", "at": "2026-10-06T13:20:00Z", "kind": "commission", "label": "Lea · Marco", "amount_cents": -468, "balance_after_cents": 48210 },
{ "id": "led_90150", "at": "2026-10-05T09:02:00Z", "kind": "deposit", "label": "Deposit · USDC on Ethereum", "amount_cents": 300000, "balance_after_cents": 48678 }
],
"next_cursor": "eyJpZCI6ImxlZF85MDE0OSJ9"
}
Экспорт журнала в CSV #
GET /billing/ledger.csv · owner
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
from, to | string | Нет | Даты YYYY-MM-DD, UTC |
curl "https://api.lanachat.ai/v1/billing/ledger.csv?from=2026-09-01&to=2026-09-30" \
-H "Authorization: Bearer $LANACHAT_TOKEN" -o ledger-2026-09.csv
Те же строки, что и Export CSV в Billing › Activity, готовы для вашего бухгалтера.
Депозиты #
Получить адреса для депозитов #
GET /billing/deposit-addresses · owner
curl https://api.lanachat.ai/v1/billing/deposit-addresses \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Ответ содержит по одному адресу на каждую цепочку (Ethereum, Solana, Tron) и, для Solana, memo.
Внимание На Solana депозит без memo не может быть сопоставлен с вашим рабочим пространством. Всегда отправляйте и адрес, и memo.
Вы можете отправлять USDC на Ethereum (ERC20), USDC на Solana, USDT на Solana, USDT на Tron (TRC20) или USDT на Ethereum (ERC20). Комиссия сети оплачивается с вашего кошелька.
Список депозитов #
GET /billing/deposits · owner
curl https://api.lanachat.ai/v1/billing/deposits \
-H "Authorization: Bearer $LANACHAT_TOKEN"
{
"data": [
{ "id": "dep_4", "at": "2026-10-06T13:52:00Z", "chain": "usdt-tron", "sent_cents": 100000, "fee_cents": 1000, "credited_cents": 99000, "status": "pending", "confirmations": "12/19" },
{ "id": "dep_3", "at": "2026-10-05T09:02:00Z", "chain": "usdc-eth", "sent_cents": 300000, "fee_cents": 0, "credited_cents": 300000, "status": "confirmed", "confirmations": null }
],
"next_cursor": null
}
Баланс пополняется автоматически при статусе confirmed; это также строка deposit в журнале.
Лицензии #
Список лицензий #
GET /billing/licences · owner
curl https://api.lanachat.ai/v1/billing/licences \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Ответ содержит лицензии на складе и по одной лицензии на каждый назначенный аккаунт с оставшимися днями.
Купить лицензии #
POST /billing/licences/buy · owner
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
pack | integer | Да | 1 (одиночная, $19), 10 ($170), 25 ($375) или 50 ($650) |
qty | integer | Да | Количество таких пакетов |
curl -X POST https://api.lanachat.ai/v1/billing/licences/buy \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"pack": 10, "qty": 1}'
{ "licences_added": 10, "amount_cents": 17000, "balance_cents": 31210, "ledger_id": "led_90211" }
Лицензии сразу идут на ваш склад. При недостаточном балансе возвращается 402 (insufficient_balance). Лицензии на складе не истекают, купленные лицензии не подлежат возврату.
Назначить лицензию #
POST /billing/licences/assign · owner
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
account_id | string | Да | Аккаунт Telegram, которому назначается лицензия |
curl -X POST https://api.lanachat.ai/v1/billing/licences/assign \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"account_id": "acc_1001"}'
Ответ, объект лицензии аккаунта. Сначала используется лицензия со склада с наименьшим остатком дней: её оставшиеся дни или 30, если новая. Автообновление включено по умолчанию.
Вернуть лицензию #
POST /billing/licences/unassign · owner
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
account_id | string | Да | Аккаунт, который возвращает лицензию |
curl -X POST https://api.lanachat.ai/v1/billing/licences/unassign \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"account_id": "acc_1001"}'
Лицензия возвращается на склад с оставшимися днями. AI сразу перестаёт отвечать на этом аккаунте. Чтобы перенести лицензию на другой аккаунт, сначала верните её, затем назначьте заново: она сохранит дни бесплатно.
Включить или выключить автообновление #
PATCH /billing/licences/auto-renew · owner
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
account_id | string | Да | Аккаунт |
auto_renew | boolean | Да | true для обновления при окончании дней |
curl -X PATCH https://api.lanachat.ai/v1/billing/licences/auto-renew \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"account_id": "acc_1001", "auto_renew": false}'
При окончании дней автообновление сначала берёт лицензию со склада или покупает одиночную ($19), если склад пуст. Покупка невозможна без баланса: следите за low_balance или webhook billing.low_balance webhook.
Партнёрские выводы #
Список выводов #
GET /billing/withdrawals · owner
curl https://api.lanachat.ai/v1/billing/withdrawals \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Список объектов вывода, сначала новые.
Запросить вывод #
POST /billing/withdrawals · owner
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
amount_cents | integer | Да | Не менее 50000 ($500), не больше доступного к выводу |
curl -X POST https://api.lanachat.ai/v1/billing/withdrawals \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"amount_cents": 50000}'
{ "id": "wd_118", "status": "pending_review", "amount_cents": 50000, "requested_at": "2026-10-06T15:00:00Z", "tx_hash": null }
Доходы отправляются в USDC на указанный кошелёк через 7 дней после окончания месяца. Выводить можно только партнёрские доходы, а не предоплаченный баланс. Запросы менее $500 отклоняются.
Отчёты #
Список отчётов #
GET /billing/invoices · owner
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
year | integer | Нет | Например, 2026 |
curl "https://api.lanachat.ai/v1/billing/invoices?year=2026" \
-H "Authorization: Bearer $LANACHAT_TOKEN"
Один объект счёта на месяц.
Скачать отчёт #
GET /billing/invoices/{id}.pdf · owner
curl https://api.lanachat.ai/v1/billing/invoices/LC-2026-09.pdf \
-H "Authorization: Bearer $LANACHAT_TOKEN" -o LC-2026-09.pdf
Внимание Проверяйте свои отчёты. Ошибки в биллинге нужно сообщать в течение 60 дней с даты отчёта; после этого отчёт считается окончательным.
Установить данные для биллинга #
PUT /billing/details · owner
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
company | string | Нет | Название компании |
email | string | Нет | E-mail для биллинга |
address, city, postal, country | string | Нет | Почтовый адрес |
vat | string | Нет | VAT номер |
curl -X PUT https://api.lanachat.ai/v1/billing/details \
-H "Authorization: Bearer $LANACHAT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"company": "Mia Agency Ltd", "email": "[email protected]", "address": "12 Market Street", "city": "Dublin", "postal": "D02 X285", "country": "IE", "vat": "IE1234567T"}'
Те же поля, что и в Billing › Billing details. Отчёты содержат эти данные. PUT заменяет все поля: пропущенные очищаются.