I stumbled across an interesting Microsoft Azure issue as I examined my monthly bill. My bill wasn't outrageous, but it was higher than expected. As I dug deeper, I discovered the problem. I created a VM that was stopped, however, it was still being billed. The exact message was "Stopped (still incurring compute charges)." Naturally, I was confused. How could I be billed for a stopped VM?
Microsoft has two ways to stop a VM. One way releases resources, the other does not. Powering down the VM from within the OS does NOT give back the resources, so billing continues. Microsoft says you will "continue to accrue charges for the VM’s cloud service and the storage needed for the VM’s OS disk and any attached data disks. " To avoid billing, you must either use the API, or the resource manage interface to shutdown the vm.
VMs shut down via the interface will lack the "Stopped (but still incurring compute charges)" warning.
This should serve as a reminder to always watch billing statements closely. Moreover, review in fine detail what you are charged for and how. While there are similarities between the vendors, not everything is the same, especially when it comes to billing practices.
MS lists the differences between the stopped states in greater detail here: (https://blogs.technet.microsoft.com/gbanin/2015/04/22/difference-between-the-states-of-azure-virtual-machines-stopped-and-stopped-deallocated/)
Another post describes when you would one to do one vs the other (https://blogs.technet.microsoft.com/uspartner_ts2team/2014/10/10/azure-virtual-machines-stopping-versus-stopping-deallocating/)
The Build Azure blog has offers really cool instructions on how to schedule shutdowns for your VMs. It's definitely worth a read. (https://buildazure.com/2017/03/16/properly-shutdown-azure-vm-to-save-money/)