# How savings are measured

> How ACOG computes what each request cost, what it would have cost sent directly, and the saving you can check against your provider invoices.

Product: AI Cost Optimizer Gateway (ACOG). Web version: https://tessarac.com/docs/acog/optimize/savings-measurement. Last updated: 2026-10-16.

Every request through ACOG is recorded with two prices.

| | Meaning |
|---|---|
| **Actual cost** | What the request cost through ACOG: the tokens your provider billed, at that provider's price for the model that answered. Zero for a request answered from a cache. |
| **Would have cost direct** | What the same request would have cost sent straight to the provider and model you asked for, with no ACOG optimizations, at the provider's published list price. |

The **saving** is the difference, counted per request and never below zero for a request. Totals add up the per-request savings, which is why a total saving can be larger than "would have cost" minus "actual" over the same period.

## Where the numbers come from

- **Token counts** are the ones your provider reports in each response, including cached-input and cache-write tokens.
- **Prices** come from ACOG's price book of the providers' published list prices, which follows the providers' price changes. Each recorded price notes its source.
- Your own discounts with a provider are not known to ACOG, so both prices are list prices. The saving is therefore the saving at list price.

## How each mechanism is counted

| Disposition | Actual cost | Would have cost direct |
|---|---|---|
| Exact cache, Semantic cache, Dedup | Zero: no provider call | The recorded usage of the answer that was reused, priced at the model you asked for |
| Optimized (prompt caching, cleanup) | The billed tokens, including the cheaper cached-input tokens | The same request without ACOG's cache markers and cleanup |
| Batch | The batch-tier price | The synchronous price for the same request, including your own prompt-cache discounts |
| Auto mode | The model that answered | Your default model, for the same request. The saving is never more than the default model would have cost. |
| Pass-through | The billed tokens | The same: no saving |

ACOG's own calls on your connections (the auto mode judge, batch tier probes and cache refresh pings) are recorded as separate rows named `acog-internal-judge`, `acog-batch-probe` and `acog-cache-refresh`, so their cost is visible.

## Checking the numbers

A request answered from cache never reached your provider, so it is absent from your provider invoice. That absence is the saving, and it can be checked.

**Reports → Export → Savings proof** downloads a per-request reconciliation (CSV, Excel or JSON) with each request's tokens, prices, price sources and saving, which you can match against your provider invoices. The **How we measure savings** link on the Reports export menu explains each column.

## What you pay

On the hosted service you pay a share of the measured saving, invoiced monthly; requests that save nothing cost nothing extra. See [Billing](https://tessarac.com/docs/acog/administer/billing.md) and the [pricing page](/pricing).

## Where to see it

| Place | What it shows |
|---|---|
| **Overview** | Spend, savings and what you would have spent directly, over a window you choose |
| **Reports** | Usage and savings by user, model, provider, API key or label; recent requests with each one's cost and saving; an executive summary |
| **Activity** | Each request with the model asked for, the model that answered, tokens used and avoided, and its cost (requires the Activity permission) |
| Management API | `GET /v1/orgs/{org}/dashboard/summary` and related endpoints. See [Management API](https://tessarac.com/docs/acog/api/management-api.md#usage-and-savings). |
