API: баланс, ліцензії, виведення коштів та рахунки
LanaChat оплачується з одного передплаченого балансу в доларах США: з нього списуються ліцензії (одна на акаунт Telegram, 30 днів) та комісія з чистих продажів. Ви поповнюєте баланс криптовалютними депозитами. Партнерські заробітки можна виводити. Для кожного billing endpoint потрібен токен 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 |
| Комісія до $30 тис чистих продажів за місяць | 12% від AI-продажів, 4% від ручних продажів |
| Комісія від $30 тис до $100 тис | 10% та 3% |
| Комісія понад $100 тис | 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 в Консолі.
{
"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 | Текст рядка, як у Консолі |
amount_cents | integer | Позитивне, коли надходять гроші, негативне, коли списуються |
balance_after_cents | integer | Баланс після цього рядка |
Рядок commission належить одному продажу: у Консолі показано фаната, рівень, хто надіслав пропозицію (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 | Підтвердження мережі під час очікування |
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) і memo для Solana.
Увага На 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 | Ні | Електронна пошта для білінгу |
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 замінює всі поля: пропущене поле очищується.