CostMonStart free

Reference

FOCUS: the open standard for normalizing your bill

FOCUS is the FinOps Foundation's open specification for cloud, SaaS, and AI billing data. This page covers what it standardizes, why the same month can show four different cost numbers, and what it still leaves for a tool like CostMon to solve.

Verified against the FOCUS specification and the FinOps Foundation's own release announcements as of August 5, 2026. Current ratified version: FOCUS 1.4, ratified June 2026.

What it is

Who maintains FOCUS, and what it actually does

FOCUS (the FinOps Open Cost and Usage Specification) is a vendor-neutral schema for billing data, maintained by the FinOps Foundation, a Linux Foundation project. A Steering Committee made up of practitioners and provider representatives ratifies each version; day-to-day maintenance happens in the open on GitHub.

The specification doesn't collect your bill for you. It defines the column names, data types, and required values a provider's own cost export uses, so a query written against one provider's FOCUS export mostly works against another's.

Source: FOCUS (FinOps Foundation) →

The money section

Four cost columns, four different numbers

This is why two dashboards can both be right about the same month and still disagree on the total. FOCUS doesn't pick one "true" cost. It defines four, and each one answers a different question.

The four FOCUS cost columns, their definitions, and what to use each for
ColumnWhat it isUse it for
BilledCost

The charge that forms the basis for invoicing.

Inclusive of every reduced rate and discount, but excluding the amortization of upfront charges. It's a cash-basis number: a one-time upfront payment lands entirely in the month it was charged.

Reconciling against the actual invoice
EffectiveCost

The amortized cost after every discount is applied.

Prepaid purchases (a Reserved Instance bought upfront, a committed-use contract) are spread across every charge they cover, so a one-time payment doesn't distort a single month. The prepaid purchase row itself carries an EffectiveCost of zero, since its cost has already moved into the months it pays for.

Trend analysis and month-over-month comparisons
ListCost

List unit price × pricing quantity, no discounts applied.

The pre-discount baseline: what you'd have paid at the provider's public, undiscounted rate for the same quantity. It's the number every other cost column gets compared against to show what a discount is worth.

Showing the on-demand price a commitment or negotiated rate is beating
ContractedCost

Contracted unit price × pricing quantity.

Reflects a negotiated discount (a private pricing agreement, a volume discount) but not a commitment discount like a Reserved Instance or Savings Plan. When there's no separately negotiated rate, ContractedCost defaults to ListCost.

Seeing your negotiated rate before any commitment discount applies on top of it

Source: FOCUS Specification v1.2 →

Worked example

A 3-year, all-upfront Reserved Instance, paid $36,000 upfront, that would have cost about $1,400/month on demand.

How BilledCost, EffectiveCost, ListCost, and ContractedCost diverge across a 3-year all-upfront commitment
PeriodBilledCostEffectiveCostListCostContractedCost
Month 1 (purchase month)$36,000$1,000$1,400$1,400
Months 2–36 (each)$0$1,000$1,400$1,400
36-month total$36,000$36,000$50,400$50,400
  • Month 1 (purchase month). The full upfront charge hits BilledCost here, on a cash basis. EffectiveCost only counts this month's $36,000 ÷ 36 share.
  • Months 2–36 (each). Nothing new is invoiced, but EffectiveCost keeps recognizing the same $1,000/month the upfront payment already covered.
  • 36-month total. BilledCost and EffectiveCost agree over the full term. They only disagree about which month the cost belongs to.

ContractedCost equals ListCost in this example because the discount came from a commitment, not a negotiated rate. If this account also had a private pricing agreement, ContractedCost would sit between the two. That's the whole answer to why two dashboards can quote two different numbers for the same month and both be right: one's reading BilledCost, the other EffectiveCost.

The schema

What FOCUS actually standardizes

Datasets

FOCUS datasets and the version each was introduced in
DatasetIntroducedWhat it covers
Cost and Usage1.0The foundational dataset: one row per charge, with the four cost columns above plus provider, service, SKU, and usage detail.
Contract Commitment1.3Isolates commitment terms (start and end dates, committed quantity, remaining balance) from the cost and usage rows, so a query can see every active commitment at once instead of inferring it from usage rows. Grew from 13 to 30 columns in 1.4.
Invoice Detail1.4Bridges cost and usage rows to the issued invoice, closing the gap between what a FOCUS export shows and what finance was billed.
Billing Period1.4Defines the invoice-issuer's own period boundaries, since not every provider bills on a clean calendar month.

