Cost allocation is the process of attaching cloud usage to a business owner so engineering and finance can argue from the same export. The first key is the billing boundary: AWS account, Azure subscription, Google Cloud project plus billing account, or Alibaba Cloud Resource Directory member. Tags and labels are the second key, and they only work after the provider's activation or reporting rules are met. AWS says user-defined cost allocation tags can take up to 24 hours to appear and must be activated on the management account. Documentation as of 2026-08-30.

FinOps (see What is FinOps?) is the operating practice. Allocation is the data shape that practice needs.

Boundaries before tags

AWS Organizations consolidated billing rolls member accounts to the management (payer) account. The account ID is already an allocation key. Tags refine spend inside an account. AWS documents AWS-generated tags (aws: prefix, including createdBy when enabled) and user-defined tags. Both types must be activated separately. Only the management account in an organization, or a standalone account, gets the cost allocation tags manager in the Billing console. The monthly cost allocation report still lists untagged resources so you can see coverage.

Azure Cost Management allocates at billing account, billing profile, invoice section, and subscription, then by resource tags where those tags are supported. Microsoft’s tag-assignment documentation is specific about which billing objects accept tags. A tag on a resource group is not a universal inherit-to-every-meter rule. Shared resources (a hub firewall, a logging workspace) need an agreed split method. That split is an engineering recommendation, not an Azure feature.

Google Cloud attaches every project to one billing account. Labels on resources appear in billing export and reports when you group by label. Google Cloud tags (the IAM and organization-policy object) are not labels. If finance asks for “tags” and engineering sets IAM tags, the billing report stays empty on that key.

Alibaba Cloud Resource Directory documents centralized bills across members. Start allocation at the member account. Folder structure is for governance; it may not be a billing dimension unless you export and join it yourself.

FOCUS is an open schema for normalizing exported usage across vendors. It does not change the native invoice. Use it when you have two or more provider files and need shared column names.

Measure tagged versus untagged

AWS, management account, after CostCenter is activated:

aws ce get-cost-and-usage \
  --time-period Start=2026-08-01,End=2026-08-30 \
  --granularity MONTHLY \
  --metrics UnblendedCost \
  --group-by Type=TAG,Key=CostCenter

Each group key looks like CostCenter$abc or CostCenter$. Sum the amounts. The $ with nothing after it is untagged. If every group is empty, the tag key is not activated or no resource in the period carried it. UnblendedCost ignores some reservation benefits you might see in amortized views. Pick one metric and keep it for the conversation.

List which keys Billing knows:

aws ce get-tags --time-period Start=2026-08-01,End=2026-08-30

A key you use in EC2 that is missing here is not an allocation tag yet.

Azure portal: Cost Management > Cost analysis > Group by: Tag. If the tag name is absent from the dimension list, it is not on the resources that produced cost, or it is not enabled for that billing scope.

Google Cloud: Billing > Reports > Group by label key. CLI for labels on a project (not the bill, the inventory):

gcloud projects describe PROJECT_ID --format="yaml(labels)"

Empty labels means the project itself is unlabeled. Many SKUs inherit project labels; many do not. Confirm in the billing export rows.

Risks and limitations

Shared platforms (Kubernetes nodes, NAT, log sinks, GPU pools) will not allocate cleanly with one tag on a VM. You need a secondary rule: namespace, team annotation, or a manual split. Kubernetes has its own allocation problem.

Backfill exists on AWS for some tag situations and is time-bounded. Do not assume last month’s invoice will rewrite itself when you tag today.

Commitment discounts and credits land at the payer. Chargeback that uses only unblended instance hours will not match finance’s booked number. Say which number you are using.

Partial tag coverage is a program you can run. Claiming complete coverage without a create-time deny is usually false. Untagged spend is a queue, not a rounding error.

When a number jumps and allocation is the first cut, use the unexpected cloud cost spike runbook. The design page for keys and ownership is Cloud tagging and cost allocation.

Official sources