Runcost

Cloud cost allocation: methods, tags, shared costs and examples

Cloud cost allocation is the process of assigning every line of a cloud bill to the department, product, customer or service that caused it, so the invoice can be reported, budgeted and, if the organization chooses, charged back. It relies on three methods applied in order: direct allocation by account, project or tag; proportional allocation of shared costs by a measured driver; and fixed allocation by an agreed split. Whatever is left is reported as unallocated with its cause. A good allocation reconciles to the invoice and lets each owner trace their number.

Why allocation comes before everything else

Forecasts, budgets, chargeback and unit costs all inherit the allocation. A forecast per department is only as good as the split of last year’s bill into departments. A unit cost for a product is the product’s allocated cost divided by its volume. If the allocation is wrong or incomplete, every number downstream is wrong in the same way, which is why FinOps practitioners consistently rank allocation among the capabilities they prioritize most in the FinOps Foundation’s State of FinOps surveys, ahead of further optimization.

The cost of getting it wrong is visible at budget time. Flexera’s 2025 State of the Cloud report found organizations exceeding their public cloud budgets by 17% on average. Part of that gap is spend nobody forecast because nobody owned it: the unallocated remainder, the shared platform that grew, the commitment that went unused. Allocation is how those costs acquire an owner who can act.

The three methods, in order

The methods form a hierarchy. A cost is allocated by the first method that applies, and moves down the list only when the one above cannot place it.

  1. Direct allocation. The cost has one identifiable owner: it sits in an account, subscription, project or resource group mapped to that owner, or it carries a tag or label that names the owner. A virtual machine in the payments team’s account is the payments team’s cost. Direct allocation should cover the majority of the bill; the share it covers is the best single measure of how well the account structure and tagging are working.
  2. Proportional allocation. The cost is shared and there is a measured driver that says how much each tenant used: requested CPU and memory on a Kubernetes cluster, bytes scanned on a data warehouse, requests through an API gateway, or each consumer’s own direct spend for a support plan priced as a percentage of the bill. The driver must be measured for the same period as the cost, and it must be one the tenants recognize as fair.
  3. Fixed allocation. The cost is shared and there is no sensible driver, or the amount is too small to justify one: a security scanner licensed for the whole estate, a shared DNS zone, an organization-wide monitoring plan. The cost is split by percentages the recipients agreed to in advance, reviewed on a schedule, and never adjusted mid-period.

What none of the three can place is reported as unallocated, by cause: missing or invalid tag, unmapped container, or a provider-level charge such as a credit or a tax line. Reporting it honestly is what keeps the rest of the model credible; spreading it evenly across everyone is the fastest way to lose that credibility.

Cost allocation tags: what works on each provider

The direct-allocation mechanisms each provider offers, the step that is most often missed, and the fallback when tags are absent.
ProviderMechanismThe step most often missedFallback when tags are missing
AWSCost allocation tags on resources; accounts within an organization.User-defined tags must be activated in the Billing console before they appear in the Cost and Usage Report, and they apply from activation onward, not retroactively.Map each account to an owner; use the account as the container.
AzureTags on resources and resource groups; subscriptions and management groups; cost allocation rules in Cost Management.Not every resource type emits tags into cost data, and tags on a resource group do not reach its resources unless tag inheritance is enabled.Map subscriptions and resource groups to owners; apply Cost Management allocation rules for shared subscriptions.
Google CloudLabels on resources; projects, folders and billing accounts; billing export to BigQuery.Labels only reach the export for resources that support them, and the export has to be enabled per billing account before history accrues.Map projects to owners; a project per team or product is the cleanest container.

Across all three, the container is more reliable than the tag. An account, subscription or project has exactly one owner by construction and cannot be forgotten at deploy time. Tags carry the finer dimensions, such as product or environment, inside a container that already has an owner. Organizations that lean on containers for the first dimension and tags for the second reach a high allocated share far faster than those that try to tag everything.

Worked example: one slice of a month across three clouds

The figures below are illustrative. They show how a $70,500 slice of a monthly bill lands on owners when the three methods are applied in order, and what the unallocated remainder looks like when it is reported rather than hidden.

Illustrative amounts. The total reconciles: $66,200 allocated, $4,300 unallocated with a named cause.
LineProviderMethodOwnerAmount
Compute in the payments accountAWSDirect, by accountPayments$32,000
Managed SQL tagged cost-center 4410AzureDirect, by tagCustomer portal$9,500
Shared Kubernetes clusterGoogle CloudProportional, by requested CPU and memoryPayments 40%, Data 35%, Portal 25%$18,000
Enterprise support planAWSProportional, by direct spendAll consumers, pro rata$3,000
Security scanning subscriptionAzureFixed, agreed three-way splitPayments, Data, Portal$2,500
Unused savings plan commitmentAWSCentralPlatform budget (reported to procurement)$1,200
Untagged object storage bucketsAWSUnallocated, missing tagOwner to be found; 14 buckets$4,300

Three things to notice. The largest line is placed by the account, not by a tag. The shared cluster is split by a driver the three tenants can see in their own dashboards. And the unallocated line names its cause and a count of resources to fix, which turns it from an embarrassment into a task.

Shared cost allocation: choosing the driver

