Strategy / FOCUS billing standard
FOCUS Specification Guide 2026: the standard for multi-cloud billing data
FOCUS v1.3 is the emerging standard for normalised cloud billing data. The FinOps Foundation explains it conceptually. Cloud providers document their FOCUS exports. This is the practical reference: key columns, provider adoption status, working SQL queries, current limitations, and a step-by-step adoption guide.
What FOCUS solves
AWS CUR, Azure Cost Management exports, and GCP BigQuery billing export historically used different column names, different units, and different metadata structures.
FOCUS provides a single schema across all providers. Billing analytics that worked on AWS now work on Azure and GCP without rewriting queries. Multi-cloud reporting becomes tractable for the first time without paying for a vendor abstraction layer.
Schema reference / 15 essential columns
FOCUS v1.3 key columns
| Column | What it represents |
|---|---|
| BilledCost | What you actually owe for the line item, after applying credits and discounts. |
| EffectiveCost | Amortised cost over the commitment period (relevant for upfront RIs / SPs). |
| ListCost | Public-list cost before any discount or credit. |
| ServiceName | Cloud service the line item belongs to (Compute Engine, EC2, Azure VM). |
| ServiceCategory | Higher-level grouping: Compute, Storage, Networking, Databases, AI/ML, etc. |
| ResourceId | Cloud-native resource identifier (instance ARN, resource ID, project/resource name). |
| ResourceName | Human-readable resource name. |
| ChargeCategory | Type of charge: Usage, Purchase, Tax, Adjustment, Credit. |
| ChargeFrequency | Recurring, OneTime, Usage-Based. |
| CommitmentDiscountId | Identifier of the SP, RI, or CUD applied to the line. |
| CommitmentDiscountType | SavingsPlan, ReservedInstance, CommittedUseDiscount, SpendCommitment. |
| Provider | AWS, Microsoft, Google, Oracle, Tencent. |
| InvoiceIssuer | Entity issuing the invoice (often the provider, sometimes a reseller). |
| BillingAccountId | Account or organisation under which the charge appears. |
| BillingPeriodStart / End | Standard ISO 8601 timestamps for the billing period. |
Provider adoption / where FOCUS exports work today
Adoption status
| Provider | Status | Export name | Note |
|---|---|---|---|
| AWS | GA | Cost and Usage Report 2.0 (CUR 2.0) with FOCUS columns | Enable via Billing console. Loads to S3 and Athena. FOCUS 1.0 GA, 1.3 columns rolling out. |
| Azure | GA | Cost Management FOCUS export | Configure under Cost Management exports. Daily granularity, FOCUS 1.0 schema, 1.1 in preview. |
| GCP | GA | BigQuery billing export with FOCUS schema | Standard FOCUS view layered on BigQuery billing export. SQL-native consumption. |
| Oracle (OCI) | GA | FOCUS-formatted cost report | Available via Cost Analysis console. CSV download or object storage. |
| Tencent | GA | FOCUS-formatted cost report | Released 2024 for international Tencent Cloud customers. |
Working SQL / four queries that run identically across providers
Practical queries
Total spend by service category, current month
SQLSELECT ServiceCategory, SUM(BilledCost) AS spend FROM focus_billing WHERE BillingPeriodStart >= DATE_TRUNC(CURRENT_DATE(), MONTH) GROUP BY ServiceCategory ORDER BY spend DESC;
Same query works on AWS, Azure, GCP, OCI, and Tencent FOCUS exports.
Commitment discount utilisation
SQLSELECT Provider, CommitmentDiscountType, SUM(BilledCost) AS billed, SUM(ListCost) AS list, 1 - SUM(BilledCost) / NULLIF(SUM(ListCost), 0) AS effective_discount FROM focus_billing WHERE BillingPeriodStart >= DATE_TRUNC(CURRENT_DATE(), MONTH) AND CommitmentDiscountType IS NOT NULL GROUP BY Provider, CommitmentDiscountType;
Compares Savings Plan, RI, and CUD utilisation in a single result set.
Cost by tag (team), grouped
SQLSELECT Tags ['team'] AS team, Provider, SUM(BilledCost) AS spend FROM focus_billing WHERE BillingPeriodStart >= DATE_TRUNC(CURRENT_DATE(), MONTH) GROUP BY team, Provider ORDER BY spend DESC;
Cross-provider tag-based chargeback using a normalised Tags column.
Month-over-month service trend
SQLWITH monthly AS (
SELECT
DATE_TRUNC(BillingPeriodStart, MONTH) AS month,
ServiceName,
SUM(BilledCost) AS spend
FROM focus_billing
GROUP BY month, ServiceName
)
SELECT
ServiceName,
month,
spend,
spend - LAG(spend) OVER (PARTITION BY ServiceName ORDER BY month) AS mom_change
FROM monthly
ORDER BY ServiceName, month;Detects services where spend is trending up unusually across providers.
Adoption playbook
8 steps to FOCUS-native cost reporting
- 01
Enable FOCUS-formatted billing export from each provider you use
- 02
Pick a central data warehouse (BigQuery, Athena/Snowflake on top of S3, or Snowflake)
- 03
Schedule daily exports to land in the warehouse
- 04
Build a unified table or view with consistent partitioning (BillingPeriodStart)
- 05
Map existing reports and dashboards to FOCUS column names
- 06
Validate totals against provider invoices for the first three billing periods
- 07
Build cross-provider dashboards using the FOCUS column reference
- 08
Roll out access to FinOps, engineering leads, and finance
Limitations / what FOCUS does not solve
Where you still need other tools
Resource-level utilisation data
FOCUS covers cost and usage but not CPU, memory, or storage utilisation. Rightsizing still requires provider-specific telemetry.
Real-time data
FOCUS exports are typically daily, sometimes hourly. Real-time alerting still requires native cost APIs or third-party platforms.
Kubernetes pod-level allocation
FOCUS describes cloud-billed resources, not pod-level allocation inside a node. Kubecost / OpenCost still required for K8s allocation.
Custom pricing visibility
EDP, EA, and PPA negotiated rates appear in BilledCost but the discount percentage relative to public list may not be exposed in all providers.
Sub-resource detail
Some providers expose sub-resource detail (S3 by storage class, EC2 by usage type) that does not have a fully consistent FOCUS representation yet.
Common questions
FAQ
What is FOCUS and who maintains it?+
FOCUS is the FinOps Open Cost and Usage Specification, a community-driven schema for cloud billing data. The FinOps Foundation (under the Linux Foundation) maintains the spec. Major cloud providers (AWS, Microsoft, Google, Oracle, Tencent) and FinOps platform vendors contribute. Version 1.3 was ratified December 2025.
Do I need FOCUS if I use only one cloud?+
Less critical, but still useful. Single-cloud teams can use the provider's native billing export. FOCUS becomes valuable when you might add a second cloud, change providers, or want a future-proof schema. The FOCUS column structure is also generally cleaner than legacy provider exports.
How do I set up FOCUS exports?+
AWS: enable CUR 2.0 in Billing console, export to S3, query via Athena. Azure: configure Cost Management FOCUS export to a storage account. GCP: enable BigQuery billing export, then layer the FOCUS view on top. Each provider has detailed documentation. Plan a one-week setup project and a few iterations to validate totals.
What does FOCUS not solve?+
Resource utilisation (CPU, memory, IOPS), real-time data, Kubernetes pod-level allocation inside nodes, and some sub-resource detail. FOCUS is a billing schema. Optimisation still requires utilisation telemetry, and Kubernetes still needs Kubecost or OpenCost for pod-level cost allocation. FOCUS is the substrate, not the whole stack.
Will FOCUS replace third-party FinOps platforms?+
No. FOCUS makes data interchange tractable but tools still add value: anomaly detection, automated commitment management, executive dashboards, allocation rules, and rightsizing recommendations. Vantage, CloudHealth, Apptio, and others have moved to FOCUS-aligned data models, which makes them easier to use, not redundant.
Continue reading