Azure VM pricing is compute time per size, operating system and region, plus the licence share for Windows Server or SQL Server, the managed disks, public IP addresses and outbound traffic, each of which Azure meters separately. On the bill, compute time of instances that run around the clock almost always dominates, followed by the disks, which keep billing while the VM is deallocated.

Pricing dimensions

Azure keeps one meter per VM size, operating system and region: the meter is the unit Microsoft measures and prices, and every row of the cost export belongs to exactly one. A VM therefore never produces one row but a bundle of compute, disks, IP addresses and bandwidth.

DimensionUnitWhat drives itOptional
ComputeHour per size, operating system and region, billed by full minutesSeries and size (vCPU, memory), time spent in the states Starting, Running, Stopping and Stopped (allocated)No; it stops only in the Deallocated state
Licence share for Windows Server or SQL ServerIncluded in the Windows meter of the size; SQL Server as its own meterOperating system and image; with Azure Hybrid Benefit the VM drops to the Linux rateYes, through Azure Hybrid Benefit or Linux
Spot capacityHour per size at a variable priceSpare capacity in the region and size; maximum price in USD; eviction with 30 seconds noticeYes; not for the B series and promo sizes
Dedicated HostHour per host SKUHardware type and region, whatever the number of VMs placed on itYes
Temporary diskIncluded in the VM priceSizes with a d in the name (for example Dadsv5) carry local storage that is lost on deallocationNo, a property of the size
Ephemeral OS diskNo disk charge; with a Standard SSD or Premium SSD base disk, that disk's chargeOS disk on the VM's local storage instead of Azure StorageYes, stateless workloads only
Managed disksGiB tier per month, prorated by the hourOS and data disks, which keep billing while the VM is deallocatedNot for the OS disk (managed disks)
Public IP and bandwidthHour per IP, GB outboundEvery public address and every byte that leaves the regionYes (bandwidth and networking)
Purchase optionReservation or savings plan instead of the list priceOne- or three-year term, scope and size flexibilityYes (Azure reservations, Azure savings plans)

According to the pricing page, Microsoft charges for the full minutes a VM runs and not for leftover seconds; there is no per-second billing for virtual machines. A VM shut down from inside the guest stays in the Stopped (allocated) state and keeps consuming compute time; only deallocating releases the hardware and ends the meter. Disks and networking bill in every state.

The series sets the price per vCPU: B stands for burstable sizes with credits, D for general purpose, E for memory optimised, F for compute optimised, L for storage-heavy local disks, N for GPU and H for HPC. Letters after the size name features, such as a for AMD processors, p for ARM processors, d for a temporary local disk and s for premium storage support; the version number at the end separates hardware generations, and a newer generation is not automatically dearer. What each size costs in each European region is in the instance overview; the dimensions across all three providers are in virtual machines and instance families.

Spot bills the current variable price of the region and size, never more than the standard price. You set the maximum price in US dollars even when your account is billed in euros; with the value -1 the VM is evicted for capacity only, not for price. After an eviction with the Deallocate policy the disks stay and keep billing; with Delete they are removed with the VM.

A Dedicated Host is billed per host hour however many VMs run on it; the VMs themselves appear in the bill at a price of 0, while licences, storage and networking are billed as usual. The host price follows the VM family, the hardware type and the region, and it is relative to the largest size the host can take.

How it appears in your billing data

In the cost export, compute sits under MeterCategory Virtual Machines. MeterSubCategory names the series and operating system, such as Dsv5 Series for Linux and Dsv5 Series Windows for Windows, and MeterName the size without the Standard prefix, such as D4s v5; spot rows carry Spot in MeterName and SkuName, older low-priority rows Low Priority. UnitOfMeasure is 1 Hour, and Quantity holds the hours run with decimals for the minutes. ConsumedService is Microsoft.Compute, and ResourceId ends in virtualMachines/ and the VM name or, for scale sets, in virtualMachineScaleSets/ and the scale set name; the VM name then lives only in AdditionalInfo.

AdditionalInfo carries ImageType, ServiceType with the exact size and UsageType: ComputeHR is the compute time, ComputeHR_SW the software of a marketplace image with its own rate. A Windows VM with Azure Hybrid Benefit is billed at the Linux rate and shows Windows_Server BYOL in ImageType. PricingModel distinguishes OnDemand, Spot, Reservation and SavingsPlan; on Enterprise Agreements the pricing currency of spot rows is USD whatever the billing currency. MeterRegion names the meter's region and ResourceLocation the resource's; for VMs they are the same region in different spellings.

Not under Virtual Machines are the disks (service Storage, products such as Premium SSD Managed Disks), the public IP addresses and the bandwidth, which carry their own networking meters, and the SQL Server licence of a SQL VM. To see the full cost of a VM, group by ResourceGroup or by tags, not by MeterCategory. The export itself is described in Azure cost exports.

A virtual machineVirtual Machines: the compute hourby series, size and operatingsystem; the pricing model OnDemand,Spot, Reservation or SavingsPlanOther meters: the disks underStorage, the public IP address andthe bandwidth under networking,a SQL VM's licence on its ownThe full cost: grouped byresource group or tags,not by meter category
A VM's compute sits under one meter category, its disks, addresses and bandwidth under others, so its full cost shows only by resource group or tags