Source: FOCUS (FinOps Foundation) →

Column groups, in plain English

ChargeCategory since 1.0

The mandatory, highest-level classification of every charge row. Allowed values: Usage, Purchase, Tax, Credit, Adjustment.

ChargeClass since 1.0

Marks a row as a "Correction" to a previously invoiced period, or leaves it null for a normal charge.

CommitmentDiscountStatus since 1.0

Whether a commitment discount (an RI, a Savings Plan, a committed-use contract) was used or sat unused on this row. Allowed values: Used, Unused.

ServiceCategory since 1.0

A provider-neutral bucket for what kind of service a charge belongs to, so "compute" means the same thing across AWS, Azure, and Google Cloud rows.

SkuId since 1.0

The provider's own identifier for the specific priced product or service behind a row. It's the most granular thing you can filter or group by.

ConsumedQuantity / ConsumedUnit since 1.0

How much of a metered SKU was used, and in what unit the provider measures it. It's null whenever a row isn't a usage charge.

PricingCurrency and its companions since 1.2

PricingCurrencyEffectiveCost, PricingCurrencyListUnitPrice, and PricingCurrencyContractedUnitPrice restate cost and price columns in the currency a resource was priced in, when that differs from the invoice's billing currency. This is the piece that makes multi-currency accounts reconcilable.

Source: FOCUS Specification v1.2 →

Provider support

Who exports FOCUS today, and at what version

Checked against FOCUS (FinOps Foundation) — provider support as of August 5, 2026. This list moves. Re-check the source before treating it as current.

FOCUS version exported by provider, and what each is still missing
ProviderFOCUS versionStill missingSource
AWS1.2No Contract Commitment or Invoice Detail dataset yet.FOCUS — AWS setup guide →
Microsoft Azure1.2No Contract Commitment or Invoice Detail dataset yet.FOCUS — Microsoft setup guide →
Google Cloud1.2No Contract Commitment or Invoice Detail dataset yet.FOCUS — Google Cloud setup guide →
Databricks1.3Contract Commitment support not yet published for the 1.4 (30-column) shape.Databricks — cloud-infra-costs (FOCUS export) →
Vercel1.3Contract Commitment support not yet published for the 1.4 (30-column) shape.Vercel — FOCUS billing charges API docs →
Grafana Cloud1.2No 1.3+ Contract Commitment dataset.Grafana Cloud — cost management docs →
Redis1.2No 1.3+ Contract Commitment dataset.Redis — cost report API docs →
Nebius1.2No 1.3+ Contract Commitment dataset.Nebius — billing usage export docs →
Oracle Cloud1.0No multi-currency, SaaS/PaaS, or commitment-tracking columns from 1.2 and 1.3.FOCUS — Oracle Cloud setup guide →
Alibaba Cloud1.0No multi-currency, SaaS/PaaS, or commitment-tracking columns from 1.2 and 1.3.Alibaba Cloud — FOCUS billing export docs →
Tencent Cloud1.0No multi-currency, SaaS/PaaS, or commitment-tracking columns from 1.2 and 1.3.FOCUS — Tencent Cloud setup guide →
Huawei Cloud1.0No multi-currency, SaaS/PaaS, or commitment-tracking columns from 1.2 and 1.3.Huawei Cloud — cost center docs →
OVHcloud1.0No multi-currency, SaaS/PaaS, or commitment-tracking columns from 1.2 and 1.3.OVHcloud Labs — FinOps FOCUS →

Version history

