Live sessionSavings Plan or Reserved Instance? How to choose the right AWS commitment24 September 2026 · 11:00–12:00 ISTDetailsRegister
PlatformHow it worksFinOps LeadershipPricingBlogEventsInstancesCompanyContact Book a demo Sign in
Guide

AWS cost allocation: the complete guide

How to get from a single AWS invoice to an owner for every dollar on it. This guide joins everything we have written on allocation into one sequence: the four levels of the allocation model, tags and how to enforce them, Cost Categories and shared costs, containers, commitment discounts, billing views, and the step from showback to chargeback. It is the order we follow with every customer.

Updated 24 September 2026 · 12 min read · by the TruCost.Cloud FinOps team

Why allocate, and what "done" looks like

Cost allocation is the process of assigning every line of the AWS bill to the team, application or business unit that caused it. Showback reports that cost to the owner; chargeback books it in the general ledger against the owner's budget. Both need the same thing underneath: an allocation that reaches 100 percent.

The bar is 100 percent because an allocation that stops at 70 or 80 percent leaves the largest and least understood part of the bill, the untagged, shared and discount-adjusted spend, in a bucket nobody owns. Native AWS tooling gets you a long way and then stalls at exactly that bucket: it allocates cost to the resources that carry tags, and a meaningful part of every bill is untagged, shared (support, networking, data transfer) or a commitment discount applied at the account level. The work in this guide is mostly about that last 20 to 40 percent.

What you get when it is done: accountability (a name on every number), accurate finance (amortized commitments and shared costs land where they belong), targeted optimization (waste has an owner who can remove it), and unit economics (cost per customer or per transaction, which is the number leadership actually wants).

The allocation model: four levels

Allocation on AWS works at four levels. Do them in order; each one cleans up what the previous one could not.

Four ascending steps: by account, by account groups, by tagged resources, by rules for shared cost, reaching 100 percentThe four levels of AWS cost allocation, and how far each one typically gets you1 By accountOne account per team, product orenvironment; the invoice already says whoabout 60%2 By account groupsCost Categories and organizational unitsroll accounts up to business unitsabout 75%3 By tagged resourcesCost allocation tags split sharedaccounts into their workloadsabout 90%4 By rules for shared costSplit charges, fallback hierarchy,amortized commitments100%Do them in order. Each level allocates what the previous one could not, and the last one is the one native tooling stops before.
The percentages are what we typically see at each level on a mid-sized AWS estate; yours will differ, the order will not.
  1. By account. AWS accounts are the unit of both security and billing. One account per team, environment or product means the invoice already says who spent what. Under an AWS Organization you get one consolidated bill with a per-account breakdown, and Cost Explorer's saved views make it a report.
  2. By groups of accounts. Cost Categories group accounts into business units, cost centres or regions; invoice configuration can even issue a separate invoice per group. This is where organizational units and account vending pay off: a new account lands in the right group on the day it is created.
  3. By tagged resources inside accounts. Cost allocation tags (Owner, Application, Environment) split a shared account into its workloads. Only tags you activate in the Billing console appear as columns in Cost Explorer and the Cost and Usage Report (cost allocation tags).
  4. By rules for what is shared. Support fees, networking, data transfer, container clusters and commitment discounts do not belong to one tag. They are allocated by rule: proportionally, by fixed split, evenly, or by the usage that consumed them.

The practical allocation guide walks through each level with the AWS features that implement it.

Cost allocation tags and a tagging standard

A tag is a key and a value on a resource. A tagging standard is the short document that says which keys are mandatory, which values are allowed, and what each one means. Without it you get Prod, Production and prod on three resources of the same application, and none of them roll up.

Keep the standard small. Four to six mandatory keys is what compliance survives; more than that and coverage collapses within a quarter. The set that works for most organizations:

KeyAllowed valuesPurpose
OwnerA team name from a fixed list (or an email alias)Who answers for the cost and receives the alerts
ApplicationApplication or service name from your catalogueUnit economics and chargeback line
Environmentproduction, staging, developmentNon-production is where schedules and cleanup live
CostCenterFinance's own codesChargeback into the ledger without translation
BusinessUnit (optional)From a fixed listOnly if accounts do not already imply it

Write the standard as a data dictionary: key, allowed values, description, which resource types must carry it, mandatory or optional. Activate the keys as cost allocation tags in the Billing console; activation takes up to 24 hours to appear in billing data. Since March 2024 you can also backfill activated tags for up to 12 months, so a tag that was on the resource but never activated can be applied to history rather than only from today.

Enforcing tags

