> ## Documentation Index
>
> Fetch the complete documentation index at: https://lithi.ai/llms.txt
>
> Use this file to discover all available pages before exploring further.

---
title: Allocate Compute costs
description: >-
  Bind bounded allocation dimensions to your quote, your accepted usage and your
  invoice, version the mapping safely, and keep charges and payment state
  untouched.
route: /docs/compute/billing/cost-allocation
page_id: docs-compute-billing-cost-allocation
page_type: howTo
content_layer: guided documentation
surface_profile: guided_docs
audience: Compute finance owners allocating spend across teams and projects
voice: D
reader_question: How do I split Compute charges across my own cost centers?
primary_action: Plan your allocation mapping
source_locale: en-US
source_status: APPROVED
source_version: docs-compute-billing-cost-allocation-en-us-2026-09-05-v1
last_updated: '2026-09-05'
robots: index
claim_registry_pinned: true
claim_registry_resync: "npm run governed:tsx -- scripts/build-compute-public-claim-registry.ts --write"
---

## Before you start

Cost allocation attaches your own labels to Compute spend. A cost center, a project, an entity or a budget code are the usual ones.

You need a member role that can read and change finance records. A work key cannot read or change an allocation.

Decide the dimensions first, with your finance owner. A dimension you invent later cannot be applied backwards to work that already ran.

## Keep the dimension set bounded

Each dimension holds a fixed set of allowed values, and a submission must use one of them. That is what makes a statement add up cleanly.

An unbounded free-text label is not an allocation dimension. It cannot be totalled, and it cannot be reconciled against your own ledger.

Keep the set small enough that a person can choose correctly at submission time. A dimension nobody can fill in accurately produces a tidy report of the wrong thing.

## Bind a dimension to the work

The same dimension value travels through three records, so the three agree by construction:

1. **The quote** carries the values chosen for that submission.
2. **The accepted usage** carries them forward from the job that ran.
3. **The invoice and statement** group their lines by them.

Where a value is missing at quote time, it is missing everywhere after. Fill it in before you approve the work rather than repairing it later.

## Version a mapping instead of editing one

A mapping between your dimensions and your finance system is versioned. Changing it creates a new version and leaves the old one readable.

Apply a change the same way every finance object is changed: inspect the current mapping, plan the change, get approval where your organization requires it, apply it, then read the object back.

Re-applying the same change returns the result of the first apply. Applying a different change under the same identity is refused rather than silently accepted.

Periods already invoiced keep the mapping version they were billed under. A new version applies to work from its own effective point forward, which is what keeps a closed period stable.

## What a dimension can never do

An allocation dimension is a label on money that has already been counted. It cannot change the accepted units on a job, the charge on a line, or the amount of an invoice.

It cannot advance a payment either. No allocation change moves any of the five commercial states — see [invoice and payment states](/docs/compute/billing/payment-states) for what actually does.

## If a mapping conflicts

A refusal names the fact it could not match: an unknown dimension value, a retired mapping version, or a finance object that has moved since you read it.

Resolve the conflict at the source, then plan and apply again. Read the object back afterwards, because an apply that was not read back is an intention rather than a result.

Never add a placeholder value to get past a refusal. An invented cost center reconciles to nothing and hides the real gap. Confirm the correct value with your finance owner, or leave the field genuinely absent where your policy allows it.

## Related

- [Usage and statements](/docs/compute/billing/usage-and-statements) — how allocated lines appear in a period
