<!-- Canonical: https://www.aigentcy.com/blog/enterprise-ai-cost-control/ -->

# AI cost management: what an accepted result costs

How to report AI spend the way finance reports everything else: by team, by workflow and by accepted result, with unknown charges kept separate from zero.

Aigentcy 18 August 2026 13 min read Updated 7 September 2026

## Key takeaways

-   Report cost per accepted result, and count retries, revisions and review minutes inside it.
-   Give each team and each automated workflow its own gateway key with a monthly budget, so every request has an owner before it runs.
-   Record the intent to pay before a model call. A call that times out stays an unconfirmed charge until the provider's receipt settles it.
-   Show reserved allowance and recorded spend as separate lines. Releasing a reservation is a bookkeeping change, and never a refund.
-   Route routine work to open-weight models, which public price lists put at a small fraction of frontier prices, and keep frontier models for work that fails on the cheaper route.

**Three columns, three meanings**

Recorded spend has a receipt, reserved allowance is a ceiling held while work runs, and an unconfirmed charge keeps its ceiling until a receipt or a review settles it. The total is never the sum of all three.

For the first year, AI cost management meant one line in the CTO’s experiment budget. Nobody asked what one result cost, because the total was small and the point was to learn.

Then the total stopped being small. A support team, a content team and two scheduled workflows all run through the same provider account, and the invoice reaches the CFO as one line. She asks what the business got for it, and the honest answer is a token count.

AI cost management turns that token count into the numbers finance already uses: cost per unit of work, budget by owner, and a clear line between spend that’s confirmed and spend that isn’t. This is how we set that up for the teams we work with.

## When AI spend becomes a finance line

The move from experiment to line item changes the question being asked. Nobody in finance wants to know how many tokens a team used. They want to know what a unit of work costs, who approved it and whether the number is final.

|  | Experiment budget | Finance line |
| --- | --- | --- |
| Owner | The CTO or a platform team | The team that gets the result |
| Unit | Tokens, requests, subscriptions | Cost per accepted result |
| Question asked | Does it work? | Is it worth what it costs? |
| Tolerance for unknowns | High. Sort it out later. | Low. Unknowns need an owner and a date. |
| Review cadence | When the bill surprises someone | Monthly, with last month to compare |

Three signs tell you the move has happened. The invoice is discussed at a finance meeting rather than an engineering one. Someone asks for the number by department. And a timeout or a duplicate request is treated as a possible charge, not as a technical footnote.

## Cost per accepted result

Pick a unit of work a business owner recognises and signs off. A support reply sent to a customer, a supplier assessment approved, a published article. Then divide the full cost of producing a batch of those units by the number that passed review.

The acceptance rule has to say who decides and when the result counts. A draft waiting for review is work in progress. A corrected version of the same assessment doesn’t become a second result because the model produced another answer.

