Skip to Content
Биллинг

Биллинг

Баланс — в рублях, decimal. Минимальная единица учёта — 0.0001 ₽: внутри биллинг-движок работает с целыми «units» (1 ₽ = 10 000 units), API-ответы конвертируются обратно в ₽ с дробью. Цены в каталоге (priceRub) могут быть меньше рубля и списываются точно — никакого пола в 1 ₽ нет.

Как тратится баланс

  • Списание происходит атомарно при POST /run или POST /queue/{modelId} — точно по priceRub × quantity с учётом скидки (округление вверх до 0.0001 ₽). Если на балансе меньше — приходит 402 insufficient_balance, генерация не запускается.
  • Возврат — автоматически при ошибке генерации, той же суммой.
  • Сверка по факту — для моделей с динамической ценой (per-second video, per-megapixel image) точное списание уточняется после генерации; разница возвращается отдельной транзакцией. Микроразницы ≤ 0.01 ₽ игнорируются — не плодим шумные транзакции.

Все движения видны в GET /me/transactions. Тип каждой записи — один из topup, deduct, refund, grant.

Проверить баланс

curl https://api.neuroartist.ru/me/balance \ -H "Authorization: Bearer na_live_xxxxxxxxxxxxxxxx" # {"userId":"u_…","balance":248.5}

balance — текущий остаток в ₽ (decimal). Минимальная значимая дробь — 0.0001 ₽.

Оценка стоимости перед запуском

curl -X POST https://api.neuroartist.ru/models/flux/dev/estimate \ -H "Authorization: Bearer na_live_xxxxxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{"prompt":"…","num_inference_steps":28}'
{ "modelId": "flux/dev", "modelAlias": "flux/dev", "estimatedCostRub": 8.0, "estimatedPriceRub": 8.0, "priceUnit": "image", "quantity": 1, "currency": "RUB" }
ПолеЧто
estimatedCostRubСколько спишется при submit, в ₽ (decimal, минимум 0.0001 ₽).
estimatedPriceRubЦена за единицу до округления. Совпадает с estimatedCostRub, если в input ровно 1 единица.
priceUnitЕдиница измерения цены — image, second, megapixel, request, 1k_chars.
quantityСколько единиц получится при текущем input-е.

Пополнение

Делается в дашборде gateway.neuroartist.ruБиллинг → Пополнить.

  • Минимальная сумма — 500 ₽ (MIN_TOPUP_RUB). Меньше нельзя.
  • Оплата через YooKassa, чек 54-ФЗ формируется автоматически.
  • После успешной оплаты карта сохраняется (payment_method_id от YooKassa, с маской PAN) — чтобы не вводить реквизиты повторно и для авто-пополнения.

Авто-пополнение

Когда баланс падает ниже заданного порога, мы автоматически списываем фиксированную сумму с сохранённой карты — чтобы вы не получили 402 insufficient_balance посреди пайплайна. Срабатывает в момент попытки списания за генерацию, не чаще одного раза в минуту на пользователя (защита от дублей).

В дашборде → Биллинг → Авто-пополнение:

ПолеДиапазон
thresholdRubAUTO_TOPUP_MIN_THRESHOLD_RUB (10 ₽)
amountRubот AUTO_TOPUP_MIN_AMOUNT_RUB (50 ₽) до AUTO_TOPUP_MAX_AMOUNT_RUB (10 000 ₽)
Default-картаОбязательно. Без неё авто-пополнение не сработает.

Если списание не прошло (карта отклонена, нет default-метода) — обычная ошибка 402 insufficient_balance на текущем submit + email-уведомление.

История платежей

curl https://api.neuroartist.ru/billing/payments \ -H "Authorization: Bearer na_live_xxxxxxxxxxxxxxxx"

Возвращает список с id, yookassaId, status, creditsToGrantRub (сумма зачисления в ₽, с учётом промо-бонуса если был), amountKopecks, currency, createdAt.

Чеки 54-ФЗ и PDF-выписки — в дашборде → Биллинг → История.

Welcome-бонус и уведомление о низком балансе

  • Welcome-бонус — 50 ₽ при регистрации (WELCOME_BONUS_RUB).
  • При просадке ниже 100 ₽ (LOW_BALANCE_THRESHOLD_RUB) — email-уведомление, не чаще раза в 24 часа. Отписаться: PATCH /me { "lowBalanceEmailOptOut": true } или флажок в дашборде.

Дальше