AI tools are billed to the firm as one account. Allcora splits that spend by client engagement, so the people who set budgets and the people who use the tools are looking at the same number.
The four steps
- Connect your usage sources. Claude Code, your Anthropic and OpenAI accounts, LiteLLM, OpenRouter, or your own tools through the Allcora API. Allcora reads usage and cost only, never prompts or responses.
- Set a budget for each engagement. In money or in tokens, in any of 20 currencies, with the client's billing currency alongside.
- Watch the burn-down. Each engagement shows spend, the remaining budget, the pace of spend and a forecast of when the budget runs out.
- Decide at the thresholds, then bill. Alerts, approval requests and stops fire at the percentages you set. At month end, the rebill export gives AI cost by engagement, ready for invoicing.
The building blocks
| Term | What it means in Allcora |
|---|---|
| Firm | Your workspace. It has one reporting currency for firm totals, reports and approval limits. |
| Client | Who the work is for. A client can carry its own client number and markup for the rebill export. |
| Engagement | A project or matter with its own job code, owner, budget and billing currency. The job code is what usage is tagged with. |
| Usage source | A connection that brings AI usage into Allcora, such as a vendor account, a gateway or the Allcora CLI. |
| Unattributed pool | Where usage goes when Allcora can't tell which engagement it belongs to. You assign it from the Unattributed page. |
How spend finds its engagement
Allcora checks each usage record in this order and stops at the first match:
- An engagement tag on the request, such as a Claude Code session started with
allcora run -e CODEor a gateway request taggedallcora.engagement=CODE. - A rule for the API key or gateway key that made the request.
- A rule for the person who made it.
- A rule for the vendor workspace or project.
Anything still unmatched goes to the unattributed pool. Only active and paused engagements accept spend. Usage tagged to a draft or closed engagement is checked against the rules above and, if none match, goes to the pool. See Unattributed spend.
Estimates first, then the record
Fast feeds (the Allcora CLI, LiteLLM, OpenRouter, the Allcora API and CSV uploads) give an estimate within minutes. Your Anthropic and OpenAI usage reports are the financial record, and Allcora reconciles the estimates against them every morning. Until a day is reconciled, figures carry an "Estimated, not yet reconciled" label.
What happens as a budget is used
Every engagement has thresholds, measured against its budget plus any approved top-ups. New firms start with these defaults, which you can change for the firm or for a single engagement:
| Default | Action | What happens |
|---|---|---|
| 75% | Alert | The engagement owner gets an email. |
| 100% | Require approval | A top-up request goes to the engagement owner, and to a Finance owner above the owner's limit. On the Starter plan this sends an alert instead, and top-ups are requested by hand. |
| 110% | Stop | The team and finance are told to stop. With a hard gate, new Allcora CLI sessions for the engagement are refused until a top-up is approved. |
The full detail, including soft and hard gates, is in Alerts, approvals and stops.
At month end
The Chargeback page lists each engagement's AI cost for the month in its billing currency, with markup applied. Export it as a CSV, then lock the month so the figures are recorded as billed. Corrections for a locked month appear as an adjustment in the next export rather than changing an invoice you have already sent.
Last reviewed 29 October 2026, Allcora platform version 15.