Azure reservations are one- or three-year commitments to a specific resource configuration, such as a VM size in a region; in return Azure bills matching usage at the reservation price instead of the pay-as-you-go price, every hour. A reservation is purely a billing discount and leaves resources untouched. An hour without matching usage is lost, and the whole term is paid regardless. For the bill, a reservation lowers the price of steady base load, and its value depends on matching resources running in the chosen scope every hour. It is Azure's counterpart to AWS Reserved Instances.

How it works

At purchase you fix the attributes the discount is bound to: SKU, region (where applicable), term and scope. The term is one or three years, and the Term field in the cost data shows 12 or 36 months. Payment is up front or monthly, at the same total according to Microsoft. Monthly payments run from the purchase date and, under a Microsoft Customer Agreement, can vary with the exchange rate of the local currency.

Azure applies the discount hourly, with Azure Databricks the only exception the overview names. When a VM runs for part of an hour, other matching VMs in the scope fill the rest. At the end of the hour the allocation is locked: usage above the reservation pays pay-as-you-go, unused hours are lost. When a resource is deallocated or deleted, the discount moves to another matching resource in the scope. A VM that is stopped but not deallocated, by contrast, is still billed and keeps consuming reserved hours.

A VM reservation covers compute cost only. The Windows licence, additional software, networking and storage are charged at normal rates, and spot VMs cannot be reserved. Other reservable services include SQL Database, Cosmos DB, Blob Storage, App Service and Premium SSD from P30, each with its own unit; reserved capacity for databases and managed services covers those programmes.

Scope

The scope decides where the discount applies: one resource group, one subscription, a management group (its subscriptions in the same billing context) or shared, meaning all eligible subscriptions in the billing context. That context is the enrolment under an Enterprise Agreement and the billing profile under a Microsoft Customer Agreement, below the billing account. Azure processes reservations in this order: resource group, subscription, management group, shared. The scope can be changed at any time after purchase, without a new transaction and without touching the term.

Instance size flexibility

When buying a Reserved VM Instance you choose between the settings "Optimize for instance size flexibility" and "capacity priority". With the first, the discount applies to every size in the same flexibility group, converted through a ratio: in the DSv2 group Standard_DS1_v2 has a ratio of 1 and Standard_DS4_v2 a ratio of 8, so a DS4_v2 reservation covers eight DS1_v2 or half of a DS5_v2 with its ratio of 16. Microsoft publishes the ratios through an API and PowerShell; according to the page, the CSV file has received no updates since 2026-05-09. With this setting, usage whose ConsumedService is Microsoft.Batch or Microsoft.MachineLearningServices, for example, also receives the discount, not only Microsoft.Compute.

Automatic renewal is on by default when a new reservation is bought; without it, pay-as-you-go applies after the term ends. Reservations can be exchanged and returned, with refunds capped at USD 50,000 per rolling 12 months and billing profile or enrolment. As read on 2026-10-16, Microsoft states that reservations bought from 2027-02-01 can no longer be exchanged where savings plans cover the service, such as Virtual Machines, App Service and SQL Database; reservations bought earlier keep one final exchange. Exchange, cancellation and expiry sets out the rules, and Azure savings plans for compute the more flexible commitment.

What it means for your cost

Cost Management delivers reservations for Enterprise Agreement and Microsoft Customer Agreement customers in two datasets:

LineActual costAmortized cost
PurchaseChargeType = Purchase, PricingModel = Reservationnot included
Used hoursChargeType = Usage, EffectivePrice = 0EffectivePrice = prorated hourly cost of the reservation
Unused hoursnot includedChargeType = UnusedReservation, quantity and amount per day
LinkReservationId, ReservationName, ProductOrderIdthe same fields

Actual cost matches the invoice: an upfront payment shows as a spike in the purchase month, covered VMs cost nothing, and Frequency separates OneTime (up front) from Recurring (monthly). Amortized cost spreads the purchase evenly over the days of the term, assigns it to the discounted resources as their effective cost, and reports unused hours as a line of their own that belongs to no subscription. Only that view is fit for showback and chargeback; list, billed, effective and amortized cost explains the measures. For subscriptions with pay-as-you-go rates (MS-AZR-0003P), cost analysis does not show amortized reservation cost.

For reconciliation, ProductOrderId is the stable key: purchase and usage lines carry the same order number, while ReservationId can differ because a split, merge, partial refund or exchange creates new reservations. RINormalizationRatio in AdditionalInfo shows the ratio at which the reservation was applied to a line. Azure cost exports covers exporting both datasets, and Azure Cost Management and Billing the portal views. The portal shows utilisation per reservation under Reservations, with its history and optional alerts on low utilisation.

Compared with AWS Reserved Instances:

AspectAzure reservationAWS Reserved Instance
BindsSKU, region, term, scopeinstance type, region, platform, tenancy
Scoperesource group, subscription, management group, sharedregional or zonal, sharing in the organisation
Size flexibilityflexibility group with ratiosfamily with normalisation factor, regional Linux/Unix RIs only
End of termrenewal on by default at purchaseno automatic renewal

Where it goes wrong

  • Scope too narrow. Symptom: UnusedReservation grows while matching VMs in another subscription pay pay-as-you-go. Cause: the reservation applies to one resource group or subscription only.
  • Stopped, not deallocated. Symptom: utilisation is high although some of the VMs do nothing. Cause: stopped VMs that are not deallocated are still billed and consume reserved hours.
  • Licence assumed to be included. Symptom: Windows VMs cost more than the reservation price despite full coverage. Cause: the reservation covers infrastructure only; the Windows licence is charged separately per vCPU.
  • Wrong flexibility group. Symptom: a reservation for Standard_D1 stays unused while Standard_DS1 runs. Cause: sizes with premium storage form a group of their own; Azure evaluates ServiceType in AdditionalInfo, not the meter.
  • Chargeback from actual cost. Symptom: covered resources show zero and the purchasing subscription carries the whole upfront payment. Cause: actual cost shows the purchase as the invoice does; only amortized cost spreads it to the users.

Example

On 2026-10-16 the Linux virtual machines pricing page showed, for a D2s v5 (2 vCPUs, 8 GiB) running Ubuntu in the Germany West Central region, in euros per hour:

Pricing modelPrice per hourSaving shown on the page
Pay as you goEUR 0.1012
Reservation, 1 yearEUR 0.0625about 38%
Reservation, 3 yearsEUR 0.0400about 60%

On the same day the Azure Retail Prices API returned EUR 547.3425 and EUR 1,050.6864 for these reservations, with unitOfMeasure = 1 Hour. That is the price of the whole term: divided by 8,760 or 26,280 hours it gives the hourly prices on the page. Microsoft converts the euro prices from US dollars and calls them estimates.

Sources

Read on 2026-10-16. Microsoft What are Azure Reservations?, Buy a reservation, How a reservation discount is applied, How the Azure reservation discount is applied to virtual machines, Virtual machine size flexibility with Reserved VM Instances, Get Enterprise Agreement and Microsoft Customer Agreement reservation costs and usage, View amortized benefit costs, Understand usage details fields, View reservation utilization after purchase, Automatically renew reservations, Self-service exchanges and refunds for Azure Reservations, Linux Virtual Machines pricing, Azure Retail Prices REST API overview.