
AI cost allocation by customer is the policy and process of attributing observed AI costs, including model inference, shared AI infrastructure, and unattributed usage, to the customers who drive them, so customer-level margin can support pricing, board, and hiring decisions.
Your AI bill arrives keyed to an API key or a project, not to a customer. Until someone writes down how that bill gets split, every customer margin number in your board deck is an estimate with a hidden assumption.
This article gives you a five-step allocation policy you can adopt this quarter. You will decide what gets tagged, how shared spend is apportioned, where unattributed usage is held, and how all of it reconciles to the invoice and lands in a per-customer margin view.
It covers observed costs only. It does not repeat the price-floor logic behind pricing decisions.
Key takeaways
- Spend is universal, attribution is not. The FinOps Foundation's State of FinOps 2026 reports 98% of respondents now manage AI spend, up from 31% two years earlier. A CloudZero and Benchmarkit survey found only 43% of companies track AI costs by customer and 22% by transaction.
- Engineering supplies the telemetry. Finance owns the allocation rule.
- Use four buckets: direct usage, shared infrastructure, unattributed usage, and internal usage.
- Reconcile the unattributed bucket monthly and review allocation weights quarterly.
- Report margin by customer cohort and model, never as one blended number.

Why allocation, not another dashboard, is the missing layer
"A dashboard shows you spend. An allocation policy tells you whose margin that spend belongs to."
— Aleksandar Stojanovic, CEO & Founder at FiscallionThose are different jobs, and most scaling SaaS teams have only done the first.
Inference behaves like real cost of goods sold. It scales with usage, not with seats or contract value. ICONIQ's State of AI snapshot reports model inference rising from 20% to 23% of total AI product costs as products scale, while talent's share falls from 32% to 26%. The cost line that grows with success is the one you are least likely to have attributed.
The provider side makes this harder. According to one practitioner write-up on multi-tenant chargeback, OpenAI groups spend by project or key, Anthropic by workspace, and Azure by deployment. Tenant identity exists only in your application logs unless you carry it through every hop.
The FinOps Foundation's guidance on shared costs names AI foundation models as shared substrate and warns that unallocated shared costs undermine fairness in costs per customer or per product. Your unit-economics guide already explains why gross margin is the filter for unit-level returns. Allocation is what makes that filter accurate for AI-heavy products.
Misallocated AI cost changes gross margin and CAC payback, which means it changes the decisions built on them.

Define four cost buckets before you tag anything
Tagging without bucket definitions produces clean data and wrong margins. Decide first where each type of cost is allowed to land.
| Bucket | What belongs in it | Allocation treatment |
|---|---|---|
| Direct usage | Model calls traceable to a customer through tenant or user tags | Charge to the customer at observed cost |
| Shared infrastructure | Gateways, vector stores, evaluation pipelines, foundation-model platform fees | Apportion by a documented rule |
| Unattributed usage | Background jobs, retries, streaming calls with late usage events, untagged calls | Hold in a suspense bucket, reconcile monthly |
| Internal usage | R&D, experiments, internal tooling, demos | Never charge to customer cost of goods sold |
The internal bucket matters more than it looks. If experimentation lands in customer COGS, you understate customer margin and overstate the cost of serving. If production usage lands in R&D, you do the reverse and flatter gross margin.
We have seen the same pattern in the ledger. A roughly $20M ARR company in our gross margin analysis had cloud and vendor API costs sitting in an engineering budget because the team reported to the CTO. Moving them to COGS took gross margin from 76% to 68%. AI costs buried in hosting lines create the same distortion.