Tag compliance is not an audit problem, it is a creation-time problem. Enforce at the moment a resource is created and the audit becomes a formality.

  • Tag policies (AWS Organizations) define the allowed keys and values and report non-compliant resources across the organization; with enforcement enabled they block non-compliant tag operations on supported resource types.
  • Service control policies deny creation of resources without the mandatory tags. Scope the resource ARN to the instance itself so the secondary resources RunInstances creates (volumes, network interfaces) do not cause spurious denies:
{
  "Sid": "DenyRunInstancesWithoutEnvironment",
  "Effect": "Deny",
  "Action": "ec2:RunInstances",
  "Resource": "arn:aws:ec2:*:*:instance/*",
  "Condition": {
    "StringNotEquals": { "aws:RequestTag/Environment": ["production", "staging", "development"] }
  }
}
  • Infrastructure as code validation: a pipeline check that refuses a Terraform plan or CloudFormation template whose resources lack the mandatory tags. This catches more than SCPs because it explains the failure to the engineer before anything is created.
  • AWS Config rules (required-tags) with automatic remediation for what slips through, and a named business owner and technical owner for every account so that "nobody knows who owns this" stops being an acceptable answer.

The governance article covers the ownership model (an owner per account, workload-level ownership, account vending through organizational units) that makes enforcement stick.

Finding and fixing what is already untagged

Enforcement stops new untagged spend. The existing estate needs a sweep:

  • Tag Editor (Resource Groups) to list resources by region and type with a missing key and bulk-apply tags.
  • Cost Explorer filtered to "no tag key" for your mandatory keys, sorted by cost, so you fix the expensive untagged resources first. Ten resources are usually most of the untagged money.
  • A CUR compliance query in Athena that reports, per account and service, the share of resource-level cost that carries each mandatory tag. Track it monthly; it is the number the tagging programme is judged by.
  • A scheduled scan (Lambda or Config) that lists new non-compliant resources weekly and notifies the account owner, with a default tag applied where the owner can be inferred from the account.

Cadence: monthly audits for small estates, weekly automated checks for large ones. The untagged resources article covers each tool. And accept the honest position of the FinOps best-practices article: 100 percent tagging is not achievable and not required. What has to reach 100 percent is the allocation, which is why the next sections exist.

Cost Categories: grouping by business logic

Cost Categories are free rules, created in the management account, that map accounts, tags, services, regions, charge types and even other categories to the values your business uses: business unit, product line, region group. Because they can use accounts and services as inputs, they allocate spend that has no tag at all. They appear as a dimension in Cost Explorer, Budgets, the Cost and Usage Report and Cost Anomaly Detection.

  • Rules use ANY (OR) and ALL (AND) across dimensions, and a rule can reference an existing category, so you can build a hierarchy: business unit → department → application.
  • Quotas (Billing quotas): 50 categories per management account, 100 rules per category in the console (500 via the API), 10 split charge rules per category. Changes take up to 24 hours to process; deleting a category is irreversible, though past months keep the grouping that was active then.
  • Name categories with a prefix (FinOps-BU), document the rules (export the JSON), review them quarterly, and track the "Uncategorized" value monthly: it is the unallocated bucket in disguise.

The Cost Categories guide walks through creating one in the console, the operators, nesting and clean-up.

Shared costs and the fallback rules

Some costs are shared by design: AWS Support, Transit Gateway and NAT, data transfer, the platform team's shared clusters, security tooling. Cost Categories handle them with split charges: take a source value (say Shared platform or Uncategorized) and distribute it across target values proportionally to their spend, by fixed percentages, or evenly. Proportional is the default that survives arguments: if EMEA is 40 percent of spend it carries 40 percent of the support fee.

A stacked bar showing tagged, account, service and rule-based allocation adding up to 100 percent, with the four fallback rules listedHow an untagged bill still reaches 100 percent: the fallback hierarchyTagged resources 62%Account or OU 20%Service 10%Sharing rule 8%1. The resource carries the mandatory tags: allocate by tag.2. No tag: allocate to the account or organizational unit the resource sits in.3. Shared account: allocate by the service, if one team owns that service.4. Truly shared (support, networking, commitments): a published sharing rule, proportional by default.Publish the rules beside the report. An allocation people can read the rules of is one they accept; a black box is fought every month.
What is left after tags is allocated by falling back to coarser levels, until the bar reaches 100 percent.

For whatever is still unallocated after tags and categories, use a written fallback hierarchy rather than a bucket: allocate by the account or organizational unit the resource sits in, then by the service it belongs to, then by a documented sharing rule. Publish the rules with the report. An allocation people can read the rules of is one they will accept; one that appears from a black box is one they will fight every month. Unused commitment is its own shared line, not a discount to hide.

Containers: EKS and ECS split cost allocation

