Reconciliation

Compare what providers billed with the calls you tracked: imported daily from OpenAI and Anthropic, or entered by hand for any provider, cloud or GPU host.

Tracked spend is what your code did. Billed spend is what you owe. Reconciliation shows the gap and where it comes from.

Connect a provider

Under Settings › Connections, add a key that can read your organization's costs:

Provider Key Where to create it
OpenAI sk-admin-... platform.openai.com › Settings › Organization › Admin keys; select Restricted and only Usage API Scope → Read
Anthropic Organization-scoped personal or service account key (sk-ant-api...), or an existing admin key (sk-ant-admin...) Claude Console › Keys & access › API keys; select Organization scope and an identity with cost-report access

Veqen tests the key by importing the last 30 days right away; a key that doesn't work is never saved. Keys are encrypted at rest and used only to read the cost endpoints (OpenAI's Organization Costs API and Anthropic's Cost Report API).

Claude workspace-scoped keys cannot access the cost endpoint, even when their prefix matches. Use a dedicated service account for a shared connection and grant only the access it needs. A key may permit more than Veqen uses; Veqen does not turn a broadly privileged key into a read-only key. See Claude's cost API authentication requirements.

Costs refresh every 24 hours on Free (one provider) and every 6 hours on Pro and Team (all providers). Each refresh re-imports the last seven days, because providers can restate recent days.

Reading the report

For each provider and date range:

  • Billed and tracked totals, and the capture rate (tracked ÷ billed). Above 95% means your instrumentation sees nearly everything.
  • A daily chart of both lines. They should move together.
  • Where they differ, by model, largest gap first.

Common reasons for a gap:

Billed > tracked Tracked > billed
Calls from code that isn't wrapped (scripts, other services, notebooks, the playground) Credits or negotiated discounts the public price book doesn't know
Non-token charges: web search, code execution, file storage Calls that failed at the provider but reported usage
A key used by a teammate or another app in the same provider organization Duplicate recording (a call both wrapped and sent via OpenTelemetry)

Untracked spend is counted in full in the monthly close, classified in your default category.

Bills entered by hand

Most providers have no cost API: Together, Fireworks, Bedrock and Azure invoices, fal, Replicate, ElevenLabs, a GPU cloud. Under Bills entered by hand on the Reconciliation page, enter each month's invoice total per provider. The page compares it with what you tracked for that provider and month, and the monthly close books the invoice amount instead of tracked spend. Owners, admins and finance members can enter bills.

For models you host yourself, enter the GPU or cloud bill under the provider name you used for their custom price.

Without code changes

Connecting a provider is the fastest first look: 30 days of real spend by model, before installing anything. The SDK then adds the per-customer and per-feature split.