Show allocation uncertainty beside the margin
A customer-level margin report should identify which costs were directly observed and which were allocated. Show the shared-cost driver and any unresolved remainder beside the result. If the invoice does not reconcile, label the variance before using that margin to change pricing or approve a renewal.
Build the allocation policy in five steps
The FinOps Framework's Allocation capability calls for three strategies: allocation, tagging and metadata, and shared costs, plus validation that the rules are followed. The five steps below map to those requirements.
Step 1: Tag at the source
Put tenant_id, user_id, feature, model, and environment on every call. Do this in the application layer, because that is where customer identity lives.
The FinOps cloud cost allocation guide is blunt on timing: tags cannot be applied retroactively. Untagged spend from last quarter stays untagged. Every month you delay adds history you can only estimate.
Provider mechanics exist. The AWS Bedrock cost management documentation describes IAM principal attribution, application inference profiles, and per-request metadata tagging with model invocation logs. Check the equivalent options for each provider you run.
Step 2: Route calls through a gateway that preserves tenant context
A single gateway makes tagging enforceable. It also creates a trap. In the Bedrock documentation, a gateway's IAM role is recorded as the caller unless you pass per-tenant session tags, so the gateway becomes one customer in your bill.
The chargeback write-up cited above lists the usual failure points:
- A gateway using one shared API key for every tenant.
- Queues that strip headers between services.
- Background jobs that never re-inject tenant context.
- Streaming calls whose usage events arrive after the tracing span has closed.
Audit each of these before you trust a per-customer number.
Step 3: Choose and document a shared-cost method
Shared infrastructure needs an apportionment rule, and the rule needs an owner. You have three practical options:
| Method | How it works | Best fit |
|---|---|---|
| Proportional to observed usage | Split by each customer's share of tagged tokens or requests | Usage-driven shared cost, such as vector stores and gateways |
| Weighted | Blend usage with another driver such as storage or active users | Shared cost with more than one driver |
| Even split | Divide equally across active customers | Small, fixed platform fees only |
Avoid allocating by seat count or contract value when the cost follows usage. It feels simple, but it moves cost from heavy users to light ones and hides the customers who are unprofitable.
Write the rule down, including the driver, the data source, and the review date. The allocation rule is a finance decision, not an engineering default.
Step 4: Hold unattributed usage in a suspense bucket
Some usage will not carry a tenant tag. Do not average it silently into blended COGS. Hold it in a named bucket, track its size as a percentage of total AI spend, and clear it on a schedule.
The size of that bucket is your tag-compliance signal. The FinOps allocation guide treats tag-compliance percentage as a core maturity KPI. A falling suspense bucket means your instrumentation is improving. A growing one means a new service or job is leaking tenant context.
Step 5: Reconcile to the invoice
Token-derived cost is an estimate until it ties to billed dollars. Each month, compare the sum of your allocated cost, shared cost, unattributed bucket, and internal usage to the provider invoice.
The difference is your reconciliation variance. Explain it or fix the instrumentation. Do not net it away.
Reconcile monthly, review weights quarterly
Cadence is what turns a policy into a control. Fiscallion's view is that the unattributed bucket should clear at month-end close, and the apportionment rules should be reviewed on a slower rhythm.
| Activity | Cadence | Owner |
|---|---|---|
| Reconcile token-derived cost to provider invoice | Monthly | Finance |
| Clear or explain the unattributed bucket | Monthly | Finance with engineering |
| Review tag-compliance percentage | Monthly | Engineering |
| Review shared-cost drivers and weights | Quarterly | Finance |
| Customer margin by cohort and model in board materials | Each board cycle | CEO and finance |
Feed the output into your monthly business review as contribution margin by segment. Our contribution margin guide explains why CAC payback should use contribution margin, not gross margin. Allocated AI cost is exactly what separates the two.
Expect concentration. Particula reports roughly 5% of tenants driving 60% of token spend on first instrumentation. That is a practitioner observation, not a survey benchmark, so test it against your own data. If your distribution looks similar, a blended margin hides your best and worst accounts.
For the board, show margin by cohort and model.
"One blended number answers what happened. A cohort view lets the board choose what to do about the accounts that cost more than they earn."
— Aleksandar Stojanovic, CEO & Founder at FiscallionCommon mistakes and replacement moves
| Mistake | Replacement move |
|---|---|
| One shared API key with no tenant propagation | Pass tenant identity on every call and enforce it at the gateway |
| Allocating by seats or contract value | Allocate by observed usage, and use weights only where a second driver exists |
| Burying AI cost in hosting or engineering lines | Classify production inference as COGS and keep internal usage separate |
| Treating tagging as a one-time project | Track tag-compliance percentage monthly with a named owner |
| Ignoring the unattributed bucket | Size it, explain it, and clear it at each close |
| Letting engineering set the apportionment rule | Have finance own the policy and engineering own the telemetry |
The customer cost-allocation worksheet
This is the structure we use to turn the policy into a per-customer margin view. Build it in your own spreadsheet from the columns below. It is meant to be copied from this page, not gated.
| Column | What it holds | Source |
|---|---|---|
| Customer and cohort | Account name, plan, segment, start period | CRM and billing |
| Revenue | Recognized revenue for the period | Accounting system |
| Direct AI usage cost | Tagged inference cost at observed rates | Usage logs, provider billing |
| Allocated shared AI spend | Shared infrastructure split by the documented method | Allocation policy |
| Unattributed remainder | Customer's share of the reconciled suspense bucket, shown separately | Monthly reconciliation |
| Allocated non-AI COGS | Hosting, support, third-party tools tied to the customer | Ledger and allocation rules |
| Contribution margin % | Revenue less all allocated cost, divided by revenue | Calculated |
| Percentile and model view | Customer rank by margin and cost by model | Calculated |
| Reconciliation check | Total allocated cost minus invoice, expected to be explained | Provider invoice |
Keep the unattributed remainder in its own column. When it is folded into direct cost, nobody can tell whether a margin problem is a customer problem or an instrumentation problem.
Aleksandar’s post below connects usage-driven costs with customer-level margins. The worksheet that follows turns that perspective into explicit allocation and reconciliation fields.
Read the original LinkedIn post
Copy this layout, fill it for your top accounts first, and check that the reconciliation row ties. If you want a senior review of the allocation rules and the margin output, Fiscallion's financial modeling and board reporting service covers that work. Each Fiscallion client works directly with Aleksandar Stojanovic at the CFO layer, with senior-partner ownership on every engagement, not an account-manager or junior-team handoff.
FAQ
Can our existing bookkeeper or accountant handle AI cost allocation by customer, or do we need specialized support?
Your bookkeeper or accountant should keep the ledger accurate, and that work is a prerequisite. Customer-level AI allocation sits above the ledger. It needs usage telemetry, an apportionment policy, and reconciliation to provider invoices.
Your accountant can classify production inference as COGS and book the invoice correctly. Someone with FP&A judgment then has to define the buckets, choose the shared-cost method, and turn the result into margin by cohort. That can be a finance lead you hire or a fractional CFO working alongside your accountant. Fiscallion is not a bookkeeping firm, so it works with the books you already have.
What data do we need to allocate shared AI infrastructure costs across individual customers?
You need four inputs. First, tagged usage per call: tenant, user, feature, model, and environment. Second, provider invoices or billing exports so token-derived cost can be tied to billed dollars. Third, a list of shared infrastructure line items such as gateways, vector stores, and evaluation pipelines. Fourth, a usage driver for each, such as share of tokens, requests, or storage.
Add revenue and cohort data from billing so the allocated cost can become a margin. Remember that tags cannot be applied retroactively, so start collecting before you need the report.
How often should we reconcile unattributed AI usage to customer margins?
Monthly, at close. The unattributed bucket should be sized, explained, and cleared or carried forward with a stated reason each month, alongside the invoice reconciliation. Leaving it for a quarter lets context-dropping jobs run unnoticed.
Review shared-cost drivers and weights quarterly, or sooner after a major architecture change such as a new provider or gateway. This cadence is Fiscallion's recommendation, not an industry standard, so adjust it to your usage volatility.
What should a customer cost-allocation worksheet include for shared AI spend?
It should show revenue, direct AI usage cost, allocated shared AI spend, the unattributed remainder in its own column, allocated non-AI COGS, contribution margin percentage, and a percentile and model view. It also needs a reconciliation check that ties total allocated cost to the provider invoice.
Document the apportionment method and driver next to the shared-spend column. The layout above is a complete starting point.
Allocation is an operating cadence, not a project
A tagging sprint gives you one clean quarter. A written policy, a named owner, and a monthly reconciliation give you margin numbers you can defend in front of a board.
Start with the buckets and the apportionment rule, then run the first reconciliation against last month's invoice. The gaps you find will tell you where to instrument next.








