SOA-C02Chapter 75 of 104Objective 6.1

AWS Cost Categories and Cost Allocation

This chapter covers AWS Cost Categories and Cost Allocation, which are essential for organizing and tracking AWS spending across multiple accounts, departments, or projects. For the SOA-C02 exam, understanding cost allocation strategies is critical because questions on this topic appear frequently (approximately 5-10% of the exam) and test your ability to design tagging strategies, use Cost Categories, and analyze cost allocation reports. You will learn how to create cost categories, assign resources, and use them in AWS Cost Explorer and budgets to gain granular visibility into cloud costs.

25 min read
Intermediate
Updated May 31, 2026

Cost Categories: Like Departmental Budget Codes

Think of AWS Cost Categories like a company's internal budget codes used by different departments. In a large enterprise, every expense—whether it's office supplies, travel, or software subscriptions—gets tagged with a department code (e.g., 'ENG' for Engineering, 'MKT' for Marketing). The finance team then aggregates all expenses by code to see how much each department spent. AWS Cost Categories work the same way: you define categories (e.g., 'Department', 'Project', 'CostCenter') and assign values (e.g., 'Engineering', 'ProjectX', 'CC123') to your resources using tags or accounts. AWS then automatically groups your costs by these categories, allowing you to view spending by department, project, or any other dimension you define. Just as a company might have a default 'Unallocated' bucket for expenses without a code, AWS Cost Categories include an 'Uncategorized' group for resources that don't match any category rule. You can also create hierarchical rules that first check for a tag, then fall back to an account name, ensuring every cost is categorized. The key mechanism is that Cost Categories are defined at the payer account level and apply to all member accounts in an AWS Organization, giving you a consolidated view of costs across your entire organization.

How It Actually Works

What AWS Cost Categories Are and Why They Exist

AWS Cost Categories are a feature within AWS Cost Management that allows you to group your costs by custom dimensions—such as department, project, or team—without needing to rely solely on tags. They were introduced to address the challenge of organizing costs when resources are not consistently tagged or when you want to aggregate costs across multiple dimensions. For example, you might want to see costs by 'Business Unit' and then within that by 'Environment' (production vs. development). Cost Categories let you create hierarchical groupings that apply across your entire AWS Organization.

How Cost Categories Work Internally

Cost Categories are defined at the payer account (management account) level of an AWS Organization. You create a category with a name (e.g., 'Department') and then define rules that map resources to values within that category. Rules can be based on: - Tags: E.g., if a resource has the tag 'Department:Engineering', it is assigned the value 'Engineering'. - Account name: E.g., if the resource belongs to an account named 'Engineering-Prod', it is assigned the value 'Engineering'. - Cost Category itself: You can reference another Cost Category to create hierarchical rules (e.g., first check tag, then fall back to account name).

When you activate a Cost Category, AWS processes your billing data (typically within 24 hours) and applies the rules to all resources in all member accounts. The result is a new dimension in Cost Explorer that you can use to filter, group, and analyze costs. Cost Categories are also available in AWS Budgets and Cost Anomaly Detection.

Key Components, Values, Defaults, and Timers

- Category Name: A user-defined string (e.g., 'CostCenter'). Must be unique within the payer account. - Rules: Each category can have multiple rules. Rules are evaluated in order; the first matching rule assigns the value. If no rule matches, the resource is placed in 'Uncategorized'. - Rule Types: - Tag: Matches a specific tag key and value. Supports wildcards (e.g., 'Team:*' matches any value for tag 'Team'). - Account: Matches based on account ID or account name. You can specify multiple accounts. - Cost Category: References another Cost Category value. For example, you can say 'if the resource's Department category is Engineering, then assign it to a sub-category'. This enables hierarchy. - Default Value: You can set a default value for unmatched resources instead of 'Uncategorized'. - Inheritance: Cost Categories can inherit values from parent categories. For instance, if you have a 'Business Unit' category and a 'Team' category, you can define that Team values are inherited from Business Unit when no direct rule matches. - Processing Time: After creating or updating a Cost Category, it takes up to 24 hours for the data to appear in Cost Explorer. - Limits:

Maximum of 500 Cost Categories per payer account.

Each category can have up to 100 rules.

A rule can reference up to 20 values (e.g., 20 tag values or 20 account IDs).

Configuration and Verification Commands

Cost Categories are managed through the AWS Management Console, AWS CLI, or Cost Management APIs. There is no direct CLI command to create a Cost Category; you use the aws ce create-cost-category command (part of the Cost Explorer API). Example:

aws ce create-cost-category \
    --name "Department" \
    --rule-version "2017-01-01" \
    --rules '[
        {
            "Value": "Engineering",
            "Rule": {
                "Tags": {
                    "Key": "Department",
                    "Values": ["Engineering"],
                    "MatchOptions": ["EQUALS"]
                }
            }
        },
        {
            "Value": "Marketing",
            "Rule": {
                "Tags": {
                    "Key": "Department",
                    "Values": ["Marketing"],
                    "MatchOptions": ["EQUALS"]
                }
            }
        }
    ]' \
    --default-value "Unallocated"

To verify, use:

aws ce describe-cost-category --name "Department"

In the console, navigate to AWS Cost Management > Cost Categories to view and edit categories.

Interaction with Related Technologies

Cost Categories complement AWS Tags and AWS Organizations. While tags are a simple key-value pair attached to individual resources, Cost Categories allow you to aggregate costs across resources that may not have consistent tags. They also integrate with: - AWS Cost Explorer: Use Cost Categories as a grouping dimension. - AWS Budgets: Create budgets filtered by Cost Category values. - AWS Cost Anomaly Detection: Monitor anomalies by Cost Category. - AWS Cost and Usage Reports (CUR): Cost Categories appear as columns in CUR, enabling custom analysis.

Best Practices

Use Cost Categories to enforce a consistent cost allocation framework across accounts, especially when tags are not uniformly applied.

Combine tag-based rules with account-based fallbacks to ensure every resource is categorized.

Use hierarchical categories to create multi-level cost breakdowns (e.g., Business Unit > Department > Project).

Regularly review the 'Uncategorized' group and update rules to cover new resources.

Exam-Relevant Details

Cost Categories are a payer-level feature; they cannot be created in member accounts.

They do not retroactively apply to historical data; only data after activation is categorized.

Cost Categories can be used in budgets, but only after they are activated and data is available (up to 24 hours).

The 'Uncategorized' default group is automatically created; you can rename it by setting a default value.

Cost Categories support up to 500 categories per payer account.

Common Pitfalls

Assuming Cost Categories replace tags: They complement tags; tags are still needed for resource-level attribution.

Not using a default value: Resources that don't match any rule fall into 'Uncategorized', which can hide costs.

Overlapping rules: If rules conflict, the first match wins; order matters.

Ignoring the 24-hour processing delay: Changes to categories are not immediate; plan accordingly.

Walk-Through

1

Define Cost Category and Rules

Navigate to AWS Cost Management > Cost Categories in the payer account. Click 'Create Cost Category'. Enter a unique name (e.g., 'Department'). Then add rules: each rule specifies a value (e.g., 'Engineering') and a condition (e.g., tag 'Department' equals 'Engineering'). You can also use account-based rules (e.g., account name contains 'Eng'). Optionally set a default value for unmatched resources. Click 'Create Cost Category'. The category is now defined but not yet active in Cost Explorer.

2

Activate Cost Category

After creation, the Cost Category is in 'Draft' state. You must activate it by clicking 'Activate' in the console or using the AWS CLI with the `update-cost-category` command to set status to 'ACTIVE'. Once activated, AWS begins processing billing data. The activation triggers a 24-hour processing window before data appears in Cost Explorer. During this time, you can still edit the category, but changes reset the processing timer.

3

Wait for Data Processing

AWS processes the Cost Category rules against all billing data from the activation time onward. This includes data from all member accounts in the AWS Organization. The processing is done asynchronously and typically completes within 24 hours. You can check the status in the Cost Categories console: 'Active' means processing is complete. During processing, Cost Explorer may show incomplete data for the new category.

4

View Costs in Cost Explorer

After processing, open AWS Cost Explorer. In the 'Group by' dropdown, you will see your new Cost Category as a dimension (e.g., 'Department'). Select it to view costs grouped by the values you defined. You can also apply filters based on the category. The data will include both historical (from activation date) and ongoing costs. Note: Cost Categories do not retroactively apply to data before activation.

5

Use Cost Category in Budgets

Create a budget in AWS Budgets. In the 'Filters' section, select 'Cost Category' and choose your category (e.g., 'Department'). Then specify the value(s) to filter (e.g., 'Engineering'). The budget will track costs only for resources that match that category value. Budgets use the same 24-hour data lag as Cost Explorer. You can set alerts based on actual or forecasted costs for that category.