From 1.0 to the planned 1.5

  1. FOCUS 1.0

    General availability

    • The first ratified version, with formal support from AWS, Google Cloud, Microsoft Azure, and Oracle Cloud at launch.

    Source: FinOps Foundation →

  2. FOCUS 1.1

    Deeper multi-cloud columns

    • New columns for more granular multi-cloud analysis, ETL-friendly metadata, and normative clarifications to existing columns.

    Source: FinOps Foundation →

  3. FOCUS 1.2

    SaaS/PaaS support and multi-currency

    • Seven new columns, including InvoiceId and the PricingCurrency group, to reconcile invoices and handle multi-currency billing.
    • Extended coverage to SaaS and PaaS billing, including virtual-currency consumption (Snowflake credits, Databricks DBUs, tokens) alongside traditional cloud spend.

    Source: FinOps Foundation →

  4. FOCUS 1.3

    Contract Commitment dataset

    • Introduced the Contract Commitment dataset, the first FOCUS dataset beyond Cost and Usage, plus split shared-cost allocation columns and data recency/completeness flags.

    Source: FinOps Foundation →

  5. FOCUS 1.4

    Invoice reconciliation, zero incompatible changes

    • Added the Invoice Detail and Billing Period datasets: 2 datasets, 47 columns, 6 attributes, and 17 glossary entries in total for this release.
    • Grew Contract Commitment from 13 to 30 columns, and completed 1.3's deprecations by removing the old ProviderName and PublisherName columns.
    • Shipped with zero incompatible changes to any existing FOCUS 1.3 query.

    Source: FinOps Foundation →

  6. FOCUS 1.5Planned, not yet ratified

    Price Sheet and token/inference economics

    • Planned to add a Price Sheet dataset (a standardized view of a provider's list pricing, separate from the consumption record) and native columns for AI model identity and input/output token consumption.
    • Not yet ratified; scope and date can still change before the Steering Committee votes on it.

    Source: Flexera — FinOps X 2026 recap →

Being honest about the gap

What FOCUS doesn't solve

A shared schema is not the same thing as a finished cost-monitoring practice. Here's what's still on you.

No allocation policy

FOCUS can carry a split-cost column once a provider chooses to populate one, but it doesn't decide who owns a shared NAT gateway or a shared Kubernetes node. That call is still yours to make.

Providers with no FOCUS export at all

Anthropic and OpenAI publish admin cost APIs in their own shapes, not FOCUS. Most SaaS tools don't publish a FOCUS export either, so you're reading whatever their billing API gives you.

Token-level unit economics, before 1.5

Today's FOCUS lets a provider report AI usage as virtual-currency consumption, but it has no standard column for input vs. output tokens or per-model pricing. That's what 1.5 is scoped to add.

No alerting or anomaly detection

FOCUS is a data format, not a monitoring product. Normalizing your bill into FOCUS columns doesn't catch a runaway resource on its own; something still has to watch the data and page someone.

Nowhere to put the data

A FOCUS export is a file or a table. It still needs somewhere to land, join across providers, and stay current, and that's the gap between "there's a standard" and "my spend is in one view."

CostMon normalizes into its own model and reads a provider's FOCUS export where one exists. That's the gap the list above leaves: one daily view across every provider, whether or not it has adopted FOCUS yet.

FAQ

Common questions about FOCUS

Is FOCUS a real standard, or something one vendor invented?

It's real and vendor-neutral. The FinOps Foundation, a Linux Foundation project, maintains it, and a Steering Committee made up of practitioners and provider representatives ratifies each version, not any single cloud or tool vendor.

Do I need to understand FOCUS to use CostMon?

No. CostMon normalizes spend into its own model regardless of whether a connected provider exports FOCUS. This page exists because CostMon's connectors read FOCUS exports where they're available, and it's worth knowing what that data contains.

Why does my dashboard show a different number than my invoice?

You're probably comparing BilledCost against EffectiveCost. BilledCost matches the invoice: a one-time upfront charge lands in a single month. EffectiveCost spreads that same charge across the months it covers, which is usually the more useful number for a trend line but will never match the invoice for the purchase month itself.

Which providers export FOCUS data today?

AWS, Azure, and Google Cloud all export FOCUS 1.2. Databricks and Vercel are on 1.3. Oracle, Alibaba Cloud, Tencent Cloud, Huawei Cloud, and OVHcloud are still on the original 1.0. See the provider matrix above for the full, sourced list.

Does FOCUS cover AI and LLM spend?

Partially. Since 1.2, FOCUS can represent virtual-currency consumption (credits, tokens, DBUs) as part of the cost and usage dataset. It doesn't yet have a standard column for input vs. output tokens or per-model pricing; that's what the planned FOCUS 1.5 is scoped to add.

What's the difference between ListCost and ContractedCost?

ListCost is the public, undiscounted rate. ContractedCost applies a negotiated discount (a private pricing agreement or volume discount) but not a commitment discount like a Reserved Instance. When there's no separate negotiated rate, ContractedCost just equals ListCost.

Is FOCUS 1.4 backward-compatible with 1.3?

Yes. The FinOps Foundation's own announcement for 1.4 states it shipped with zero incompatible changes to any existing FOCUS 1.3 query, while completing deprecations that 1.3 had already flagged.

Where can I read the actual specification?

The FinOps Foundation publishes it at focus.finops.org, including the full v1.2 column-level specification this page's definitions are sourced from.

A rate you looked up will change again.

Provider pricing pages change without notice. CostMon tracks the bill that pays for it.

Esc