Check whether a stopped Azure VM is still billed
On this page
A stopped VM can still incur instance-usage charges, so check its power-state code before treating shutdown as a cost stop. If it shows PowerState/stopped, ask the VM owner whether it should remain allocated. PowerState/deallocated is not billed for instance usage, but disks and networking can still incur charges.
What you need first
- Tool
- Azure PowerShell is a command-line tool for Azure resources. Start an authorized session in the intended subscription. Get-AzVM with -Status retrieves the VM instance view, including power-state status.
- Access
- If you cannot run the command, ask an authorized Azure colleague to provide the read-only instance-view result for the target subscription, resource group and VM.
- If you do not use that tool
- Send an authorized Azure engineer the subscription, resource group and VM name. Ask them to run the command below and return the PowerState Code, DisplayStatus and execution time.
Why this is worth a look
Skipping this check can leave a guest-shutdown VM allocated on a host and billed for instance usage. Deallocated means Azure released the lease on the underlying hardware, but Azure notes that disks and networking can continue to incur charges. Use the power state, not the provisioning state, for this decision.
Run this check
CHECKLISTRun these read-only PowerShell steps for one ordinary Azure VM in the intended subscription. The output is a last-known status label, not usage hours or a monetary amount.
1. Confirm the target is one ordinary Azure VM, not a VM scale set instance, and confirm the session uses the intended subscription.
2. Replace <resource-group> and <vm-name>, then run:
$vm = Get-AzVM -ResourceGroupName "<resource-group>" -Name "<vm-name>" -Status
$vm.Statuses | Where-Object { $_.Code -like "PowerState/*" } | Select-Object Code, DisplayStatus
3. Record Code, DisplayStatus and when the command ran.
4. Classify the result: PowerState/stopped is billed for instance usage; PowerState/deallocated is not billed for instance usage. Starting, Running and Stopping are billed. Creating and Deallocating are not billed for instance usage.
5. If no PowerState code is returned, do not infer that instance usage is unbilled. Retry the read-only retrieval or use Azure Resource Health.How to confirm it
- 01
Choose the VM and scope
Record the subscription, resource group and VM name for one ordinary VM you believe is no longer incurring instance-usage charges. Use the colleague handoff if you cannot run Azure PowerShell.
- 02
Read the instance power state
Run the read-only PowerShell lines in the command below, or review your colleague's result. Use the PowerState code, not a ProvisioningState code such as Succeeded.
- 03
Decide what to review next
Ask the VM owner whether a billed, stopped VM should remain allocated. For a deallocated VM, review disks and networking separately because those resources can continue to incur charges.
Before making changes
Treat the result as Azure's last known power state, not proof of historical charges. This assumes one ordinary VM, an authorized Azure PowerShell context for the intended subscription, and the documented Get-AzVM instance-view output. Transitional states have their own billing treatment, so do not infer from a missing or unfamiliar code.