Биллинг
Как AACsearch берёт оплату — планы, единицы потребления, квоты, AI-кредиты, счета и поток апгрейда/даунгрейда.
AACsearch оплачивает две вещи, двумя разными способами:
- Подписка на план — фиксированный месячный или годовой платёж, открывающий ярус ёмкости (индексируемые документы, поисковые запросы, места, retention аналитики, синхронизации коннекторов).
- AI-использование — предоплаченный кошелёк кредитов, тратящийся pay-as-you-go на AI-функции (Knowledge / RAG, embeddings, суммаризация, AI rerank).
Подписки идут через Stripe (по умолчанию), Lemon Squeezy, Polar, Creem, DodoPayments или — для клиентов из России — Tochka. AI-расходы работают на отдельном реестре кошелька в микро-USD (или копейках для RUB), списываются по событиям использования.
Этот раздел расписывает каждую часть картины. Начните со страниц, подходящих под задачу:
- Покупаете или обновляете план? — Планы, затем Апгрейд и даунгрейд для правил тайминга.
- Оцениваете стоимость до подписки? — Единицы потребления и Квоты — они объясняют, что считается и как ведут себя soft/hard лимиты.
- Настраиваете AI-функции? — Кошелёк и AI-кредиты — кошелёк не зависит от плана и требует пополнения до первого AI-вызова.
- Работаете с финансами? — Счета для VAT/НДС, биллинг-контактов, чеков и retention.
Два реестра, одно рабочее пространство
| Реестр | Валюта | Режим оплаты | Платит за |
|---|---|---|---|
| Подписка на план | USD или RUB | Рекурринг (месячный/годовой) | Поисковую ёмкость, места, коннекторы, retention аналитики |
| Кошелёк (AI-кредиты) | микро-USD/копейки (BigInt minor units) | Предоплата, pay-as-you-go | Knowledge, embeddings, AI rerank, суммаризацию |
Оба реестра привязаны к организации, а не к пользователю. Пользователь в двух организациях видит два кошелька и две сводки плана.
Почему два реестра? Подписка предсказуема и предоплачена. AI-стоимость прыгает per-запрос (4k-токенный промпт ~×50 дороже 100-токенного) и считается post-hoc. Смешивать их в одном счёте — ухудшать оба; они работают рядом, и финансы получают один счёт за цикл (план) плюс один чек за пополнение (кошелёк).
Где что искать
В панели:
| Экран | Показывает |
|---|---|
/[orgSlug]/settings/billing | Активный план, использование против лимитов, история счетов, способ оплаты, статус overage |
/[orgSlug]/overview | Плитка квот (использованные search units против потолка, процент) |
/settings/billing | Личный биллинг (для большинства клиентов не активен — org-биллинг закрывает всё по умолчанию) |
/settings/billing/ai-credits | Баланс AI-кошелька, контрол пополнения, автозачисление, лимиты расходов |
/settings/billing/invoices | Личные счета |
/admin/wallet | Реестр кошельков платформы между организациями (только админ) |
/admin/billing-analytics | Кросс-тенант метрики биллинга (только админ) |
Резолв плана
Текущий план разрешается через resolveOrgPlan(orgId) в @repo/payments:
- Найти последний активный
Purchase(подписку) для организации. - Сопоставить
priceIdпровайдера →planIdпо матрице вpackages/payments/config.ts. - Кэш 60 секунд (
invalidatePlanCache(orgId)вызывается на вебхуках — изменения подтягиваются быстро). - Fail open — если провайдер недоступен, откатываемся к лимитам Free, а не блокируем трафик.
Изменение плана применяется на следующем запросе после прихода вебхука. Ночного батча нет — права живут в реальном времени.
Представление денег
Заметка для интеграторов API: каждое денежное значение — BigInt в minor units (копейки для RUB, центы для USD, или микро-USD для прецизионных списаний кошелька). Через oRPC они трансформируются в строки (.transform(v => v.toString())), чтобы JSON-сериализация не теряла точность.
Конвертация в десятичное представление — только на UI и в email. В БД никогда не увидите 19.99; будет BigInt("1999") для USD-центов или BigInt("1999000000") для микро-USD.
Налоги, VAT и чеки
Обработка VAT/НДС зависит от провайдера. Stripe Tax включён для EU/UK/US; Lemon Squeezy — merchant of record (платит налоги за вас); Tochka — путь для RUB-клиентов, следует российскому НК.
См. Счета — полная матрица провайдеров и того, кто автоматически обрабатывает налог.
Возвраты и диспуты
Возвраты идут через провайдера платежа (Stripe-дашборд, Lemon Squeezy-консоль и т.д.). AACsearch не правит подписку независимо от провайдера. Для пополнений кошелька возврат атомарно реверсит и платёж, и запись реестра.
Откройте тикет в поддержку из /settings/billing для помощи с возвратом или диспутом.
Связанные страницы
- Планы — матрица планов с лимитами и feature-гейтами.
- Единицы потребления — что и как считается.
- Квоты — поведение soft/hard капов и расписание сброса.
- Кошелёк и AI-кредиты — предоплаченный кошелёк, пополнения, автозачисление, лимиты.
- Счета — форматы счетов, VAT, retention.
- Апгрейд и даунгрейд — тайминг смены плана, пропорция, retention данных.
- Планы и лимиты (архитектура) — код прав и поток контроля квот.