Markdown Editor

Cloud Cost Review Template (FinOps)

Cloud cost review by FinOps phase: spend by service and team, unit economics, anomalies, savings, commitments, tagging, actions

OperationsStandardFinOps Framework (phases)finopscostreviewmath

How to use: Use it monthly or quarterly to review cloud spend with engineering and finance. Reconcile the total with the invoice and fill the Inform section before discussing savings. The main pitfall is listing opportunities without owners, estimates and decisions.

Preview

Cloud Cost Review: [Organisation or business unit] [Period]

Periodic review of cloud spend organised around the three FinOps Framework phases: Inform (visibility and allocation), Optimize (rates and usage) and Operate (governance and continuous improvement). Covers spend summary, cost by service and team, unit economics, anomalies, optimisation opportunities, commitments, tagging compliance and actions. Replace every [bracketed] value and every row marked Example.

FieldValue
Review ID[FCR-2026-10]
Period[YYYY-MM-DD to YYYY-MM-DD]
Scope[Accounts, subscriptions or projects included]
Cloud providers[Provider A], [Provider B]
Currency[USD], amounts excluding tax, after credits
Data source[Billing export, cost tool], extracted YYYY-MM-DD
Prepared by[@finops-analyst]
Reviewed with[Engineering leads, finance, product]
Status[Draft / Final]

1. Summary

MetricThis periodPrevious periodChangeBudgetVariance to budget
Total cloud spendExample: 182,400168,900+8.0%175,000+4.2%
Cost per 1,000 ordersExample: 3.423.61-5.3%3.50-2.3%
Commitment coverageExample: 64%58%+6 pts70% target-6 pts
Tagged (allocatable) spendExample: 91%87%+4 pts95% target-4 pts
Identified savings (annualised)Example: 245,000n/an/an/an/a

Key messages: [Example: "Spend grew 8% while orders grew 14%, so unit cost fell 5%. Data platform storage is the main driver of the overrun. The four approved or pending opportunities in section 4 could save about 18,500 per month."]

2. Inform: visibility and allocation

2.1 Spend trend

MonthComputeStorageDatabaseNetworkOtherTotal
Example: [Month -2]71,20031,80039,50012,1009,600164,200
Example: [Month -1]72,90033,40040,10012,6009,900168,900
Example: [This month]74,30041,70041,20014,80010,400182,400

2.2 Cost by service

ServiceThis periodPreviousChangeShare of totalComment
Example: Virtual machines58,10057,300+1.4%31.9%Stable
Example: Managed Kubernetes16,20015,600+3.8%8.9%Expected growth
Example: Object storage29,90022,100+35.3%16.4%Analytics raw data retention
Example: Managed database41,20040,100+2.7%22.6%Stable
Example: Data transfer14,80012,600+17.5%8.1%Cross-region replication added
[Service][Amount][Amount][%][%][Comment]

2.3 Cost by team or product

Team / productOwnerThis periodPreviousChangeBudgetStatus
Example: Checkout[@lead]48,30045,900+5.2%50,000On track
Example: Data platform[@lead]61,70050,800+21.5%52,000Over budget
Example: Shared platform[@lead]55,80055,200+1.1%57,000On track
Example: Unallocated (untagged)n/a16,60017,000-2.4%n/aReduce
[Team][@lead][Amount][Amount][%][Amount][Status]

Shared costs are allocated by [method, for example "proportional to each team's direct compute spend"].

2.4 Unit economics

Unit cost links spend to business value:

cunit=CperiodQperiodc_{\text{unit}} = \frac{C_{\text{period}}}{Q_{\text{period}}}

where CperiodC_{\text{period}} is allocated cloud cost and QperiodQ_{\text{period}} the number of business units delivered (orders, active users, API calls).

Unit metricCostUnitsUnit costPreviousChangeTarget
Example: Cost per 1,000 orders182,40053.3 M orders3.423.61-5.3%3.50
Example: Cost per monthly active user182,4001.92 M0.0950.098-3.1%0.090
[Metric][Cost][Units][Value][Value][%][Target]

2.5 Anomalies