A Kubernetes cluster is one EC2 bill shared by every workload on it, so account and tag allocation stop at the node. Split cost allocation data divides each node's cost across the pods that ran on it, by their CPU and memory requests (or by actual utilization if you connect CloudWatch Container Insights or Amazon Managed Service for Prometheus), and writes the result into the Cost and Usage Report with the cluster, namespace and workload as system tags. Since 2025 you can also activate Kubernetes labels as cost allocation tags, so app.kubernetes.io/name or team on a pod becomes a column in the bill, matching the tag on the RDS instance and S3 bucket the same application uses.

Enable it in Cost Management preferences (management account), activate the label keys as cost allocation tags, and make sure your Cost and Usage Report or Data Export includes split cost allocation data and resource IDs. There is no charge beyond the extra rows in the report (and the metrics sources, if you use them). Query the split columns, not the unblended cost, or you will double count. The EKS allocation deep dive covers the setup, the tag keys and the Athena query.

Commitments: where the discount lands

Savings Plans and reserved instances create two allocation problems. An upfront payment sits in the month it was paid, so use net amortized cost (Cost Explorer, Budgets, the CUR) to spread it across the term. And the discount applies wherever AWS finds the highest saving across the organization, so the team that bought the commitment is not necessarily the team that benefited.

Two ways to handle the second problem:

  • Reserved Instance and Savings Plans group sharing (late 2025): define groups with Cost Categories and choose prioritized sharing (the buying group first, leftovers to the rest of the organization) or restricted sharing (benefits stay inside the group). Each account belongs to one group; existing commitments are unchanged. This is the native answer and the right default for most organizations.
  • Allocate the amortized commitment cost to the usage that consumed it, from the Cost and Usage Report. This is what allocation tools do and it works without changing how AWS applies discounts. AWS Billing Conductor is the option when you need custom internal rates rather than actual cost; it is a paid service.

The group sharing deep dive covers the two modes and the setup, and the commitments guide covers the purchases themselves.

Multi-account and multi-organization visibility

Billing views let you give a team a filtered view of the bill (their accounts, their tags) without management-account access, and since 2025 AWS Budgets can be created on a billing view, so a team owns its own budget under least privilege. Multi-source custom billing views combine up to 20 views, shared across organizations with AWS Resource Access Manager, into one view for Cost Explorer and Budgets. That is how an acquisition or a subsidiary with its own AWS Organization gets reported alongside the parent without merging organizations. The console is free; Cost Explorer API calls on a multi-source view cost one cent per source per request. Deep dives: multi-source billing views and Budgets on billing views.

From showback to chargeback

Run showback for at least two cycles before chargeback. The report has to be trusted before money moves on it.

  1. Monthly allocation report by business unit and application, from Data Exports or the CUR through Athena, with the rules published beside it. Cost Explorer's month-over-month comparison explains the deltas.
  2. Budgets on allocation dimensions: a budget per business unit on its Cost Category value or billing view, with alerts to the owner.
  3. Anomaly monitors on the same dimensions: one managed monitor on your ownership tag or category, so a spike is routed to the owner the allocation already knows. See the anomaly detection guide.
  4. Reconcile monthly. The sum of the allocation equals the invoice, to the cent, or the report is wrong. Track unallocated and uncategorized spend as a first-class number and drive it down.
  5. Then chargeback, using the finance cost centre codes carried in the tags and categories, so the journal needs no translation table.

Unit economics: the point of all this

Allocated cost joined to a business metric is the number that changes decisions: $0.12 to serve a transaction, $4.30 per active customer per month, cost per order falling as volume grows or not. It needs an allocation finance and engineering both trust, plus a feed of the metric (orders, active users, API calls) from your own systems. Once it exists, the conversation moves from "AWS was $400,000 last month" to "cost per order rose 8 percent while orders were flat", which is a question engineering can actually answer. The FinOps best-practices article has worked examples.

How TruCost.Cloud allocates 100 percent of the bill

TruCost.Cloud works from the Cost and Usage Report and applies ownership rules inside the platform: by account, by naming convention, by usage pattern and by AWS tag where one exists, so a resource with a missing or wrong tag still lands with its owner. Shared costs and amortized commitment discounts are distributed by the rules above and shown as their own lines, the allocation reconciles to the invoice, and every owner sees their cost, their anomalies and their savings on the same basis. Unit economics dashboards sit on top of the same allocation. See 100% allocation and ownership tagging on the platform page.

Common questions

What is the difference between showback and chargeback?

Showback reports each team's cost to it without moving money. Chargeback books the cost in the general ledger against the team's budget. Both need an allocation that reaches 100 percent of the bill; run showback for a couple of cycles before chargeback so the numbers are trusted first.

