Provider Sync
Provider Sync Overview
Auto-sync usage-based bills from cloud and API providers.
Provider sync pulls real billing data from external services and writes monthly actuals on variable expenses.
How it works
- Mark an expense as variable (
is_variable = true) - Connect a provider from the Actuals modal (owners/admins only)
- Credentials are encrypted (AES-256-GCM) and stored in
provider_links - Sync calculates:
billed = base_fee + max(0, usage - allowance) - Only complete billing cycles are persisted (partial current month skipped unless manual sync)
Supported providers
| Provider | Currency | Guide |
|---|---|---|
| Vercel | USD | Vercel |
| OpenAI | USD | OpenAI |
| Anthropic | USD | Anthropic |
| Apify | USD | Apify |
| GoDaddy | — | GoDaddy (domain import, not sync) |
GoDaddy is a separate flow — it imports domains as yearly expenses, not monthly actuals.
Automatic sync schedule
Cron job /api/cron/provider-sync runs on the 2nd of each month at 06:00 UTC, syncing the previous calendar month for all connected links.
Manual sync
Click Sync now in the Actuals modal to pull the latest complete period immediately.
Requirements
- Expense currency must match provider billing currency (USD for all sync providers)
bills:variableplan feature (Pro+) when billing is enforced- Owner or admin role to connect/disconnect
Disconnect
Use Disconnect in the Actuals modal. Credentials are deleted from provider_links; existing actuals remain.
