Configuratie
Alles kan worden geconfigureerd via het Instellingenpaneel — open het met Vibes to Bucks: Cost Tracking & Billing Setup in de Cursor command palette. Geen YAML-bewerking nodig.
1. Verbind je facturatiesoftware (Pro)
Onder Facturatiesoftware, kies Moneybird of Harvest.
Voer je API-token in en klik op Verbinding testen. Zodra verbonden, worden de dropdowns Administratie en Gebruiker automatisch gevuld vanuit je account. Selecteer de juiste administratie en gebruiker — tijdregistraties worden onder deze gebruiker aangemaakt.
Je token wordt veilig opgeslagen in de SecretStorage van VS Code. Het wordt nooit naar een configuratiebestand of schijf geschreven.
Je Moneybird API-token verkrijgen
- Ga in Moneybird naar Instellingen (tandwielicoon, linksonder)
- Klik op Externe en AI-verbindingen
- Onder Externe applicaties, klik op API-token aanmaken
- Geef het token een naam (bijv. Vibes to Bucks), bevestig en kopieer het token
- Plak het in het API-tokenveld in het Vibes to Bucks Instellingenpaneel
Je Harvest-token verkrijgen
- Ga in Harvest naar Developers → Personal Access Tokens
- Klik op Create new personal access token, geef het een naam en kopieer het token
- Je hebt ook je Account ID nodig — te zien op dezelfde pagina naast je accountnaam
- Plak beide in het Vibes to Bucks Instellingenpaneel
2. Voeg facturatieregels toe
Facturatieregels vertellen de extensie naar welke klant en project AI-kosten moeten worden toegewezen. Open het Instellingenpaneel en scroll naar Facturatieregel toevoegen.
Wat wil je bijhouden?
- Repository — matcht op git remote. Gebruik dit voor de meeste projecten. De extensie detecteert de remote automatisch wanneer je een werkruimte open hebt.
- Map — matcht op mappad. Gebruik dit voor projecten zonder git remote, of om een lokale map aan een specifieke tak van een multiklantenrepo te koppelen.
Regelvelden
| Veld | Wat het doet |
|---|---|
| Contact | De klant in Moneybird of Harvest waar deze regel aan factureert. Begin met typen om te zoeken. |
| Project | Het project onder die klant. Begin met typen om te zoeken. |
| Uurtarief (EUR) | Jouw tarief voor deze klant. Gebruikt om AI-kosten om te zetten in factureerbare uren. |
| Hoe factureerbare tijd te berekenen | Vermenigvuldig AI-kosten — past je winstvermenigvuldiger toe voordat het naar uren wordt omgezet. Doorgeven tegen nominale waarde — geeft de ruwe kosten door aan de klant. |
| Kosten naar winst vermenigvuldiger | Alleen getoond wanneer vermenigvuldigmodus is geselecteerd. Standaard is 5 (elke €1 aan AI-kosten = €5 gefactureerd). |
| Wekelijks budgetlimiet | Vink aan om een maximale AI-kost per week voor deze regel in te stellen. De extensie waarschuwt je bij 25%, 50%, 75%, 85%, 95% en wanneer je de limiet overschrijdt. |
| Factureerbaar | Standaard aangevinkt. Vink uit om kosten voor deze regel bij te houden zonder een tijdregistratie te genereren — handig voor interne projecten of geabsorbeerde overheadkosten. |
Klik op Regel opslaan als je klaar bent.
Meerdere klanten op één repo
Als verschillende takken van dezelfde repo bij verschillende klanten horen, vink Meerdere klanten op deze repo aan en sla op. De regel toont dan een tak-icoon in de Facturatieregels tabel — klik erop om Takregels te openen.
Elke takregel voegt een patroon toe (exacte taknaam zoals main, enkele wildcard zoals client-a/*, of recursief zoals feature/**) en heeft zijn eigen contact, project, tarief, factureringsmodus en budgetinstellingen.
Regels worden van boven naar beneden gematcht — de eerste match wint.
3. Niet-toegewezen kosten
De sectie Niet-toegewezen kosten (ook bereikbaar via Vibes to Bucks: Show Unassigned Costs) toont repos met bijgehouden AI-kosten die nog niet aan een facturatieregel zijn gekoppeld. Klik op Toewijzen naast een repo om het formulier Facturatieregel toevoegen te openen met de repository al ingevuld.
4. Instellingen
| Instelling | Wat het doet |
|---|---|
| Taal | UI-taal voor de extensie. 15 talen beschikbaar. |
| Controleer op nieuwe kosten elke (minuten) | Hoe vaak de extensie Cursor controleert op nieuw gebruik. Standaard: 5. |
| Synchroniseer met facturatiesoftware | Dagelijks — synchroniseert automatisch aan het einde van de dag. Handmatig — voer Vibes to Bucks: Sync Now uit vanuit de command palette wanneer je wilt synchroniseren. |
| Vervangende wisselkoers (USD → EUR) | Gebruikt wanneer de live ECB-koers niet beschikbaar is. Het paneel toont de huidige live koers en laat je de nieuwste ophalen met één klik. |
| Weergavevaluta | EUR of USD. Bepaalt hoe kosten worden weergegeven in het dashboard en de statusbalk. |
Klik op Instellingen opslaan na het aanbrengen van wijzigingen.
5. AI Samenvatting (Pro)
Bij synchronisatie kan de extensie betekenisvolle tijdregistratiebeschrijvingen genereren van je recente git commits met behulp van een AI-model.
| Veld | Wat het doet |
|---|---|
| AI-provider | Anthropic of OpenAI. |
| Model | Selecteer uit presets (bijv. Claude Haiku 4.5) of voer een aangepast model-ID in. |
| API-sleutel | Voer je sleutel in en klik op Sleutel opslaan. Veilig opgeslagen in SecretStorage — nooit geschreven naar configuratiebestanden. |
Vereisten
- Git moet lokaal geïnstalleerd zijn. De extensie voert
git loguit om commitberichten op te halen voor AI-samenvatting. - SSH remote werkruimtes: SSH-sleutelgebaseerde authenticatie (wachtwoordloos) is vereist. Git moet op de remote machine geïnstalleerd zijn. De extensie voert automatisch
ssh <host> "git log ..."uit wanneer het een SSH-werkruimte detecteert.
Geavanceerd: YAML-referentie
Het Instellingenpaneel schrijft naar ~/.vibes-to-bucks/config.yaml. Je kunt dit bestand direct bewerken als alternatief — het paneel en YAML zijn volledig uitwisselbaar.
Volledig voorbeeld
destination: moneybird
moneybird:
administration_id: "123456789"
user_id: "987654321"
polling:
interval_minutes: 5
sync_schedule: daily
fx:
source: ecb
fallback_rate: 0.92
mappings:
# Single-client repo
- repo: github.com/acme/website
contact_id: "100"
billing:
mode: multiplier
project_id: "200"
hourly_rate: 120
multiplier: 5
budget:
max_ai_cost_per_week: 50
# Multi-client repo — different branches → different clients
- repo: github.com/org/platform
multiclient: true
branches:
- pattern: "client-a/*"
contact_id: "300"
billing:
mode: multiplier
project_id: "400"
hourly_rate: 100
multiplier: 5
- pattern: dev
contact_id: "600"
billing:
mode: passthrough
project_id: "700"
hourly_rate: 0
# Folder fallback
- folder: /home/user/experiments
contact_id: "800"
billing:
mode: passthrough
project_id: "900"
hourly_rate: 100
Remote normalisatie
Git remotes worden genormaliseerd voordat ze worden gematcht. Al deze lossen op naar github.com/acme/website:
[email protected]:acme/website.githttps://github.com/acme/website.gitssh://[email protected]/acme/website.git
Schrijf repo-waarden als host/org/repo — geen protocol, geen .git.
Moneybird ID’s vinden
- Administratie-ID: zichtbaar in de URL —
moneybird.com/{id}/... - Contact-ID: open een contact, ID staat in de URL
- Project-ID: Instellingen → Projecten → klik op een project → ID in URL
- Gebruikers-ID: Instellingen → Gebruikers → jouw gebruiker → ID in URL