Configuration

Everything can be configured through the Settings panel โ€” open it with Vibes to Bucks: Cost Tracking & Billing Setup in the Cursor command palette. No YAML editing required.


1. Connect your billing software (Pro)

Under Billing software, choose Moneybird or Harvest.

Enter your API Token and click Test Connection. Once connected, the Administration and User dropdowns populate automatically from your account. Select the right administration and user โ€” time entries will be created under this user.

Your token is stored securely in VS Code’s SecretStorage. It is never written to a config file or disk.

Getting your Moneybird API token

  1. In Moneybird, go to Settings (gear icon, bottom-left)
  2. Click External and AI connections
  3. Under External applications, click Create API token
  4. Give the token a name (e.g. Vibes to Bucks), confirm, and copy the token
  5. Paste it into the API Token field in the Vibes to Bucks Settings panel

Getting your Harvest token

  1. In Harvest, go to Developers โ†’ Personal Access Tokens
  2. Click Create new personal access token, give it a name, and copy the token
  3. You also need your Account ID โ€” shown on the same page next to your account name
  4. Paste both into the Vibes to Bucks Settings panel

2. Add billing rules

Billing rules tell the extension which client and project to assign AI costs to. Open the Settings panel and scroll to Add Billing Rule.

What do you want to track?

Rule fields

Field What it does
Contact The client in Moneybird or Harvest this rule bills to. Start typing to search.
Project The project under that client. Start typing to search.
Hourly Rate (EUR) Your rate for this client. Used to convert AI cost into billable hours.
How to calculate billable time Multiply AI cost โ€” applies your profit multiplier before converting to hours. Pass through at face value โ€” passes the raw cost to the client.
Cost to Profit Multiplier Only shown when multiply mode is selected. Default is 5 (every โ‚ฌ1 of AI cost = โ‚ฌ5 billed).
Weekly budget cap Check to set a max AI cost per week for this rule. The extension alerts you at 25%, 50%, 75%, 85%, 95% and when you exceed the limit.
Billable Checked by default. Uncheck to track costs for this rule without generating a time entry โ€” useful for internal projects or absorbed overheads.

Click Save Rule when done.

Multiple clients on one repo

If different branches of the same repo belong to different clients, check Multiple clients on this repo and save. The rule then shows a branch icon in the Billing Rules table โ€” click it to open Branch Rules.

Each branch rule adds a pattern (exact branch name like main, single wildcard like client-a/*, or recursive like feature/**) and its own contact, project, rate, billing mode, and budget settings.

Rules are matched top to bottom โ€” the first match wins.


3. Unassigned costs

The Unassigned Costs section (also reachable via Vibes to Bucks: Show Unassigned Costs) lists repos with tracked AI costs that don’t match any billing rule yet. Click Assign next to a repo to open the Add Billing Rule form with the repository pre-filled.


4. Settings

Setting What it does
Language UI language for the extension. 15 languages available.
Check for new costs every (minutes) How often the extension polls Cursor for new usage. Default: 5.
Sync to billing software Daily โ€” syncs automatically at end of day. Manual โ€” run Vibes to Bucks: Sync Now from the command palette when you want to sync.
Fallback exchange rate (USD โ†’ EUR) Used when the live ECB rate is unavailable. The panel shows the current live rate and lets you fetch the latest with one click.
Display Currency EUR or USD. Affects how costs are shown in the dashboard and status bar.

Click Save Settings after making changes.


5. AI Summarization (Pro)

When syncing, the extension can generate meaningful time entry descriptions from your recent git commits using an AI model.

Field What it does
AI provider Anthropic or OpenAI.
Model Select from presets (e.g. Claude Haiku 4.5) or enter a custom model ID.
API key Enter your key and click Save Key. Stored securely in SecretStorage โ€” never written to config files.

Prerequisites


Advanced: YAML reference

The Settings panel writes to ~/.vibes-to-bucks/config.yaml. You can edit this file directly as an alternative โ€” the panel and YAML are fully interchangeable.

Full example

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 normalization

Git remotes are normalized before matching. All of these resolve to github.com/acme/website:

Write repo values as host/org/repo โ€” no protocol, no .git.

Finding Moneybird IDs