Como funciona a cobrança

Vibes to Bucks rastreia os custos dos tokens do Cursor AI e os converte em horas faturáveis no seu software de controle de tempo (Moneybird ou Harvest). A conversão é baseada na sua taxa horária — então a extensão calcula quantas horas do seu tempo o custo do AI representa e cria uma entrada de tempo para esse valor.

Para cada mapeamento de cliente, você controla três coisas:

Multiplicar custo do AI (recomendado)

Use isso quando quiser cobrar o trabalho assistido por AI com uma margem de lucro. Você define um Multiplicador de Custo para Lucro que escala o custo bruto do AI antes de converter para horas. Isso captura o valor real que você entrega — elaboração de prompts, revisão e iteração sobre o resultado, integração do resultado e responsabilidade pelo produto final.

A matemática:

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

Exemplo: €10 de custo de AI, multiplicador 5, taxa horária €120/h:

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

Um multiplicador de 5 significa que cada €1 gasto com AI se torna €5 de receita faturável — uma margem que reflete a expertise e o tempo que você investe em torno do resultado do AI. Comece com 5 e ajuste para corresponder aos seus acordos com os clientes.

Repasse pelo valor nominal

Use isso para faturamento de recuperação de custo — o custo bruto do AI é repassado ao cliente pelo valor nominal, convertido em horas com base na sua taxa horária. Nenhuma margem é adicionada.

A matemática:

cost_eur = cost_usd × fx_rate
hours    = cost_eur / hourly_rate

Exemplo: $12.00 de custo de AI, taxa EUR/USD 0.92, taxa horária €120/h:

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

Não faturável

Desmarque Faturável em um mapeamento para rastrear os custos de AI para aquele cliente ou projeto sem gerar nenhuma entrada de tempo. Os custos aparecem no seu painel para que você possa ver o gasto, mas nada é sincronizado com Moneybird ou Harvest. Útil para projetos internos, P&D ou qualquer trabalho onde você absorve o custo do AI.

Taxas de câmbio

A conversão USD→EUR usa a API Frankfurter, que fornece taxas de referência do Banco Central Europeu publicadas diariamente por volta das 16:00 CET. As taxas são armazenadas em cache localmente para evitar chamadas redundantes à API. Quando a API está inacessível, a extensão recorre à fallback_rate da sua configuração.

Para preenchimento retroativo, a extensão busca a taxa histórica para cada dia específico, garantindo conversões precisas mesmo para datas passadas.

Arredondamento e mínimos

As entradas de tempo são armazenadas como timestamps de início/fim. A extensão converte horas em minutos e arredonda para o minuto inteiro mais próximo, com um mínimo de 1 minuto:

Todas as entradas começam às 09:00 UTC. O horário de término é calculado a partir da duração arredondada. Esses timestamps são uma exigência da API e não refletem o horário de trabalho real.

Uma entrada por cliente por projeto por dia

O mecanismo de sincronização produz no máximo uma entrada de tempo por cliente por projeto por dia. Se mais eventos chegarem no mesmo dia, a próxima sincronização atualiza a entrada existente em vez de criar uma nova. Isso mantém sua folha de horas limpa e evita entradas fragmentadas.

Sincronização idempotente

Antes de criar uma entrada, a extensão verifica se já existe uma para a mesma combinação (dia, contato, projeto):

Executar “Sincronizar Agora” duas vezes seguidas não produz duplicatas.

Limite de orçamento semanal

Defina um limite de custo de AI semanal por mapeamento (Pro). A extensão rastreia o gasto por repositório e dispara notificações do Cursor em marcos: 25%, 50%, 75%, 85%, 95% como alertas informativos, escalando para um aviso em 100% e a cada 10% além disso. Cada marco dispara uma vez por semana por repositório.

Este é um limite flexível — nunca bloqueia o uso do AI, apenas mantém você informado antes de ultrapassar. O status do orçamento também é visível no Painel de Uso com medidores mostrando gasto versus limite.