# API: баланс, лицензии, выводы и счета

_API · Чтение 7 мин · Обновлено 2026-10-22 · https://lanachat.ai/guides/ru/api-billing/_

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 за штуку в чистых продажах.

## Объект баланса

```json
{
  "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.

```json
{
  "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") и ставку.

## Объект депозита

```json
{
  "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.

## Объект лицензии

```json
{
  "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 для новой).

## Объект вывода

```json
{ "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 | Транзакция после отправки |

## Объект счёта

```json
{
  "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`

```bash
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 | Нет | [Пагинация](https://lanachat.ai/guides/ru/api-overview/) |

```bash
curl "https://api.lanachat.ai/v1/billing/ledger?from=2026-10-01&to=2026-10-06" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"
```

```json
{
  "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 |

```bash
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`

```bash
curl https://api.lanachat.ai/v1/billing/deposit-addresses \
  -H "Authorization: Bearer $LANACHAT_TOKEN"
```

Ответ содержит по одному адресу на каждую цепочку (Ethereum, Solana, Tron) и, для Solana, memo.

> Warning: На Solana депозит без memo не может быть сопоставлен с вашим рабочим пространством. Всегда отправляйте и адрес, и memo.

Вы можете отправлять USDC на Ethereum (ERC20), USDC на Solana, USDT на Solana, USDT на Tron (TRC20) или USDT на Ethereum (ERC20). Комиссия сети оплачивается с вашего кошелька.

### Список депозитов

`GET /billing/deposits` · `owner`

```bash
curl https://api.lanachat.ai/v1/billing/deposits \
  -H "Authorization: Bearer $LANACHAT_TOKEN"
```

```json
{
  "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`

```bash
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 | Да | Количество таких пакетов |

```bash
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}'
```

```json
{ "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, которому назначается лицензия |

```bash
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 | Да | Аккаунт, который возвращает лицензию |

```bash
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` для обновления при окончании дней |

```bash
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](https://lanachat.ai/guides/ru/api-webhooks/).

## Партнёрские выводы

### Список выводов

`GET /billing/withdrawals` · `owner`

```bash
curl https://api.lanachat.ai/v1/billing/withdrawals \
  -H "Authorization: Bearer $LANACHAT_TOKEN"
```

Список объектов вывода, сначала новые.

### Запросить вывод

`POST /billing/withdrawals` · `owner`

| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| `amount_cents` | integer | Да | Не менее 50000 ($500), не больше доступного к выводу |

```bash
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}'
```

```json
{ "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` |

```bash
curl "https://api.lanachat.ai/v1/billing/invoices?year=2026" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"
```

Один объект счёта на месяц.

### Скачать отчёт

`GET /billing/invoices/{id}.pdf` · `owner`

```bash
curl https://api.lanachat.ai/v1/billing/invoices/LC-2026-09.pdf \
  -H "Authorization: Bearer $LANACHAT_TOKEN" -o LC-2026-09.pdf
```

> Warning: Проверяйте свои отчёты. Ошибки в биллинге нужно сообщать в течение 60 дней с даты отчёта; после этого отчёт считается окончательным.

### Установить данные для биллинга

`PUT /billing/details` · `owner`

| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| `company` | string | Нет | Название компании |
| `email` | string | Нет | E-mail для биллинга |
| `address`, `city`, `postal`, `country` | string | Нет | Почтовый адрес |
| `vat` | string | Нет | VAT номер |

```bash
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": "billing@mia-agency.com", "address": "12 Market Street", "city": "Dublin", "postal": "D02 X285", "country": "IE", "vat": "IE1234567T"}'
```

Те же поля, что и в **Billing › Billing details**. Отчёты содержат эти данные. `PUT` заменяет все поля: пропущенные очищаются.

## Похожие статьи

- [LanaChat API: быстрое начало, аутентификация и ошибки](https://lanachat.ai/guides/ru/api-overview/)
- [Оплата: лицензии, комиссия и баланс](https://lanachat.ai/guides/ru/billing/)
