Azure Reserved Instances and Savings Plans: A Fiscal Year-End Strategy
Azure Reserved Instances and Savings Plans: A Fiscal Year-End Strategy
The December week between Christmas freeze and New Year is a busy one in every serious FinOps team. Not because of incidents – because of reservations. When the CFO at Christie's came to me with "we still have USD 180k of unused CAPEX, what should we do?", the answer was clear: figure out which Reserved Instances and Savings Plans make sense and buy them before 31 December.
This article is the distilled version of what I work through with clients every December.
1. Start With Coverage Analysis, Not the Catalog
The most common mistake is opening Cost Management → Reservations → Recommendations and buying whatever Azure suggests. Microsoft calculates recommendations from the last 30 days of usage and assumes an identical pattern going forward. That often overshoots for workloads you are about to migrate or shut down.
A better starting point:
# Current coverage – percentage of usage covered by reservations
az consumption reservation summary list \
--grain monthly \
--start-date 2025-11-01 \
--end-date 2025-11-30 \
--query "[].{ReservationId:reservationOrderId, UtilizedPercentage:avgUtilizationPercentage, ReservedHours:reservedHours, UsedHours:usedHours}" \
--output tableLook for two numbers:
- Utilization < 95% = you are paying for unused capacity, time to exchange for a better SKU
- Coverage < 70% on a stable workload = room for a new reservation
In one retail environment where I ran the audit, this single query led me to 14 unused Standard_D8s_v4 reservations left over from last year's consolidation onto D4s_v5. Exchanging for the smaller SKU returned USD 38 000 per year.
2. Reserved Instance vs Savings Plan: a Decision Table
| Criterion | Reserved Instance | Savings Plan |
|---|---|---|
| Maximum discount | 72% (3 years) | 45% (3 years) |
| Bound to | VM family + region | Hourly spend in USD |
| Covers | VMs, SQL DB, Cosmos, Storage | Compute only (VMs, AKS, Container Instances, Functions Premium) |
| Region flexibility | Region or "Shared scope" | Global |
| VM size change | Only within the same instance flexibility group | Unrestricted |
| Exchange | Yes (compute only since 2024) | No |
| Cancellation/refund | Up to USD 50 000/year/account | Same |
Practical decision rule: if you know the exact VM SKU and that it will run 24/7 for at least 12 months, buy an RI. If you know the budget but not the exact compute mix, buy a Savings Plan.
3. Scope: Where to Pin the Reservation
This is the area where the most savings get left on the table without anyone noticing. Three options:
| Scope | Use case | Example |
|---|---|---|
| Single subscription | Isolated workloads | One production subscription |
| Resource group | Very specific workloads | Almost never |
| Shared (MG/billing scope) | Enterprise environments | Recommended |
Shared scope means the reservation floats across all subscriptions under a billing account or MG and applies wherever the best match exists at that moment. In an environment like Nespresso, where we run across dozens of subscriptions and countries, single-subscription reservations would be a logistics nightmare – Shared scope lets you buy centrally and let Azure handle distribution.
# Change scope of an existing reservation to Shared
az reservations reservation update \
--reservation-order-id <ORDER_ID> \
--reservation-id <RESERVATION_ID> \
--applied-scope-type Shared4. The Math: Three-Year vs One-Year
Classic scenario: you want to buy RIs for Standard_D4s_v5 in West Europe for 10 VMs.
Pay-as-you-go price: ~USD 141 / VM / month = USD 16 920 / year / 10 VMs
1-year Reserved: ~USD 98 / VM / month = USD 11 760 / year / 10 VMs (30% saving)
3-year Reserved: ~USD 62 / VM / month = USD 7 440 / year / 10 VMs (56% saving)The three-year reservation saves USD 9 480 per year vs PAYG. Over 36 months that is USD 28 440 in savings.
But: if you plan an AKS migration in year 18 and those VMs disappear, you have 14 months of stranded commitment. Microsoft only refunds up to USD 50 000 per year, so a large enterprise hit cannot be fully absorbed. Always think in break-even months:
- 1-year RI: break-even ~7 months
- 3-year RI: break-even ~13 months
If you do not have 95% certainty the workload will run at least to break-even, go Savings Plan instead.
5. Concrete CLI Purchase
The GUI is fine for the first reservation. For 50 SKUs you need a script.
# Quote for Standard_D4s_v5, 10 instances, West Europe, 3 years, monthly billing
az reservations catalog show \
--subscription-id <SUB_ID> \
--reserved-resource-type VirtualMachines \
--location westeurope \
--query "[?skuProperties[?name=='cores' && value=='4']].{Name:name, Tier:size, BillingPlan:terms[0].billingPlan}"
# Actual purchase (after quoting)
az reservations reservation-order purchase \
--reservation-order-id <NEW_ORDER_UUID> \
--sku Standard_D4s_v5 \
--location westeurope \
--reserved-resource-type VirtualMachines \
--billing-scope-id /providers/Microsoft.Billing/billingAccounts/<BA_ID> \
--term P3Y \
--quantity 10 \
--billing-plan Monthly \
--applied-scope-type Shared \
--display-name "RI-D4s-v5-Prod-3Y-Dec2025"Always use --billing-plan Monthly. The upfront payment buys you 0.5–1% extra discount but locks up cashflow.
6. What to Do With an Underutilized Reservation: Exchange Playbook
When utilization drops below 70% for more than 14 days, act:
- Identify underutilized SKUs:
az consumption reservation detail list \ --reservation-order-id <ORDER_ID> \ --start-date 2025-11-01 \ --end-date 2025-11-30 \ --query "[?reservationUtilization < \`70\`]" - Compute remaining value (remaining commitment × RI price)
- Find a target SKU of equal or higher value
- Exchange via the Portal: Reservations → Select reservation → Exchange. The new reservation must be of equal or higher value. The remaining value of the old one is fully refunded and applied to the new one.
Heads up: since summer 2024 Microsoft has disabled exchanges for database reservations (SQL DB, Cosmos DB, MariaDB). You can only refund them. If you hold a three-year SQL DB RI and the workload changes SKU, you are stuck – so buy these in smaller chunks.
7. Year-End Checklist
| Step | Timing | Owner |
|---|---|---|
| Coverage analysis of last 90 days | -6 weeks | FinOps lead |
| Identify underutilized reservations | -5 weeks | FinOps lead |
| Exchange proposals with approval | -4 weeks | FinOps + Finance |
| Purchase new RIs/SPs | -2 weeks | Procurement |
| Audit applied scope + utilization | +2 weeks | FinOps lead |
| Annual review in Cost Management Reservations | January | CTO + CFO |
Conclusion
Reserved Instances and Savings Plans are not just an accounting trick. Applied correctly, one three-year reservation alone can save more than a whole annual FinOps audit costs. But like any financial instrument, they can also be misused – an over-reserved 3-year commitment costs more than PAYG when the workload disappears.
The rule I repeat to every team: buy slowly, exchange aggressively, refund only as a last resort. And give yourself at least six weeks of proper analysis before year-end, not six days of panic.
Need help with a fiscal year-end FinOps strategy? Check out our cloud architecture services or reach out for a free consultation.
About the author