What This Looks Like on the Job

Enterprise Scenario 1: Multi-Department Cost Allocation

A large enterprise with 50 AWS accounts organized by department (Engineering, Marketing, Finance) wants to allocate costs to each department. They have inconsistent tagging: some teams use 'Dept' tag, others use 'Department', and some use no tags. To solve this, they create a Cost Category called 'Department' with rules that first check for the 'Dept' tag, then the 'Department' tag, and finally fall back to the account name (e.g., account 'eng-prod' maps to Engineering). They set a default value of 'Unallocated'. This ensures every resource is categorized. In production, they monitor the 'Unallocated' group weekly to identify resources that need rule updates. The Cost Category handles 500+ accounts and millions of resources; performance is not an issue because processing is backend. Common misconfiguration: not ordering rules correctly—if the account fallback rule is placed before tag rules, all resources would be categorized by account, defeating the purpose.

Enterprise Scenario 2: Hierarchical Cost Tracking for Projects

A company runs multiple projects under different business units. They want to see costs by Business Unit (BU) and then by Project within each BU. They create two Cost Categories: 'BusinessUnit' and 'Project'. For 'BusinessUnit', they use account-based rules (e.g., account names starting with 'BU1' map to 'BU1'). For 'Project', they use a combination: first check the tag 'Project', then if no tag, inherit from 'BusinessUnit' (using a Cost Category rule). This creates a hierarchy where every resource is first assigned a BU, and then a Project if tagged. In Cost Explorer, they can group by 'BusinessUnit' and then drill down by 'Project'. A common mistake is not enabling inheritance correctly—if the 'Project' category doesn't reference 'BusinessUnit', resources without a Project tag remain uncategorized.

Performance and Scale Considerations

Cost Categories are designed to handle large-scale organizations with thousands of accounts and millions of resources. The 24-hour processing delay is the main performance consideration. In scenarios where near-real-time cost tracking is needed, Cost Categories are not suitable; instead, use AWS Tags with real-time APIs. When misconfigured, such as having too many rules or overly complex hierarchies, the processing time may increase but rarely exceeds 24 hours. The most common issue is the 'Uncategorized' group growing large because rules are not comprehensive. To mitigate, regularly review and update rules, and set a default value to capture all resources.

How SOA-C02 Actually Tests This

What SOA-C02 Tests on Cost Categories and Cost Allocation

This topic falls under Domain 6: Cost Management, Objective 6.1: 'Implement and manage cost allocation strategies'. The exam tests your ability to design cost allocation using tags, Cost Categories, and account structures. Specific exam codes: SOA-C02 Domain 6, Task Statement 6.1. Expect 2-3 questions on Cost Categories.

Common Wrong Answers and Why Candidates Choose Them

1.

'Cost Categories can be created in member accounts.' Wrong. They are payer-level only. Candidates confuse them with tags, which can be applied at any account level.

2.

'Cost Categories retroactively apply to all historical data.' Wrong. They only apply from activation date. Candidates assume they work like tags that can be backdated.

3.

'Cost Categories replace the need for tags.' Wrong. Tags are still needed for resource-level attribution; Cost Categories aggregate across resources.

4.

'You can create unlimited Cost Categories.' Wrong. Limit is 500 per payer account. Candidates might think there's no limit because AWS often scales.

Specific Numbers, Values, and Terms That Appear on the Exam

500 maximum Cost Categories per payer account.

100 maximum rules per category.

20 maximum values per rule (e.g., 20 tag values or account IDs).

24 hours processing delay after creation or update.

'Uncategorized' default group name (can be renamed by setting a default value).

'Cost Category' appears as a dimension in Cost Explorer and as a filter in Budgets.

'Inheritance' feature for hierarchical categories.

Edge Cases and Exceptions

If a Cost Category rule references another Cost Category that hasn't been activated yet, the rule fails. The exam may test that categories must be active for cross-references.

Deleting a Cost Category removes it from Cost Explorer but does not affect historical data; the dimension disappears.

Cost Categories are not available in AWS Organizations that are not consolidated billing (i.e., must be in an organization).

Budgets using Cost Categories may show a delay of up to 24 hours; exam questions might ask why a budget hasn't triggered.

How to Eliminate Wrong Answers

If a question asks about grouping costs across accounts, and the answer mentions 'member account Cost Category', eliminate it.

If a question implies immediate cost categorization, look for '24-hour delay' in the correct answer.