In the FOCUS export, ChargeType Usage becomes ChargeCategory Usage, and so does the unused part of a reservation; PricingModel OnDemand becomes PricingCategory Standard, Spot becomes Dynamic, and Reservation and SavingsPlan become Committed. MeterName lands in SkuMeter, category and subcategory in x_SkuMeterCategory and x_SkuMeterSubcategory. Microsoft derives ServiceName from ConsumedService and the resource type, so a VM's bandwidth and compute fall under the Virtual Machines service together (FOCUS columns).

Levers

Configuration: size is the largest lever because the price within a series grows linearly with the vCPUs; rightsizing to the next smaller size halves the compute line, and the B series fits workloads with short bursts. Deallocating instead of stopping ends compute time; fixed running hours for development and test environments are covered in scheduling and auto-scaling. Azure Hybrid Benefit takes the Windows share out of the meter where licences with Software Assurance exist; the rules are in licences in the cloud. An ephemeral OS disk saves the OS disk on stateless scale sets.

a steady baselineinterruptible batchor testa peak, or longidle periodsConfiguration first: one sizesmaller halves the compute line;the B series for bursts; deallocate,not stop; Hybrid Benefit forWindows licencesThen, by the shapeof the load?A reservation for one sizein one region, or a savingsplan across sizes and regionsSpot capacityScale sets with auto-scaling,or Container Apps andFunctions instead of a VM
Configuration first, then the purchase option by the shape of the load, and the host only where isolation or licensing requires it

Purchase option: for a steady baseline, reservations lower the price of one size in one region and a savings plan lowers the hourly compute amount across sizes and regions; which of the two fits is the subject of commitment strategy. Spot capacity is the option for interruptible batch and test load (spot and preemptible capacity), and a Dev/Test subscription removes the Windows licence share for development environments (Dev/Test pricing).

Architecture: scale sets with auto-scaling replace permanent instances sized for the peak; Container Apps or Functions take workloads with long idle periods off the VM entirely (Container Apps, Functions and App Service). Dedicated Hosts pay off only where isolation or licensing rules require them, because the host is paid in full even when half empty.

Where it goes wrong

  • The VM is off, the meter runs. A shutdown from inside the guest leads to the Stopped (allocated) state, which is billed like Running. Check the portal or the instance view for PowerState/deallocated; only that state is free.
  • Windows is paid twice. A Windows VM without licenseType set pays the licence share in the meter although licences with Software Assurance exist. Its rows lack Windows_Server BYOL in AdditionalInfo; the switch changes a metadata flag only and needs no restart.
  • Deleted VM, running disks. After a VM is deleted, its OS disk, data disks and public IP stay unless their delete option was set. Look for rows under Storage and networking whose resource group holds no VM any more (idle and orphaned resources).
  • Spot VMs after eviction. With the Deallocate policy, evicted spot VMs still count against quota and their disks keep billing. For batch load, Delete is the right policy.
  • The host is empty. A Dedicated Host bills per hour even with no VMs on it. Check resources of type hosts that have no VM rows at price 0 beside them.
  • Software, not only compute. Rows with UsageType ComputeHR_SW are the rate of a marketplace image. The rate is shown on the image in the marketplace; an image priced Free has no such meter.
  • The region does not match. MeterRegion and ResourceLocation spell regions differently, for example DE West Central and germanywestcentral. Grouping by region needs one of the two columns normalised.

Example

List prices from the Azure Retail Prices API in EUR for Germany West Central, read on 2026-10-21: a Standard_D4s_v5 (4 vCPU, 16 GiB) costs EUR 0.2024 per hour with Linux and EUR 0.3643 per hour with Windows; the difference of EUR 0.1619 per hour is the licence share, and the Dev/Test meter of the same Windows size stands at EUR 0.2024, the Linux rate. The half-sized Standard_D2s_v5 costs EUR 0.1012 per hour with Linux. As a spot VM the D4s v5 stood at EUR 0.0374 with Linux and EUR 0.0673 with Windows per hour at the time of reading; the spot price moves. A Dedicated Host of type Dadsv5 Type1 costs EUR 6.7758 per hour whatever runs on it. The figures show that the price within a series grows linearly with size, that the Windows share of this size exceeds the spot price of the whole VM, and that spot stood well below a fifth of the list price on the read date.

Sources

Read on 2026-10-21. Prices: Azure Retail Prices API, Standard_D4s_v5 in Germany West Central in EUR, Standard_D2s_v5, Dedicated Host, Azure Retail Prices API reference, Linux Virtual Machines pricing page. Billing data: Cost details fields, Understanding Azure virtual machine usage, FOCUS cost and usage details schema, Convert Cost Management data to FOCUS, What is FOCUS. Service: States and billing status, Virtual machine sizes overview, VM size naming conventions, Azure Spot Virtual Machines, Azure Hybrid Benefit for Windows Server, Ephemeral OS disks, Azure Dedicated Hosts.