What are AWS cost allocation tags?

Tags you activate in the Billing console so their values appear as columns in Cost Explorer and the Cost and Usage Report. Only activated tags appear in billing data; activation takes up to 24 hours, and since March 2024 you can backfill activated tags for up to 12 months of history.

How many mandatory tags should we have?

Four to six. Owner, Application, Environment and CostCenter cover most needs; add BusinessUnit only if accounts do not already imply it. Larger mandatory sets look thorough and fail in practice.

How do I allocate untagged AWS costs?

By falling back to coarser levels: the account or organizational unit the resource sits in, the service it belongs to, or a documented sharing rule. Cost Categories can use accounts and services as inputs, so they allocate spend that has no tag. Publish the fallback rules with the report.

What are AWS Cost Categories and are they free?

Free rules in the management account that map accounts, tags, services, regions and other categories to business values such as business unit or product. Quotas are 50 categories per management account, 100 rules per category in the console (500 via the API) and 10 split charge rules per category.

How are shared costs like AWS Support allocated?

With split charge rules in Cost Categories: distribute a source value across targets proportionally to their spend, by fixed percentages or evenly. Proportional is the usual default.

How do I allocate Kubernetes costs on EKS?

Enable split cost allocation data, which divides each node's cost across the pods that ran on it and writes cluster, namespace and workload into the Cost and Usage Report. Activate Kubernetes labels as cost allocation tags so pod costs line up with the tags on the application's other resources.

How are Savings Plans and reserved instances allocated?

Amortized across the term (net amortized cost), then either kept inside a Cost Category group with RI and Savings Plans group sharing, or distributed to the workloads that consumed the discounted usage from the Cost and Usage Report. Unused commitment is a shared cost with its own line.

Deep dives

The articles this guide draws on, each on one narrower question.

Untangle Your AWS Bill: A Practical Guide to Cost Allocation

Untangle Your AWS Bill: A Practical Guide to Cost Allocation

A practical guide to allocating 100% of an AWS bill: cost accountability by account, account group, resource and shared services, tagging data dictionaries, SCP…

Master AWS Cost Categories (Part 1): The Ultimate Guide to Smart Cloud Cost Grouping

Master AWS Cost Categories (Part 1): The Ultimate Guide to Smart Cloud Cost Grouping

Learn how to organize and allocate AWS costs using AWS Cost Categories. Discover step-by-step methods to group by region, use ANY/ALL operators, split shared co…

5 Powerful Ways to Manage Resources with AWS Resource Tags
Cost Monitoring

5 Powerful Ways to Manage Resources with AWS Resource Tags

A Comprehensive Guide to AWS Resource Tags

Maximize Kubernetes Cost Visibility: Track and Split Application Costs on Amazon EKS with Labels

Maximize Kubernetes Cost Visibility: Track and Split Application Costs on Amazon EKS with Labels

As cloud-native environments become increasingly complex, understanding and allocating Kubernetes costs accurately is critical for FinOps and engineering teams.…

Mastering AWS Commitment Control: Introducing Reserved Instances & Savings Plans Group Sharing

Mastering AWS Commitment Control: Introducing Reserved Instances & Savings Plans Group Sharing

Learn how new AWS Reserved Instances & Savings Plans Group Sharing brings precise cost control, accountability, compliance, and accurate ROI tracking for enterp…

Master Unified Cost Visibility with AWS Multi-Source Custom Billing Views

Master Unified Cost Visibility with AWS Multi-Source Custom Billing Views

Introduction: The Challenge of Multi-Org AWS Cost Management In modern enterprises, it’s common to operate multiple AWS organizations — whether due to subsidiar…

AWS Budgets Gets Billing View Support for Easier Cross-Account Cost Monitoring

AWS Budgets Gets Billing View Support for Easier Cross-Account Cost Monitoring

Discover 5 benefits of AWS Budgets with Billing View for cross-account cost monitoring. Boost visibility, save time, and improve security with TruCost.Cloud .

AWS FinOps Governance: 6 Ways to Stop Cloud Waste

AWS FinOps Governance: 6 Ways to Stop Cloud Waste

Stop AWS cloud waste with 6 proven AWS FinOps governance practices — fix ownership, tagging, and cost accountability before spend spirals out of control.

6 AWS FinOps Best Practices to Maximize Cloud ROI

6 AWS FinOps Best Practices to Maximize Cloud ROI

Discover 6 proven AWS FinOps best practices to improve cloud cost allocation, governance, and unit economics — and maximize your AWS cloud ROI with actionable s…

See your own bill allocated to 100%

Thirty minutes with a FinOps engineer, on your AWS data if you like. No slideware.

Book a demo