If a question asks about replacing tags, remember Cost Categories complement tags, not replace them.

For limit questions, recall the 500/100/20 limits.

Key Takeaways

Cost Categories are defined only in the payer account of an AWS Organization.

Cost Categories take up to 24 hours to process after creation or update.

Maximum of 500 Cost Categories per payer account, 100 rules per category, 20 values per rule.

Cost Categories do not retroactively apply to historical data.

Use Cost Categories to complement tags, not replace them.

The default group for unmatched resources is 'Uncategorized' (can be renamed).

Cost Categories appear as a dimension in Cost Explorer and as a filter in Budgets.

Hierarchical categories can be created using inheritance rules that reference other Cost Categories.

Easy to Mix Up

These come up on the exam all the time. Here's how to tell them apart.

AWS Cost Categories

Defined at the payer account level, applies across all member accounts.

Group costs by custom dimensions (e.g., department, project) using rules based on tags, account, or other categories.

Supports hierarchical grouping and inheritance.

Has a 24-hour processing delay for data to appear.

Cannot be applied to individual resources; aggregates existing attributes.

AWS Resource Tags

Applied at the resource level by individual accounts or users.

Key-value pairs attached directly to resources (e.g., EC2, S3).

No built-in hierarchy; flat key-value structure.

Applied immediately; costs reflect tags in near real-time.

Can be used for resource-level cost allocation in Cost Explorer.

Watch Out for These

Mistake

Cost Categories can be created in any AWS account.

Correct

Cost Categories can only be created in the payer (management) account of an AWS Organization. Member accounts cannot create or manage Cost Categories.

Mistake

Cost Categories retroactively categorize historical data from before activation.

Correct

Cost Categories only categorize costs from the activation date onward. Historical data before activation is not re-categorized.

Mistake

Using Cost Categories eliminates the need for resource tags.

Correct

Cost Categories complement tags; they do not replace them. Tags are still required for resource-level cost attribution and for rule matching in Cost Categories.

Mistake

You can have an unlimited number of Cost Categories per account.

Correct

The limit is 500 Cost Categories per payer account. Each category can have up to 100 rules, and each rule can have up to 20 values.

Mistake

Cost Categories update in real-time.

Correct

Changes to Cost Categories take up to 24 hours to propagate and appear in Cost Explorer and Budgets.

Do You Actually Know This?

Reveal each answer, then mark whether you got it right. Score 60%+ to unlock the next chapter.

Frequently Asked Questions

How do I create a Cost Category in AWS?

To create a Cost Category, log in to the payer account of your AWS Organization. Go to AWS Cost Management > Cost Categories and click 'Create Cost Category'. Provide a name and define rules based on tags, account names, or other Cost Categories. After creation, activate the category. It will take up to 24 hours for data to appear in Cost Explorer.

Can I use Cost Categories for budgeting?

Yes, you can use Cost Categories in AWS Budgets. When creating a budget, you can filter by a Cost Category and select specific values. This allows you to track costs for a department, project, or any dimension you defined. Keep in mind that budget data also lags by up to 24 hours.

What happens if a resource does not match any rule in a Cost Category?

If a resource does not match any rule, it is placed in the 'Uncategorized' group by default. You can set a custom default value when creating the category to rename this group. It's a best practice to set a default value to ensure all costs are categorized.

Can I edit a Cost Category after activation?

Yes, you can edit a Cost Category after activation. However, any changes will trigger a new 24-hour processing cycle. During processing, the category may show incomplete data. You can also deactivate a category, which removes it from Cost Explorer but does not delete historical data.

Are Cost Categories available in all AWS regions?

Cost Categories are a global feature managed from the US East (N. Virginia) region by default. They apply to all regions because billing data is global. You do not need to create them per region.

How many Cost Categories can I have?

You can have up to 500 Cost Categories per payer account. Each category can have up to 100 rules, and each rule can reference up to 20 values (e.g., 20 tag values or account IDs).

Do Cost Categories work with AWS Organizations that have consolidated billing?

Yes, Cost Categories require an AWS Organization with consolidated billing enabled. They are a feature of the payer account and apply to all member accounts. If you are not in an organization, you cannot use Cost Categories.

Terms Worth Knowing

Ready to put this to the test?

You've just covered AWS Cost Categories and Cost Allocation — now see how well it sticks with free SOA-C02 practice questions. Full explanations included, no account needed.

Done with this chapter?