Compare like with like. Hard cases, new languages and incomplete documents cost more, so either keep the batch comparable or show the mix beside the total. The [FinOps Foundation’s unit economics capability](https://www.finops.org/framework/capabilities/unit-economics/) describes the same discipline for cloud spend, and it transfers directly.

**Count the attempts, then divide**

The timed-out attempt stays in the cost as an unconfirmed charge, and the four review minutes are the largest share. A cheaper model would change only the first bar.

## The four buckets of cost

Split the total into categories that different people can change. Otherwise a fall in model prices hides a rising review burden, or an unused subscription disappears inside a shared technology budget.

| Cost bucket | What belongs here | Who can change it |
| --- | --- | --- |
| Provider usage | Model requests, paid tools, retries that reached a provider | The workflow owner, by changing the route or the prompt |
| People time | Preparing inputs, checking answers, correcting errors | The team lead, by changing templates and review rules |
| Shared operation | Gateway, hosting, monitoring, knowledge maintenance | The platform owner, by changing scale or supplier |
| Access and subscriptions | Seats, platform fees, committed capacity | Procurement, by matching seats to use |

Label the scope of every comparison. A provider-only figure helps engineering tune a workflow. But it can’t be set against a fully loaded manual process and called a saving.

## AI cost management by team and workflow

Spend needs an owner before the first request runs. The mechanism we use is a gateway that sits between every application and every model provider. It issues one key per team, one per deployed service and one per scheduled workflow, and each key carries a monthly budget and a list of allowed models.

A request that would push a key past its budget is refused before it reaches a provider. The team sees a clear message, the platform records the refusal, and nothing is charged.

[Bifrost](https://docs.getbifrost.ai/features/governance/virtual-keys), an open source gateway, documents this pattern as virtual keys with budgets, model restrictions and team association, and other gateways offer the same shape.

Each key should carry:

-   **A budget owner**, the person who approves an increase.
-   **A reset period**, usually the calendar month, so the report lines up with the finance close.
-   **A daily cap**, a fraction of the monthly budget, so a runaway job is stopped in hours rather than weeks.
-   **An allowed model list**, so a routine workflow can’t quietly move to the most expensive model.
-   **A stated next step at the limit**, such as a lower-cost route, a request for more budget, or finishing the task by hand.

Keep separate keys for routine work, experiments and approved exceptions. An experimental key needs room to learn. A scheduled workflow needs a predictable cap and a person who’s told when it’s hit.

The starting budgets below are the kind we set in a first month. They’re assumptions to adjust after four weeks of real usage, and the daily cap is there so a mistake costs a day rather than a month.

| Key | Monthly budget | Daily cap | Allowed routes | Told at the limit |
| --- | --- | --- | --- | --- |
| Support team, 12 agents | $600 | $50 | Routine, documents | Support lead |
| Content team, 4 writers | $400 | $40 | Routine, hard cases | Head of marketing |
| Nightly reporting job | $150 | $10 | Routine only | Platform owner, by alert |
| Research pilot, 2 people | $500 | $60 | All routes | The pilot’s sponsor |

**Refused before it costs anything**

Because every key carries its own budget, a scheduled job that hits its cap is stopped at the gateway with a logged reason, while the other keys keep working.

## Retries, revisions and review time

Three different things get called a retry, and they cost different amounts. Treat every repeat as new spend until the record says otherwise.

| Kind of repeat | Is it new provider cost? | How to record it |
| --- | --- | --- |
| A reviewer asks for a change | Yes. It’s a new paid attempt. | New attempt, linked to the same task |
| A service repeats a failed request | Yes, and the first may also have cost | New attempt. The first stays unconfirmed. |
| The application re-saves a usage record | No. Same receipt, same attempt. | Retry the write. Never call the provider again. |
| A person tries a better prompt in chat | Yes | New attempt, counted against their key |

The interrupted request is the awkward one. The provider may have finished the work after your side gave up waiting. AWS’s guidance on [making retries safe](https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/) explains why a missing response proves nothing about whether the operation ran.

Review time belongs in the same record. If a support agent spends four minutes checking a suggested reply, that’s four minutes of the reply’s cost. Sample it rather than asking people to self-report, and keep the sample beside the token figures.

## Charges you can’t confirm yet

An empty cost field is evidence of nothing. So the ledger we run records the intent to pay before the provider is called, and every paid attempt moves through a small set of states.

How one paid model call moves through the ledger

```mermaid
flowchart TD
accTitle: How one paid model call moves through the ledger
  A[Record intent and ceiling] --> B{Fits the budget?}
  B -->|No| C[Refuse before calling]
  B -->|Yes| D[Call the provider]
  D --> E{Receipt arrived?}
  E -->|Yes| F[Recorded spend]
  E -->|Timeout or lost reply| G[Unconfirmed charge]
  G -->|Late receipt or statement| F
  G -->|Owner review| H[Written off with a reason]
```

The states are plain enough for a finance reader:

1.  **Reserved.** The application has recorded what it intends to spend, with a ceiling, and the budget check passed.
2.  **Started.** The provider was called. From here on, money may have moved.
3.  **Recorded.** A usage receipt arrived with token counts and a price.
4.  **Unconfirmed.** The call timed out or the reply was lost. The ceiling stays held, and the attempt has an owner and an age.

Unknown cost is kept separate from zero. A report that shows $0 for a timed-out call is wrong in a way that compounds, because the next month’s baseline inherits the error. A report that shows “3 unconfirmed, oldest 9 days” tells the owner what to chase.

Recovery follows from the states. If the receipt was received but the write failed, retry the write. If the reply was lost, keep the hold and reconcile against the provider’s statement. Neither case buys another model response.

Here’s the case that taught us to do it this way. A scheduled job called the provider, and the container running it was stopped before the reply came back. The job’s own log said nothing had happened.

But the provider had finished the work and billed it, and the retry an hour later bought the same result a second time. With intent recorded first, the second run sees an unconfirmed attempt and waits for a person instead.

## Reserved allowance and recorded spend

Reservations protect the budget while work runs. But they’re easy to misread on a dashboard, so keep them on their own line with their own meaning.

| Reported amount | Meaning | Management response |
| --- | --- | --- |
| Recorded spend | Usage with a receipt and a price | Include it in the month’s cost |
| Reserved allowance | Ceilings held for work that’s still running | Don’t promise that capacity elsewhere |
| Unconfirmed charge | An attempt with no receipt yet | Assign an owner and a review date |
| Reconciled spend | Recorded spend checked against the provider statement | Record the scope and any difference |

Releasing a reservation changes what’s available to spend. It doesn’t mean the provider refunded anything. And a reconciled figure differs from the recorded one for ordinary reasons, such as a reporting lag, a credit, or a period boundary, so keep the adjustment traceable rather than overwriting the original.

## A worked example

The figures below are assumptions chosen to show the arithmetic. They aren’t a quotation and they aren’t a customer result.

A team processes 1,000 comparable supplier assessments in a month. Provider usage is $240. The team’s share of the gateway, hosting and monitoring is $360. Reviewers spend 20 hours checking and correcting at a loaded rate of $40 an hour, which is $800.

| Line | Amount |
| --- | --- |
| Provider usage | $240 |
| Shared operation | $360 |
| Review time | $800 |
| Total | $1,400 |
| Accepted assessments | 800 |
| Cost per accepted result | $1.75 |
| Provider cost per accepted result | $0.30 |
| Unconfirmed attempts (still held) | 2, ceiling $1.20 |

Both unit figures are valid when labelled. The $0.30 tells engineering which route to tune. The $1.75 tells the budget owner what an assessment costs the business, and it shows that review time is 57 percent of it. So the next saving is in the review step, and a cheaper model would barely move the number.

The 200 that weren’t accepted still matter. State whether they were rejected, abandoned or still waiting. Until they’re settled, the batch is provisional and the unit cost may change.

## Open-weight models for routine work

Model prices differ by more than an order of magnitude, and a routine task doesn’t need a frontier model. The table shows list prices per million tokens from public pricing pages on 7 September 2026. They change often, so treat them as a picture of the spread rather than a quote.

| Tier | Example (source) | Input | Output |
| --- | --- | --- | --- |
| Frontier | GPT-6 Astra (OpenAI pricing) | $10.00 | $50.00 |
| Frontier | Claude Opus 5 (Claude pricing) | $5.00 | $25.00 |
| Mid | Claude Sonnet 5 | $2.00 | $10.00 |
| Small proprietary | GPT-5.6 Luna | $0.20 | $1.20 |
| Open weight, hosted | DeepSeek V4 Flash (Together pricing) | $0.14 | $0.28 |
| Open weight, hosted | gpt-oss-120B | $0.15 | $0.60 |

Read down the output column. Classifying a ticket, extracting fields from an invoice or drafting a first summary on a hosted open-weight model costs a few percent of what the same tokens cost on a frontier model.

Prompt caching cuts the input side further. Cached reads are priced at 10 percent of the base input price on [Claude](https://platform.claude.com/docs/en/build-with-claude/prompt-caching), and OpenAI’s list shows similar ratios.

To see what the spread means in money, take the same 1,000 assessments and assume each one sends 6,000 tokens in and gets 800 back. On Claude Opus 5 that’s about $0.05 of provider cost per assessment. On DeepSeek V4 Flash it’s about $0.001.

| Routing | Provider cost per 1,000 assessments |
| --- | --- |
| All on the frontier model | About $50 |
| All on the hosted open-weight model | About $1 |
| 70 percent routine route, 30 percent escalated to frontier | About $16 |

Set those against the $800 of review time in the worked example above. At this volume, the routing decision moves the provider line by tens of dollars, and the review step moves the total by hundreds. So we fix the review step first and tune the route second.

But per-token price is the wrong place to stop. A cheaper model that needs two more correction loops can cost more per accepted result than a stronger first attempt.

So we route routine work to the cheaper model, keep the frontier model for cases that fail review on the cheap route, and judge the split on cost per accepted result. Our [private AI service](https://www.aigentcy.com/services/private-ai/) covers the hosting side when data can’t leave your own infrastructure.

## What a finance-readable AI cost report looks like

One set of records serves both audiences. Engineering reads it by route and failed step. Finance reads it by owner, period and whether the number is final.

| Report line | What it answers | Who signs it |
| --- | --- | --- |
| Recorded spend by team and workflow | Who spent what, against which budget | Each budget owner |
| Accepted results by workflow | What the business received | The workflow owner |
| Cost per accepted result, this month and last | Is useful work getting cheaper? | The workflow owner |
| Review minutes per accepted result | Is the process releasing capacity? | The team lead |
| Retry and revision cost | Where repeat work eats the budget | The workflow owner |
| Unconfirmed charges, count and oldest age | Are exceptions piling up? | The platform owner |
| Reconciliation difference against the provider statement | Does our ledger match the invoice? | Finance |

Agree in advance who may clear an exception. Engineering can say what a request did. Finance decides how to treat it in the accounts. The workflow owner decides whether the replacement work is still worth doing.

Keep capacity and cash on different lines. A quicker assessment releases reviewer time, and that’s capacity. A cancelled contract or lower overtime is cash. Multiplying every claimed minute by a salary rate and calling it a saving is the first claim finance will challenge.

## Where to start with AI cost management

Run one workflow through the full loop before you introduce chargeback across the company.

1.  Choose a workflow with a named owner and an acceptance rule a reviewer can apply.
2.  Measure its current cost, completion time and quality on a representative batch.
3.  Give it a gateway key with a budget, an allowed model list and a person to call at the limit.
4.  Record every paid attempt with its state, its review minutes and its acceptance outcome.
5.  Reconcile against the provider statement and compare cost per accepted result with the baseline.

Our [customer support automation](https://www.aigentcy.com/case-studies/customer-support-automation/) work started this way, with one queue and one acceptance rule. At the month-end review, decide whether to expand, change the route or stop. Write down the evidence, the owner of any unconfirmed charge and the date of the next review.

That’s the whole shift. The token count becomes a unit cost, the unit cost has an owner, and the owner can see which part of the number is still moving. If you’d like help setting it up, see how we run [AI governance](https://www.aigentcy.com/services/ai-governance/) for teams at this stage.

## Frequently asked questions

What should a finance team measure beyond token spend?

Measure accepted results, review minutes, revision and retry cost, time to acceptance and the count and age of unconfirmed charges. Add hosting, subscriptions and support when you compare the full cost of two ways of doing the same work.

Does a timeout mean no money was spent?

No. The provider may have finished the work after your application stopped waiting. Keep that attempt as an unconfirmed charge until a usage receipt or a provider statement settles it, and approve any repeat as new work.

Should each team get the same AI budget?

No. Size each budget to the approved work and its risk. A research team needs room to try things, a scheduled workflow needs a predictable cap, and an occasional user needs a small allowance and a clear message when it runs out.

Can time saved be reported as a cash saving?

Only when a cost went down, such as a supplier contract, overtime or a subscription. Time released usually shows up as capacity, which is worth reporting on its own line rather than converting minutes into money.

Are open-weight models always cheaper?

Per token, usually yes by a wide margin. Per accepted result, only if the work still passes review. Test the cheaper route on your own cases and compare cost per accepted result, including corrections and escalations.

## Related reading

-   [Enterprise AI enablement: governed access for the whole company](https://www.aigentcy.com/blog/enterprise-ai-enablement/)Give each team governed access to a few approved models through one gateway, and measure adoption by the work that gets finished.
-   [An AI governance framework your team can operate](https://www.aigentcy.com/blog/enterprise-ai-governance-framework-guide/)A decision guide for the people who sign off AI systems: how much governance each one needs, who does what in the first 90 days, what it costs to run, and the evidence that proves the rules were followed.
-   [Automated resolution rate: measuring support AI by outcomes](https://www.aigentcy.com/blog/support-ai-resolution-metrics/)A bot can answer more conversations while your agents get harder work. Measure verified resolution, safe escalation, repeat contact and the cost per resolved case before you trust the headline rate.
-   [Support triage with replies ready for review](https://www.aigentcy.com/case-studies/customer-support-automation/)Case study
-   [Shared code context for a development team](https://www.aigentcy.com/case-studies/agentic-second-brain/)Case study

[How we implement AI governance](https://www.aigentcy.com/services/ai-governance/) [Talk to us about your project](https://www.aigentcy.com/contact/)
