Calculating an AI Budget for a Developer Team
Pay-per-token is not always cheaper: volume decides. Here is how to measure usage in a pilot, calculate a month for the team, and find the line versus a subscription.
6 min · · payments · бизнес · экономия
An AI budget for a developer team is hard to plan blind: a subscription is predictable but billed per person, while pay-per-token depends on how people actually work. Below is how to measure real usage in a pilot, calculate a month for the team with a formula, and see where paying per token beats a subscription and where it does not.
The formula: tokens and price
Models count text in tokens. Every request has two parts:
- input tokens: everything you send, including the prompt, project files and conversation history;
- output tokens: the model's answer.
Request price = (input × input price + output × output price) / 1,000,000.
For claude-sonnet-5 on Zukko both prices are $0.3 per million tokens. A request with 1,000 input and 500 output tokens costs (1,000 × 0.3 + 500 × 0.3) / 1,000,000 = $0.00045. One request is pennies, but an IDE agent makes hundreds of them per workday and resends the context each time. So you budget by daily volume, not by single requests.
A pilot week: measuring real usage
"Typical" usage figures per developer say little: everything depends on the tool, the project size and personal habits. It is more honest to measure your own.
How to run the pilot
- Pick two or three developers with different working styles.
- Give each their own key, so usage is visible per person.
- Connect their tools to Zukko:
- Claude Code:
ANTHROPIC_BASE_URL=https://api.zukko.proandANTHROPIC_AUTH_TOKEN=fetch_...; see the Claude Code guide; - Cursor, Cline and other clients with an OpenAI-compatible API: base URL
https://api.zukko.pro/v1and afetch_...key; see the VS Code extensions guide.
- Claude Code:
- Ask them to work as usual, with no "saving" and no artificial load.
- Collect data for 5 working days.
Where to see usage
- In the dashboard, "Usage" section: spending history by request and model.
- Via the API:
GET https://api.zukko.pro/v1/usagereturns a feed of your requests andGET https://api.zukko.pro/v1/balancereturns the balance. Response formats are in the usage reference and the balance reference.
From the pilot you need two numbers per person: average input and output tokens per day, and the model they worked with.
Example: a team of five developers
The numbers below are an illustrative example of the calculation. Use your own from the pilot.
Assumptions:
- 5 developers;
- on average 3 million input and 1 million output tokens per person per day;
- 22 working days per month.
On claude-sonnet-5 ($0.3 / $0.3):
- per person per day: (3,000,000 × 0.3 + 1,000,000 × 0.3) / 1,000,000 = $1.20;
- per team per month: 1.20 × 22 × 5 = $132;
- per year: 132 × 12 = $1,584;
- per person per month: 132 / 5 = $26.40.
The same volume on other models:
| Model | Input/output price, $ per 1M | Per person per day | Per team per month |
|---|---|---|---|
claude-sonnet-5 | 0.3 / 0.3 | 4,000,000 × 0.3 / 1,000,000 = $1.20 | $132 |
gpt-5.6-luna | 0.1 / 0.1 | 4,000,000 × 0.1 / 1,000,000 = $0.40 | $44 |
glm-5.3-flash | 0.04 / 0.04 | 4,000,000 × 0.04 / 1,000,000 = $0.16 | $17.60 |
The table cannot tell you whether a cheaper model fits your tasks. Test it in the pilot: give one group tasks on claude-sonnet-5 and another the same kinds of tasks on gpt-5.6-luna or glm-5.3-flash, then compare how many answers had to be redone. The current list of models and prices is at GET https://api.zukko.pro/v1/models or on the "Models" page in the dashboard.
Tokens or a subscription: where the line is
A subscription is a fixed amount per person; pay-per-token grows with volume. So there is a break-even point.
Take a hypothetical $40 per person per month subscription. Per working day that is 40 / 22 ≈ $1.82. On claude-sonnet-5 that money buys 1.82 / 0.3 ≈ 6 million tokens (input plus output) per day.
- If a developer uses fewer than 6 million tokens a day, tokens are cheaper.
- If more, the subscription is cheaper, provided it has no limits your team would hit. Check the terms of the specific plan.
In our example (4 million a day) it comes to $26.40 versus $40 per person. For light users the gap is bigger; for someone who runs an agent over a large project all day, it can flip the other way.
A caveat about caching
IDE agents send the same large context (files, instructions, history) many times in a row. Vendors charge roughly 10% of the input price for reading such repeated context from the prompt cache, while Zukko bills cached tokens at the regular input price. So for agent work with a huge repeated context, the real difference from vendor pricing is smaller than a straight price-list comparison suggests. Compare using actual usage from the pilot.
Key limits and cost control
Give every developer their own key. On the keys page in the dashboard you can set for each key:
- a name (for example,
dev-alice); - a daily dollar limit;
- a monthly dollar limit;
- a list of allowed models.
What happens when they trigger:
- daily limit reached: requests with this key get HTTP 429 with code
key_daily_limit_reached; the limit resets at 00:00 UTC; - monthly limit reached: HTTP 429 with code
key_monthly_limit_reached; - model not in the allowed list: HTTP 403
model_not_allowed_for_key; - less than $0.01 on the account balance: HTTP 402
insufficient_balancefor every key.
Details are in the key limits section.
How to spend less
- Match the model to the task. The same volume costs $0.40 a day on
gpt-5.6-lunainstead of $1.20 onclaude-sonnet-5, and $0.16 onglm-5.3-flash. Move to a cheaper model the tasks it handled well in the pilot. - Trim the context. A big prompt with project files is input tokens in every request. Do not attach unnecessary folders to the agent, and clear the conversation history when the task changes.
- Combine small questions. Ten separate requests with the same instruction send that instruction ten times; one request with a list of questions sends it once.
- Cap the output.
max_tokenssets a ceiling on answer length, and therefore on output cost.
FAQ
Can one developer accidentally burn the whole budget?
Without limits, yes: an agent in a loop can keep sending requests for a long time. That is why every key should have daily and monthly limits. Once a key's spend for the day reaches the limit, further requests get a 429 until the reset at 00:00 UTC.
What if a tool does not let me set a custom base URL?
Most IDEs and clients let you enter the address of an OpenAI- or Anthropic-compatible API. If a tool is hard-wired to its own server, you can use the browser chat, which charges the same balance, or run a local OpenAI-compatible proxy (for example, LiteLLM) and point it at Zukko.
How long does $100 last for one developer?
At the example volume (4 million tokens a day) on claude-sonnet-5, that is $1.20 a day or $26.40 for 22 working days, so $100 lasts about 100 / 26.40 ≈ 3.8 months. On glm-5.3-flash it is $0.16 a day, $3.52 a month, or about 28 months.
What else does the budget depend on?
The project and the tool. A large codebase and agents that run multi-step chains produce many times more input than occasional chat questions. That is why a pilot on real tasks is the only reliable source of numbers. To start, create keys for the pilot participants.
zukko
Pay 25×
less
for Claude Code & ChatGPT
One fetch_* key and base URL api.zukko.pro — for Cursor, Claude Code, Codex, and any SDK.
Related articles
- Buying AI tokens: how a dollar balance works and what $5 gets youTokens at a gateway are not a package but a dollar balance. We look at what is charged to it and calculate how many requests $5 covers.
- Paying for AI without a fee: is it possible and how to calculate the overpaymentThere is almost always a fee when you top up. We show what it consists of, calculate it for SBP and card, and give a formula for how many rubles you need for N dollars.
- Paying for AI in rubles: SBP, a dollar balance and the exchange rateRubles paid via SBP turn into a dollar balance at the rate on the payment date plus the payment page fee. The formula, a top-up table and the price of requests in rubles.
- opencode agents: setting up roles, models and toolsA custom agent in opencode is a role, a model and a set of permissions. A working config where a cheap model handles routine work and a stronger one edits code.