Martin Rylko
Senior Cloud Architect & DevOps Engineer
14+ years in IT – from on-premises datacenters and Hyper-V clustering to cloud infrastructure on Microsoft Azure. I specialize in Landing Zones, IaC automation, Kubernetes and security compliance.
Frequently Asked Questions
When is the best time to buy Azure Reserved Instances?▾
What is the difference between a Reserved Instance and a Savings Plan in Azure?▾
Can I exchange or refund an Azure Reserved Instance?▾
Should I buy a three-year or one-year reservation?▾
You might also like
Azure Cosmos DB Cost Optimization: 8 Levers to Cut Your RU/s Bill
A practical guide to reducing Azure Cosmos DB costs. Provisioned vs Serverless, autoscale tuning, indexing policy, TTL, and multi-region trade-offs with real numbers from running CostSentry.AI.
ReadAzure FinOps: 7 Steps to Cut Cloud Costs by 30%
Practical Azure FinOps guide – from Cost Management through VM right-sizing to Reserved Instances and auto-scaling. Real savings from enterprise projects.
ReadAzure Functions Flex Consumption: When to Replace the Premium Plan in 2026
Flex Consumption is the third path between the Consumption and Premium plans for Azure Functions. A practical breakdown of the pricing model, VNet integration, and when to switch off the Premium plan.
Read