A driver is fair when the tenants can influence it and can see it. These are the defaults that hold up in practice.

  • Kubernetes and container platforms: requested CPU and memory by namespace, with idle capacity carried by the platform budget so that tenants are charged for what they asked for, not for the platform’s headroom.
  • Shared data platforms: bytes scanned, slot or credit consumption, or storage by dataset owner, whichever the platform reports per tenant.
  • Networking and egress: bytes by owner where the provider reports them; an agreed fixed split otherwise.
  • Observability, logging and security tooling: ingested volume where the tool reports it; a fixed split where it does not.
  • Support plans and enterprise agreements: each consumer’s direct spend, because that is how the provider prices them.
  • Central FinOps, architecture and shared tooling: not allocated; reported as a budget of its own and reviewed on its own merits.

Commitments, credits and refunds

Reserved capacity, savings plans and committed-use discounts are bought centrally and applied by the provider to whatever usage matches. Left alone, the discount lands on whichever account happened to match first, and nobody sees the saving. The allocation that holds up is to charge covered usage at the discounted rate to the consumer whose usage was covered, and to carry unused commitment centrally as the cost of the decision to commit, reported to procurement as its own line.

Credits, refunds and one-off adjustments arrive at the billing-account level. They are allocated proportionally to the consumers whose spend generated them where the provider says which usage they relate to, and otherwise held centrally and reported, never silently netted against the largest consumer.

Allocating on more than one dimension

Finance wants cost by cost center. Product wants cost by product. Sales wants cost by customer. These are different dimensions of the same spend, not competing allocations, and the model should carry all of them on every line. A line in the payments account, tagged product “checkout”, serving customer “Acme” through a shared cluster, has a cost center, a product and a customer at once.

The rule that prevents double counting is simple: each dimension allocates 100% of the bill independently. The cost-center view and the product view each sum to the invoice. What is not allowed is allocating a line to a cost center and then allocating part of it again to a product as if it were extra spend. Tooling that treats dimensions as columns on one ledger gets this right by construction; a spreadsheet per dimension does not.

Measuring allocation quality

  • Allocated share: the percentage of the invoice placed by a direct, proportional or fixed rule, tracked every period. The template on this site suggests starting with a target of no more than five percent unallocated.
  • Direct share: the percentage placed by direct allocation alone. A rising direct share means the account structure and tagging are improving; a rising proportional share means more of the estate is becoming shared.
  • Tag and container coverage: the share of resources with a valid owner, by provider.
  • Time to allocate: how many working days after the invoice the statements are out. Five is a good target.
  • Disputes per statement, and how many were resolved from the drill-down without a rule change.

Common mistakes

  • Tagging first, mapping later. Containers give the first dimension for free; tags are for the second.
  • Spreading the unallocated remainder. Every team’s number becomes slightly wrong and nobody can say by how much.
  • Choosing a precise driver over a fair one. A driver the tenants cannot see or influence produces disputes every month.
  • Allocating commitments to whoever matched. The saving becomes invisible and the commitment decision is never evaluated.
  • Changing rules mid-period. Rule changes apply from the next period, with both treatments shown once.
  • Building it in a spreadsheet. It reconciles once, by hand, and then never again.

How Runcost does allocation

Runcost applies the three methods as ordered rules over one ledger built from the AWS, Azure and Google Cloud billing exports. Accounts, subscriptions, projects and tags map to cost centers, products and customers, shared services carry their drivers, and commitments are allocated to covered usage. Every dimension sums to the invoice, the unallocated remainder is reported by cause with the resources to fix, and any statement line drills to the resources and the rule that produced it.

Questions

What is cloud cost allocation?

Cloud cost allocation is the assignment of every line of a cloud bill to the department, product, customer or service that caused it, using direct ownership first, a measured usage driver for shared costs second, and an agreed fixed split third. Whatever cannot be placed is reported as unallocated with its cause, and the total reconciles to the invoice.

What are the three main types of cost allocation?

Direct allocation places a cost with the one owner that used it, identified by account, subscription, project or tag. Proportional allocation splits a shared cost by a measured driver such as CPU requests or bytes. Fixed allocation splits a shared cost by percentages agreed in advance. They apply in that order.

How do AWS cost allocation tags work?

Tags applied to AWS resources become cost allocation tags once activated in the Billing and Cost Management console. From activation onward they appear as columns in the Cost and Usage Report and can group costs by owner, product or environment. They are not retroactive, so accounts mapped to owners remain the reliable first dimension.

How should shared cloud costs be allocated?

By a measured driver the tenants can see and influence, such as requested CPU and memory for a cluster or bytes scanned for a data platform, with idle capacity carried by the platform; by an agreed fixed split where no driver exists; and never by spreading the unallocated remainder.

What is a good cloud cost allocation percentage?

High enough that the unallocated remainder is small, stable and explained by cause. A starting target of no more than five percent unallocated is common, with the direct-allocation share tracked separately because it shows whether the account structure and tagging are improving.

Sources

  1. FinOps Foundation, FinOps Framework: Allocation capability
  2. FinOps Foundation, State of FinOps
  3. Flexera, 2025 State of the Cloud report (press release)
  4. AWS, Using cost allocation tags
  5. Microsoft Learn, Allocate costs in Cost Management
  6. Google Cloud, Creating and managing labels

About the author

Faisal Saleem

Founder of Runcost, a multi-cloud cost management platform built so that finance can allocate, forecast and explain the cloud bill like any other financial document. Writes the guides here from the allocation and chargeback work behind the product.

Read next

Want this done on your own bill?

Thirty minutes on how your organization allocates, forecasts and explains cloud spend today, and whether Runcost would change that.

Book a call to discuss