Azure budgets cost nothing and charge nothing: a budget compares the actual or forecast cost of a scope with an amount once a day and sends emails at thresholds or triggers an action group, cost alerts gather budget, credit, quota and anomaly alerts in one list, scheduled alerts send saved cost views, and Azure Advisor computes recommendations and a score from utilisation and list prices. What makes any of them effective is not price but reach: no budget stops a resource, no alert arrives before the next daily run, and every Advisor saving is computed at retail prices.
Pricing dimensions
The table lists the mechanisms as dimensions: what each checks, in which scope it applies, what it triggers and what it cannot do. The cross-provider concept is in budgets, the threshold logic in budget alerts and thresholds.
| Mechanism | Scope and basis | What it triggers | What it cannot do |
|---|---|---|---|
| Budget | Management group, subscription, resource group; EA: billing account, department, enrolment account; MCA: billing account (in USD), billing profile, invoice section, customer; reset monthly, quarterly, annually, for pay-as-you-go, MSDN and Visual Studio subscriptions also per billing month; filters such as resource group, service, meter or tag; the basis is actual cost including reservation and purchase lines, without amortisation | Evaluation every 24 hours against data available after 8 to 24 hours; email normally within an hour of the evaluation; after its expiry date the budget is deleted | Resources stay untouched; a scope with several currencies is not evaluated; for a new subscription up to 48 hours can be missing |
| Thresholds on actual and forecast cost | At least one threshold in percent of the budget with an email address, up to five thresholds and five addresses per budget, range 0.01 to 1,000 percent; type "Actual" or "Forecasted" | A budget alert in the alert list and by email; roles as recipients and other languages only through the Budgets API | The forecast is Microsoft's model, not your own plan |
| Action group | Subscription and resource group only; up to five action groups per rule; notification by email, SMS, push to the Azure app, voice call; actions: Automation runbook, Azure Functions, Event Hubs, ITSM, Logic Apps, webhook and secure webhook | The only link from a budget to an action, such as a runbook that shuts resources down | Not on billing scopes; SMS, voice, push and email are rate-limited |
| Credit alert | EA only; 90 and 100 percent of the Azure prepayment | Automatic email to the account owners and an entry in the alert list | Not configurable, no other thresholds |
| Department quota alert | EA only; spending quota per department, at 50 or 75 percent for instance | Email to the department owners | No stop, no evaluation below the department |
| Anomaly alert | Subscription scope only; daily check 36 hours after the end of the day in UTC against a forecast from the last 60 days; up to five rules per subscription; needs Cost Management Contributor | One email per detected anomaly at the time of detection, with the resource groups with the largest changes and a portal link | Not for resource groups, billing scopes or Azure Government; no second send, no action group |
| Scheduled alert | Any saved cost view; built-in views in USD only; up to 20 recipients; daily, weekly, monthly, after invoice close or custom; end date at most a year ahead; optionally a CSV link | One email with a chart and a link, the CSV link valid on the day of sending, the data for seven days, at most 15,000 rows | No threshold, no comparison; not for management groups or table views |
| Advisor cost recommendations | Per subscription: shutting down or resizing VMs and scale sets (shutdown at P95 of maximum CPU under 3 percent, P100 of average CPU of the last three days up to 2 percent and network egress under 2 percent over seven days; look-back 7 to 90 days selectable), unattached disks, gateways without a connection, unprovisioned ExpressRoute circuits, empty App Service plans, Cosmos DB autoscale and empty containers, Log Analytics commitment tier and Basic Logs, reservations and Savings Plans | One recommendation with an estimated saving, selectable by CPU threshold per subscription | Saving at retail prices without your own discounts; existing reservations and Savings Plans are not considered; no recommendation for resources without utilisation data |
| Reservation recommendations | Hourly usage of the last 7, 30 and 60 days, simulation with and without a reservation, the quantity with the highest saving; considers existing reservations and Savings Plans | In Advisor only per subscription and with a three-year term where available; the whole billing scope only in the purchase dialogue under Reservations | Regularly shut-down VMs produce no recommendation; after a purchase the update takes up to three days, up to five for the shared scope |
| Advisor score | Per category 0 to 100 percent, the overall value as the mean; the cost value weights the retail price of the assessed resources, long-open recommendations count more, dismissed ones drop out | Updated at least once a day; after an implementation it takes at least 24 hours | Says nothing about the size of the spend; does not distinguish production from development |
| Purchase options | Advisor's reservation and Savings Plan recommendations lead into the purchase | Azure reservations, Azure Savings Plans | The purchase itself is a decision of the commitment strategy |
Invoices, exports and APIs
Invoices. None of these mechanisms appears on the invoice, and none changes it. A budget reads the cost data the export carries too, in the actual cost view; whoever wants to measure only Azure consumption without purchases filters the budget on PublisherType Azure and ChargeType Usage. On an MCA, a budget at billing account level evaluates in USD, at billing profile, invoice section and customer in the billing currency; the account types are described in Azure billing accounts.
Exports. The data a budget evaluates is available after 8 to 24 hours for EA and MCA, after up to 72 hours for pay-as-you-go; the same rhythm applies to the export, whose structure Azure cost exports describes. Advisor computes its saving with the pay-as-you-go rates, that is what the export carries as PayGPrice, not with UnitPrice or EffectivePrice; whoever checks the recommendation multiplies by their own rate. The alert list in the portal shows every alert with type, date, status (active or dismissed) and scope, and a dismissed alert can be reactivated.
APIs. Budgets are created through the Budgets API of the Consumption interface, the Azure CLI (az consumption budget), PowerShell (without notifications) or a Resource Manager template; MCA customers are told to use the REST API. Anomaly and scheduled alerts are scheduled actions, the anomaly rule with the kind InsightAlert and the view ms:DailyAnomalyByResourceGroup; Microsoft recommends a service principal, because the email is only sent while the creator still has read rights. Reservation recommendations come from the Reservation Recommendations API of the Consumption interface, action groups are created as Microsoft.Insights/actionGroups. What the portal offers beyond that is in Azure Cost Management.
Levers
Configuration. One budget per subscription with a threshold on actual and one on forecast cost is the minimum; the forecast threshold warns before the money is spent, the actual one proves it. Only the action group turns the alert into an action, such as a runbook that stops development VMs; the guardrails for that are described in guardrails and approval thresholds. One anomaly rule per subscription catches what a monthly budget misses, namely a daily jump within the budget; the concept is in anomaly detection. A weekly scheduled alert with a saved view by resource group brings the figures to the teams without them opening the portal (report subscriptions and delivery).
Purchase option. Advisor's reservation and Savings Plan recommendations are a starting point, not an order: they apply per subscription and with a three-year term, and the shared scope shows only in the purchase dialogue. After a purchase, wait three days before checking the second commitment form.
Architecture. Budgets follow the hierarchy: one budget on the billing profile for finance, one per subscription for the teams, one per resource group only where an action group is to hang. Advisor's resizing recommendations belong in the rightsizing process, those on unattached disks and empty gateways in the one for idle and orphaned resources; dismissed recommendations disappear from the score too, so tidying up pays in both directions.
Where it goes wrong
- The budget stopped nothing. A budget only notifies; without an action group with a runbook the resource keeps running, and action groups exist only on subscription and resource group.
- The alert came a day late. Data is available after 8 to 24 hours and evaluated every 24 hours; an anomaly is checked 36 hours after the end of the day. For reactions within hours a budget is the wrong tool.
- The budget does not match the invoice. Pay-as-you-go subscriptions bill from the sign-up day; a calendar-month budget compares a different period. Set the reset to the billing month.
- The MCA budget is in dollars. At billing account level Azure evaluates in USD even when the invoice comes in EUR; budgets in EUR belong on the billing profile.
- Several currencies, no alert. A management group with subscriptions in different currencies is not evaluated, and the alert stays silent.
- The anomaly email stays away. The creator has lost their read rights, the rule has expired, or on indirect EAs and partner MCAs the policy for showing costs is off; the sender is Microsoft's no-reply address at microsoft.com.
- The Advisor saving is wrong. It is computed at retail prices and ignores reservations and Savings Plans; on a change of VM family the recommendation can raise costs when reservations exist for the old family.
- Scheduled alert with the wrong currency or month. Built-in views send USD, and "after invoice close" needs a view on the previous month, otherwise only the first days of the current month arrive.
Example
A set-up example with Microsoft's documented limits, without amounts: for a production subscription a monthly budget is created with the wanted amount, reset monthly, expiry date a year ahead; the thresholds are 80 and 100 percent of actual cost and 100 percent of forecast cost, three of at most five, with a distribution list as the recipient, at most five addresses. An action group with email and webhook hangs on the budget, the development subscription gets the same structure plus a runbook that stops VMs. On both subscriptions one anomaly rule each is created, two of five possible, with Cost Management Contributor as the creator. A saved view "cost per resource group, previous month" goes weekly to up to 20 recipients with a CSV link, end date a year ahead. In Advisor the look-back for the VM recommendations is set to 30 days, which takes up to 48 hours, and the reservation recommendation is checked in the purchase dialogue with the shared scope instead of in Advisor. The example shows that the limits (five thresholds, five addresses, five anomaly rules, 20 recipients, one year of validity, a 24-hour rhythm) decide the set-up, not the budget amount.
Sources
Read on 2026-10-21. Microsoft Learn: Tutorial: create and manage budgets, monitor usage and spending with cost alerts, identify anomalies and unexpected changes in cost, save and share customized views, create and manage action groups in Azure Monitor, understand Cost Management data, understand usage details fields, optimize VM or VMSS spend by resizing or shutting down underutilized instances, cost recommendations, Azure Advisor, Advisor score, Azure reservation recommendations, EA billing administration on the Azure portal.