Как работает биллинг

Vibes to Bucks отслеживает затраты на токены Cursor AI и преобразует их в учет рабочего времени в твоем софте для трекинга времени (Moneybird или Harvest). Конвертация основана на твоей почасовой ставке — расширение рассчитывает, сколько часов твоего времени представляет собой стоимость AI, и создает запись времени на эту сумму.

Для каждого клиента ты контролируешь три вещи:

Multiply AI cost (рекомендуется)

Используй это, когда хочешь выставлять счет за работу с AI с прибыльной маржой. Ты устанавливаешь Cost to Profit Multiplier, который масштабирует сырую стоимость AI перед конвертацией в часы. Это отражает реальную ценность, которую ты предоставляешь — создание запросов, проверку и итерацию результата, интеграцию и ответственность за конечный продукт.

Формула:

cost_eur = cost_usd × multiplier × fx_rate
hours    = cost_eur / hourly_rate

Пример: €10 стоимости AI, множитель 5, почасовая ставка €120/ч:

cost_eur = €10 × 5 = €50
hours    = €50 / €120 = 0.42h (≈ 25 minutes billed)

Множитель 5 означает, что каждый €1 затрат на AI становится €5 дохода — маржа, отражающая твой опыт и время, вложенные в работу с AI. Начни с 5 и настрой в соответствии с соглашениями с клиентами.

Pass through at face value

Используй это для выставления счетов за возмещение затрат — сырая стоимость AI передается клиенту по номиналу, конвертируется в часы по твоей почасовой ставке. Маржа не добавляется.

Формула:

cost_eur = cost_usd × fx_rate
hours    = cost_eur / hourly_rate

Пример: $12.00 стоимости AI, курс EUR/USD 0.92, почасовая ставка €120/ч:

cost_eur = $12.00 × 0.92 = €11.04
hours    = €11.04 / €120  = 0.092h (≈ 6 minutes billed)

Не оплачивается

Сними отметку Billable в настройках, чтобы отслеживать затраты AI для этого клиента или проекта без создания записи времени. Затраты отображаются на твоей панели, чтобы ты мог видеть расходы, но ничего не синхронизируется с Moneybird или Harvest. Полезно для внутренних проектов, исследований и разработок или любой работы, где ты сам поглощаешь затраты на AI.

Курсы валют

Конвертация USD→EUR использует Frankfurter API, который предоставляет справочные курсы Европейского центрального банка, публикуемые ежедневно около 16:00 CET. Курсы кэшируются локально, чтобы избежать лишних API-запросов. Когда API недоступен, расширение использует fallback_rate из твоей конфигурации.

Для обратной обработки расширение получает исторический курс для каждого конкретного дня, чтобы обеспечить точные конверсии даже для прошлых дат.

Округление и минимумы

Записи времени хранятся как временные метки начала и конца. Расширение конвертирует часы в минуты и округляет до ближайшей целой минуты, с минимумом в 1 минуту:

Все записи начинаются в 09:00 UTC. Время окончания рассчитывается из округленной продолжительности. Эти временные метки являются требованием API и не отражают фактические рабочие часы.

Одна запись на клиента на проект в день

Синхронизирующий движок создает не более одной записи времени на клиента на проект в день. Если в тот же день поступают новые события, следующая синхронизация обновляет существующую запись, а не создает новую. Это помогает поддерживать чистоту в твоем табеле учета времени и избегать фрагментации записей.

Идемпотентная синхронизация

Перед созданием записи расширение проверяет, существует ли уже запись для той же комбинации (день, контакт, проект):

Запуск “Sync Now” дважды подряд не создает дубликатов.

Недельный лимит бюджета

Установи недельный лимит затрат на AI для каждой настройки (Pro). Расширение отслеживает расходы на каждый репозиторий и отправляет уведомления Cursor на этапах: 25%, 50%, 75%, 85%, 95% как информационные предупреждения, переходя к предупреждению на 100% и каждые 10% сверх этого. Каждый этап срабатывает раз в неделю на репозиторий.

Это мягкий лимит — он никогда не блокирует использование AI, просто информирует тебя до того, как ты его превысишь. Статус бюджета также виден на панели использования с индикаторами, показывающими расходы по сравнению с лимитом.