Hoe facturering werkt
Vibes to Bucks houdt je Cursor AI-tokenkosten bij en zet deze om in factureerbare uren in je urenregistratiesoftware (Moneybird of Harvest). De omzetting is gebaseerd op je uurtarief — de extensie berekent hoeveel uren van jouw tijd de AI-kosten vertegenwoordigen en maakt een tijdinvoer aan voor dat bedrag.
Per klantmapping beheer je drie zaken:
- Factureerbaar of niet — vink Factureerbaar aan om een tijdinvoer voor de klant te genereren. Vink het uit om kosten intern bij te houden zonder de klant te factureren (handig voor je eigen projecten of geabsorbeerde overheadkosten).
- Hoe factureerbare tijd te berekenen — kies tussen AI-kosten vermenigvuldigen (voegt je marge toe) of Doorberekenen tegen nominale waarde (alleen kostendekking).
- Uurtarief — het klanttarief dat wordt gebruikt om de eurokosten om te zetten in uren.
AI-kosten vermenigvuldigen (aanbevolen)
Gebruik dit wanneer je AI-ondersteund werk met een winstmarge wilt factureren. Je stelt een Kosten-naar-Winst Vermenigvuldiger in die de ruwe AI-kosten schaalt voordat ze worden omgezet in uren. Dit vangt de echte waarde die je levert — het maken van prompts, het beoordelen en itereren van output, het integreren van het resultaat, en het nemen van verantwoordelijkheid voor het eindproduct.
De berekening:
cost_eur = cost_usd × multiplier × fx_rate
hours = cost_eur / hourly_rate
Voorbeeld: €10 aan AI-kosten, vermenigvuldiger 5, uurtarief €120/u:
cost_eur = €10 × 5 = €50
hours = €50 / €120 = 0.42h (≈ 25 minutes billed)
Een vermenigvuldiger van 5 betekent dat elke €1 aan AI-uitgaven €5 aan factureerbare omzet wordt — een marge die de expertise en tijd weerspiegelt die je investeert rond de AI-output. Begin bij 5 en pas aan om aan je klantafspraken te voldoen.
Doorberekenen tegen nominale waarde
Gebruik dit voor kostendekkende facturatie — de ruwe AI-kosten worden tegen nominale waarde aan de klant doorberekend, omgezet in uren tegen je uurtarief. Er wordt geen marge toegevoegd.
De berekening:
cost_eur = cost_usd × fx_rate
hours = cost_eur / hourly_rate
Voorbeeld: $12,00 AI-kosten, EUR/USD koers 0,92, uurtarief €120/u:
cost_eur = $12.00 × 0.92 = €11.04
hours = €11.04 / €120 = 0.092h (≈ 6 minutes billed)
Niet factureerbaar
Vink Factureerbaar uit bij een mapping om AI-kosten voor die klant of dat project bij te houden zonder een tijdinvoer te genereren. De kosten verschijnen in je dashboard zodat je de uitgaven kunt zien, maar er wordt niets gesynchroniseerd naar Moneybird of Harvest. Handig voor interne projecten, R&D, of werk waarbij je de AI-kosten zelf absorbeert.
Wisselkoersen
USD→EUR conversie gebruikt de Frankfurter API, die referentiekoersen van de Europese Centrale Bank levert, dagelijks gepubliceerd rond 16:00 CET. Koersen worden lokaal gecached om overbodige API-aanroepen te vermijden. Wanneer de API onbereikbaar is, valt de extensie terug op de fallback_rate uit je configuratie.
Voor backfill haalt de extensie de historische koers op voor elke specifieke dag, zodat je nauwkeurige conversies krijgt, zelfs voor eerdere data.
Afronden en minimums
Tijdinvoeren worden opgeslagen als start/eind-tijdstempels. De extensie zet uren om in minuten en rondt af naar de dichtstbijzijnde hele minuut, met een minimum van 1 minuut:
- 0,001u → 1 minuut (minimum)
- 0,092u → 6 minuten
- 2,25u → 2 uur 15 minuten
Alle invoeren beginnen om 09:00 UTC. De eindtijd wordt berekend op basis van de afgeronde duur. Deze tijdstempels zijn een API-vereiste en weerspiegelen niet de daadwerkelijke werkuren.
Eén invoer per klant per project per dag
De synchronisatie-engine produceert maximaal één tijdinvoer per klant per project per dag. Als er later op dezelfde dag meer gebeurtenissen binnenkomen, werkt de volgende synchronisatie de bestaande invoer bij in plaats van een nieuwe te maken. Dit houdt je urenstaat schoon en voorkomt gefragmenteerde invoeren.
Idempotente synchronisatie
Voordat een invoer wordt aangemaakt, controleert de extensie of er al een bestaat voor dezelfde (dag, contact, project) combinatie:
- Geen bestaande invoer → aanmaken
- Bestaande invoer, totalen gewijzigd → bijwerken
- Bestaande invoer, totalen ongewijzigd → overslaan (geen API-aanroep)
Twee keer achter elkaar “Nu synchroniseren” uitvoeren levert geen duplicaten op.
Wekelijks budgetplafond
Stel een wekelijkse AI-kostenlimiet in per mapping (Pro). De extensie houdt de uitgaven per repo bij en stuurt Cursor-meldingen bij mijlpalen: 25%, 50%, 75%, 85%, 95% als informatiealerts, oplopend tot een waarschuwing bij 100% en elke 10% daarboven. Elke mijlpaal wordt één keer per week per repo geactiveerd.
Dit is een zacht plafond — het blokkeert nooit AI-gebruik, het houdt je gewoon op de hoogte voordat je eroverheen gaat. De budgetstatus is ook zichtbaar op het Gebruiksdashboard met meters die uitgaven versus limiet tonen.