IDDate detectedService / accountExpectedActualCauseStatus
AN-01YYYY-MM-DDExample: Object storage, analytics account800 per day1,450 per dayRetention policy removed during migrationFixed YYYY-MM-DD
AN-02YYYY-MM-DDExample: GPU instances, sandbox02,300 totalTest cluster not deletedFixed; budget alert added
[AN-nn]YYYY-MM-DD[Service][Amount][Amount][Cause][Status]

3. Commitments and reservations

CommitmentTypeTermExpiryMonthly valueUtilisationCoverage of eligible usage
Example: Compute savings commitmentSpend-based1 yearYYYY-MM-DD32,00098%61%
Example: Database reserved instancesResource-based3 yearsYYYY-MM-DD18,500100%72%
[Commitment][Type][Term]YYYY-MM-DD[Amount][%][%]

Effective savings rate across the estate:

ESR=1−Actual cost of covered and on-demand usageSame usage at on-demand prices\text{ESR} = 1 - \frac{\text{Actual cost of covered and on-demand usage}}{\text{Same usage at on-demand prices}}

Example: ESR this period = 23% (previous 20%). Expiring in the next 90 days: [list], decision required by YYYY-MM-DD.

4. Optimize: opportunities

IDOpportunityLeverEst. monthly savingEffortConfidenceOwnerDecision
OP-01Example: Restore 90-day lifecycle policy on analytics raw dataUsage7,200LowHigh[@name]Approved
OP-02Example: Rightsize 42 VMs below 15% peak CPU for 30 daysUsage4,900MediumMedium[@name]Approved
OP-03Example: Increase compute commitment coverage from 61% to 75%Rate3,800LowHigh[@name]Pending finance
OP-04Example: Schedule non-production clusters off outside 07:00 to 20:00 weekdaysUsage2,600LowHigh[@name]Approved
OP-05Example: Move cross-region replication to compressed batchesArchitecture1,900HighLow[@name]Investigate
[OP-nn][Opportunity][Rate / Usage / Architecture][Amount][L / M / H][L / M / H][@name][Decision]

Total approved savings: [amount] per month, [amount] annualised.

5. Operate: governance and tagging

5.1 Tagging compliance

Required tags: cost-center, team, environment, service.

Account / projectSpendSpend with all required tagsCompliancePreviousOwner
Example: prod-core92,00089,20097.0%95.1%[@name]
Example: analytics48,60041,80086.0%79.4%[@name]
Example: sandbox9,8006,10062.2%60.0%[@name]
[Account][Amount][Amount][%][%][@name]

5.2 Governance controls

ControlStatusNotes
Budgets and alerts per team at 80% and 100%Example: In place for 9 of 11 teamsAdd for two remaining teams
Anomaly detection with daily notificationIn placeThreshold 30% above 7-day baseline
Tag policy enforced at resource creationPartialEnforced in prod, warning only in sandbox
Sandbox auto-expiryNot in placeSee action A-04
[Control][Status][Notes]

6. Actions and owners

IDActionRelatedOwnerDueExpected impactStatus
A-01Example: Reapply lifecycle policy and add policy-as-code checkOP-01, AN-01[@name]YYYY-MM-DD-7,200 per monthIn progress
A-02Example: Rightsize VMs in two waves with performance checkOP-02[@name]YYYY-MM-DD-4,900 per monthNot started
A-03Example: Present commitment purchase to financeOP-03[@name]YYYY-MM-DD-3,800 per monthNot started
A-04Example: Enforce tags and auto-expiry in sandbox5.1, 5.2[@name]YYYY-MM-DDCompliance > 90%Not started
[A-nn][Action][Ref][@name]YYYY-MM-DD[Impact][Status]

6.1 Actions from previous review

IDActionOutcomeRealised saving
[A-nn][Action][Done / Partly / Dropped and why][Amount per month]

7. Forecast and next review

ItemValue
Forecast next period (before actions)[Amount]
Forecast next period (after approved actions)[Amount]
Main assumptions[Example: "orders grow 4%; no new regions"]
Next review dateYYYY-MM-DD
Attendees[Names or roles]

Based on the publicly described FinOps Framework phases (Inform, Optimize, Operate), summarised in original wording. This template is original text written for this collection and is not affiliated with the FinOps Foundation. Template licence: MIT.

Related templates