On FOCUS Specification

The FinOps Open Cost and Usage Specification (FOCUS) is an open specification that defines a consistent format for cloud cost and usage datasets. narevai/narev translates billing data to FOCUS 1.2, allowing standardized billing data across all cloud providers.

Why FOCUS?

FOCUS creates a common language for cloud costs across all cloud providers, vendors, and tools. It eliminates the need for FinOps practitioners to spend time figuring out what different cost fields mean across different provider invoices.

Key Benefits

  • Standardized terminology: Common definitions across all providers
  • Reduced data normalization: Less time spent on data preparation
  • Multi-vendor support: Single schema for all cloud providers
  • Invoice reconciliation: Direct links to provider invoices
  • Virtual currency support: Credits and tokens tracking

FOCUS 1.2 Features

Enhanced Provider Support

  • SaaS and PaaS billing: Expanded beyond traditional cloud providers
  • Multi-currency support: Convert between national currencies
  • Virtual currencies: Track credits, tokens, and other virtual currencies

Invoice Integration

  • Invoice reconciliation: Direct linkage to provider invoices
  • Billing account granularity: Enhanced account and sub-account details
  • Charge-back optimization: Streamlined cost allocation

Field Categories

FOCUS 1.2 defines fields in four categories:

Mandatory Fields

These fields must be present in every FOCUS-compliant dataset:

Cost Fields

  • BilledCost: Cost as shown on the invoice
  • EffectiveCost: Amortized cost after applying discounts and commitments
  • ListCost: Cost at public list prices without any discounts
  • ContractedCost: Cost at negotiated contract prices

Account Identification

  • BillingAccountId: Account that receives the invoice
  • BillingAccountName: Display name of the billing account
  • BillingAccountType: Type of billing account (e.g., individual, enterprise)

Time Periods

  • BillingPeriodStart: Start of the billing period (inclusive)
  • BillingPeriodEnd: End of the billing period (exclusive)
  • ChargePeriodStart: Start of the charge period (inclusive)
  • ChargePeriodEnd: End of the charge period (exclusive)

Services and Providers

  • ServiceName: Name of the service that generated the charge
  • ServiceCategory: Standardized service category (Compute, Storage, etc.)
  • ProviderName: Entity that provided the resources
  • PublisherName: Entity that produced the resources
  • InvoiceIssuerName: Entity responsible for invoicing

Charges and Pricing

  • ChargeCategory: Type of charge (Usage, Purchase, Tax, Credit, Adjustment)
  • ChargeDescription: Human-readable description of the charge
  • PricingQuantity: Quantity used for pricing calculations
  • PricingUnit: Unit of measurement for pricing

Currency

  • BillingCurrency: Currency code for the billed amount

Conditional Fields

These fields are required when certain conditions are met:

Sub-Account Information

  • SubAccountId: Required when sub-accounts exist
  • SubAccountName: Display name when SubAccountId is present
  • SubAccountType: Type when SubAccountId is present

Resource Details

  • ResourceId: Required for resource-based billing
  • ResourceName: Display name when ResourceId is present
  • ResourceType: Type when ResourceId is present

Location Information

  • RegionId: Required for region-specific charges
  • RegionName: Display name when RegionId is present
  • AvailabilityZone: Required for AZ-specific charges

SKU and Pricing Details

  • SkuId: Required for SKU-based pricing
  • SkuPriceId: Price identifier when SKU pricing exists
  • ListUnitPrice: Unit price when available
  • ContractedUnitPrice: Negotiated unit price when applicable

Commitment Discounts

  • CommitmentDiscountId: Required when commitment discounts apply
  • CommitmentDiscountType: Type of commitment (Reserved Instance, Savings Plan, etc.)
  • CommitmentDiscountStatus: Usage status (Used, Unused)
  • CommitmentDiscountQuantity: Quantity of commitment used

Usage Tracking

  • ConsumedQuantity: Actual quantity consumed
  • ConsumedUnit: Unit of consumption measurement

These fields should be included when available:

  • ServiceSubcategory: More specific service classification
  • ChargeFrequency: How often the charge occurs (One-Time, Recurring, Usage-Based)
  • InvoiceId: Direct link to provider invoice
  • InvoiceIssuer: Entity that issued the invoice

Optional Fields

  • Tags: Key-value pairs for resource tagging
  • x_*: Provider-specific fields (must start with x_ prefix)

Service Categories

FOCUS 1.2 defines standardized service categories:

CategoryDescription
AI and Machine LearningArtificial intelligence and ML services
AnalyticsData analytics and business intelligence
ComputeVirtual machines, containers, serverless compute
DatabasesManaged database services
Developer ToolsDevelopment and deployment tools
Management and GovernanceMonitoring, logging, and governance
NetworkingLoad balancers, CDN, VPN, networking
Security, Identity, and ComplianceSecurity and identity services
StorageObject, block, and file storage
OtherServices not fitting other categories

Charge Categories

FOCUS defines five types of charges:

CategoryDescription
UsageCharges based on actual resource consumption
PurchaseUpfront payments for commitments or licenses
TaxTaxes, VAT, and other government-imposed fees
CreditPromotional credits, refunds, and adjustments
AdjustmentBilling corrections and manual adjustments

Data Types

FOCUS specifies data types for each field:

  • Decimal: All cost and quantity fields for precise financial calculations
  • String: Text fields like names, IDs, and descriptions
  • DateTime: Time periods in ISO 8601 format
  • Dict/JSON: Complex data like tags and provider-specific information

For the latest FOCUS specification details, visit focus.finops.org.