A savings plan for compute: the basics
What does Azure Advisor mean by 'consider purchasing a savings plan to unlock lower prices'?
An Azure savings plan for compute is an hourly spend commitment. You agree to spend a fixed amount per hour on eligible compute, for one or three years, and in exchange that usage is billed at a discounted savings plan rate instead of full pay-as-you-go. Each hour, Azure applies the discounted rate to your eligible usage and draws it down against your commitment; usage above the commitment is billed at the normal rate, and any unused commitment in an hour is lost, because the benefit is use-it-or-lose-it per hour and does not roll over.
Azure Advisor raises the recommendation 'Consider purchasing a savings plan for compute to unlock lower prices' when it sees a steady baseline of pay-as-you-go compute that you are running anyway. Advisor builds the recommendation from your own metered usage: it looks back over your recent eligible usage, models what an optimal hourly commitment would be, and reports the commitment amount, the estimated saving against your current pay-as-you-go cost, and the share of your compute that the plan would cover. It surfaces both a one-year and a three-year option for the subscription.
The point that makes a savings plan different from a reservation is flexibility. A reserved instance locks you to a specific VM series, size and region. A savings plan commits only to an hourly amount of spend, and the discount then applies across eligible compute regardless of series, size, operating system or region. That covers Azure Virtual Machines, Azure App Service, Azure Functions on the Premium plan, Azure Container Instances and Azure Dedicated Hosts. So the work here is not 'buy a plan'. It is: find the steady baseline you genuinely run every hour, size the commitment to that floor rather than to your peaks, and let the flexible discount float across whatever eligible compute is running.
In this lesson you will learn what an Azure savings plan for compute actually commits you to, how Advisor sizes the recommendation from your own usage, how it differs from a reservation, and how to buy and monitor one without over-committing. You will see the az CLI to read the recommendation and to purchase a plan, and a Bicep alias you can put under source control so the commitment is a reviewed, version-controlled decision rather than a one-off click in the portal.
The discount that does not care what you run
Azure savings plans were introduced precisely because reservations were too rigid for how modern estates actually evolve. A reservation you bought for a specific D-series VM in West Europe stops helping the moment you resize, move region, or shift the workload onto App Service or containers, and teams were leaving real money on the table every time they modernised. A savings plan was the answer: it commits to an hourly amount of money rather than to a machine, so the discount keeps applying as the underlying compute changes shape. The plan genuinely does not care whether this hour's eligible spend came from a VM, a Premium Functions plan or a container, only that you ran it.
Reading the savings plan recommendation before committing
Priya runs the platform team at a SaaS business whose Azure compute bill has been climbing as they migrate workloads from VMs onto App Service and containers. Azure Advisor has been showing 'Consider purchasing a savings plan for compute to unlock lower prices' on the production subscription for a few weeks.
Rather than accept the headline number, Priya wants to see the recommendation Advisor generated from real usage, the commitment it proposes and the saving it estimates, so the commitment can be sized to the genuine baseline rather than to a peak.
Pull the active cost recommendations for the subscription and filter to the savings plan one, so you are reading Advisor's own numbers rather than a brochure figure.
Advisor builds this from your own metered usage over the look-back window. Read the proposed commitment, the estimated saving and the coverage percentage in the portal or the benefit recommendations API before you buy.
How Advisor sizes the recommendation and how the discount appliesdeep dive
Advisor and the savings plan purchase experience build the recommendation from your actual on-demand usage and costs, including any negotiated discounts. They look back over your recent eligible usage, model the optimal hourly commitment by applying the savings plan rate to your eligible usage in each hour, and report the commitment amount, the estimated saving against your current pay-as-you-go cost and the share of your compute the plan would cover. Portal recommendations use a 30-day look-back; the benefit recommendations API lets you compare different look-back windows and the one-year against the three-year term.
Once a plan is active, the discount is applied per hour. Each hour Azure prices your eligible usage at the savings plan rate and deducts it from your hourly commitment; usage beyond the commitment is billed at pay-as-you-go, and any commitment not consumed in that hour is forfeit because the benefit does not carry over. If reservations and a savings plan both apply, reservations are matched first and the savings plan picks up remaining eligible usage. This is why a commitment sized below your steady floor stays near 100 per cent utilised: there is always at least that much eligible usage each hour to absorb it.
The commitment itself is final. A savings plan cannot be cancelled, refunded or exchanged for a reservation; you can transfer it between supported agreements and you can trade certain reservations in for a plan, but you cannot undo it. The full hourly amount is owed for the whole term. That single property is what turns sizing into the central decision: commit to the floor and the plan runs fully utilised and risk-free, commit above it and you pay for hours you never filled.
What is the impact of leaving the recommendation unactioned?
The direct impact is a standing overpayment. Every hour the steady baseline runs on pay-as-you-go while a savings plan is available is an hour billed at full list price when a documented discount of up to 65 per cent was on the table. Because the baseline runs continuously, the gap compounds quietly: it is not a one-off, it is a recurring premium on the largest line of the bill that nobody is choosing on purpose.
The second-order impact is that the compute line grows without any corresponding pricing leverage. As an estate migrates from VMs to App Service and containers, a reservation strategy keeps breaking and teams give up on commitment discounts entirely, leaving the whole modernising workload at list price. A savings plan is precisely the instrument that survives that migration, so leaving it unactioned forfeits the one discount mechanism that keeps pace with how the estate actually changes.
The flip side is the risk of over-correcting. The recommendation is not a licence to commit to the Advisor headline blindly: because the plan cannot be cancelled, an oversized commitment converts overpayment into a different waste, paying for committed capacity that goes unused. The impact of doing nothing is a recurring overpayment; the impact of doing it carelessly is a stranded commitment. The capability is the discipline of capturing the first without creating the second.
How do you commit safely and capture the saving?
Work the recommendation as a sizing decision, not a purchase. The order matters: establish the genuine baseline before you commit, so the plan runs fully utilised and you never owe for an unused hour.
1. Read Advisor's own numbers, not the brochure
Open the savings plan recommendation in Advisor or the benefit recommendations API and note the proposed hourly commitment, the estimated saving percentage and the coverage it buys. These are computed from your real usage over the look-back window, so they are the right starting point, but the look-back assumes recent usage continues.
2. Separate the always-on floor from the variable top
Identify the compute that runs every hour regardless of season or roadmap. That floor is what you commit to. The elastic top, anything that scales down overnight, is seasonal, or sits on a workload that may be retired or re-architected, stays on pay-as-you-go so it can never strand a commitment.
3. Size below the floor and choose the term
Set the hourly commitment a little below the genuine floor so it stays near fully utilised even on a quiet hour. Choose the term by certainty: three years for the deepest discount on baseline you are confident about, one year where you want a shorter horizon. Prefer a shared or management group scope so the discount floats across subscriptions rather than stranding in one.
4. Buy it as reviewed code and monitor utilisation
Purchase through a version-controlled Bicep alias rather than an unreviewed portal click, so the commitment is a deliberate, recorded decision. After it is live, watch the utilisation percentage in Cost Management; if it sits at or near 100 per cent you have sized it well, and you can consider a second, incremental plan for any new steady baseline.
# Option A: purchase via the Azure CLI (billing-benefits extension auto-installs).
# Size --commitment BELOW your genuine always-on floor so it stays fully utilised.
# A savings plan cannot be cancelled, so commit only to the baseline you are sure of.
az billing-benefits savings-plan-order-aliases create \
--order-alias-name "prod-compute-baseline" \
--display-name "Prod compute baseline" \
--applied-scope-type Shared \
--billing-scope-id "/subscriptions/<billing-subscription-id>" \
--billing-plan P1M \
--term P3Y \
--sku Compute_Savings_Plan \
--commitment "{amount:5.0,currency-code:USD,grain:Hourly}"
# Option B (preferred): the same purchase as a reviewed, version-controlled Bicep alias.
# Save as savings-plan.bicep and deploy with: az deployment tenant create -l <region> -f savings-plan.bicep
#
# targetScope = 'tenant'
# resource plan 'Microsoft.BillingBenefits/savingsPlanOrderAliases@2024-11-01-preview' = {
# name: 'prod-compute-baseline'
# sku: { name: 'Compute_Savings_Plan' }
# properties: {
# displayName: 'Prod compute baseline'
# billingScopeId: '/subscriptions/<billing-subscription-id>'
# billingPlan: 'P1M'
# term: 'P3Y'
# appliedScopeType: 'Shared'
# commitment: { amount: 5, currencyCode: 'USD', grain: 'Hourly' }
# }
# } Quick quiz
Question 1 of 5Azure Advisor shows 'Consider purchasing a savings plan for compute to unlock lower prices'. What exactly does a savings plan commit you to?
You scored
0 / 5
Keep learning
Go deeper on how Azure prices, sizes and applies a savings plan for compute across the eligible services.
- What are Azure savings plans for compute? The committed hourly model, eligible services and how it differs from a reservation.
- Savings plan recommendations How Advisor and the benefit recommendations API size a commitment from your real usage.
- Choose a savings plan commitment amount How to read the recommendation and size the hourly commitment to your baseline.
- Savings plan cancellation policies Why a savings plan cannot be cancelled, refunded or exchanged, and what conservative sizing protects against.
You can now treat the savings plan recommendation as one capability rather than a single click: read Advisor's own numbers, separate the always-on floor from the variable top, size the commitment below the floor on the right term, and buy it as reviewed Bicep before watching utilisation confirm the fit. The discount commits to spend rather than to a machine, so it survives the migrations that strand reservations.
Back to the library