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
- In Moneybird, go to Settings (gear icon, bottom-left)
- Click External and AI connections
- Under External applications, click Create API token
- Give the token a name (e.g. Vibes to Bucks), confirm, and copy the token
- Paste it into the API Token field in the Vibes to Bucks Settings panel
Getting your Harvest token
- In Harvest, go to Developers โ Personal Access Tokens
- Click Create new personal access token, give it a name, and copy the token
- You also need your Account ID โ shown on the same page next to your account name
- 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?
- Repository โ matches by git remote. Use this for most projects. The extension detects the remote automatically when you have a workspace open.
- Folder โ matches by folder path. Use this for projects without a git remote, or to link a local folder to a specific branch of a multiclient repo.
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
- Git must be installed locally. The extension runs
git logto fetch commit messages for AI summarization. - SSH remote workspaces: SSH key-based authentication (passwordless) is required. Git must be installed on the remote machine. The extension automatically runs
ssh <host> "git log ..."when it detects an SSH workspace.
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:
[email protected]:acme/website.githttps://github.com/acme/website.gitssh://[email protected]/acme/website.git
Write repo values as host/org/repo โ no protocol, no .git.
Finding Moneybird IDs
- Administration ID: visible in the URL โ
moneybird.com/{id}/... - Contact ID: open a contact, ID is in the URL
- Project ID: Settings โ Projects โ click a project โ ID in URL
- User ID: Settings โ Users โ your user โ ID in URL