Skip to Content
КонцепцииБиллинг и счета

Биллинг и счета

Из чего складывается счёт цикла подписки

При автоматическом или ручном закрытии периода формируется счёт. Базовая логика суммы без налога:

  1. Основной план: amount × quantity (суммы в API — в минорных единицах валюты, обычно центах).
  2. Рекуррентные аддоны: сумма каждого аддона × его количество.
  3. Metered charge: по каждой привязанной метрике — стоимость накопленного used за период (стандартная или ступенчатая цена).
  4. Recurring charge по метрике: начисления по отдельным правилам (включаются в тот же расчёт цикла).

Затем применяются скидка (код скидки на подписке), промо-кредиты (если включено) и НДС:

Метрики и граница периода

Перед формированием счёта подписка передаётся в расчёт накопленных метрик: функция уровня API собирает статистику по metered и recurring charge и передаёт её в вычислитель счёта. После успешной оплаты счёта события метрик, вошедшие в этот расчёт, помечаются учтёнными в биллинге — чтобы не тарифицировать их повторно в следующем цикле.

Предоплата и постоплата в терминах продукта

  • Предоплата (классическая подписка): фиксированная часть (план + рекуррентные аддоны) списывается при наступлении нового периода, если включено автосписание и план это допускает.
  • Постоплата по usage: суммы по metered/recurring charge отражают уже накопленное потребление до границы периода и попадают в тот же счёт цикла, который оплачивается при переходе на следующий период (типичная модель «оплатил за прошлый период usage + за следующий базовый тариф» — уточняйте по настройкам конкретного мерчанта).
  • Ручной биллинг: при disableAutoCharge автоматическое списание не выполняется; счета и оплаты инициируются вручную.

Прорации

При смене плана, количества или интервала в середине периода система может рассчитать прорацию — корректировку суммы за неполный период. В коде есть отдельные ветки вычисления (в пакете invoice_compute), в том числе для смены интервала.

Поток «цикл → счёт → оплата»

Связанные сущности в счёте

  • bizType связывает счёт с подпиской, разовой оплатой и т.д.
  • invoiceName / причина биллинга помогают различать создание подписки, цикл, смену плана и др.
  • billingCycleAnchor сохраняет якорь для расчёта периодов.

Детали статусов счёта — Статусы.