Using Cost Explorer

Open Costs > Cost Explorer from the left sidebar. The page lays out as four columns: Subscriptions, Resource Groups, Resources, and a detail panel that opens when you select an entity.

Prerequisites

Cost-read permission required

Your StratoLens role must include cost-read access. Without it, the page renders a permission-denied message instead of the explorer.

At least one completed scan

Cost data appears after a scan has finished. Historical depth fills in over the first few hours as backfill runs in the background. See Automated Scanning for details.

First-run depth ramps up

A brand-new install starts with partial historical depth and fills in as backfill completes. The Cost Explorer does not display a banner while this is happening — you simply see fewer days of history initially. Expect up to roughly 6 months of history once backfill finishes.

Page Layout

The page has a header strip with filters and a four-column body. Costs in each column reflect the active date range, Show selection, and any filters.

Column 1 — Subscriptions
Each subscription with its total spend for the period beneath the name. Currency matches the subscription's Azure billing currency.
Column 2 — Resource Groups
Resource groups inside the selected subscription. Items with no real resource group (reservations, savings plans, SaaS, marketplace) appear under a virtual group called Purchases.
Column 3 — Resources
Individual resources in the selected resource group, each with its Azure resource-type icon. Historical resources (no longer in current inventory) render in muted text.
Column 4 — Detail Panel
Charts, metric cards, and meter breakdown for the selected entity. Opens once you pick a subscription, resource group, or resource.

Collapse a column

Once a column has a selection, a left-arrow button in its header collapses it to a thin vertical strip so the detail panel gets more room. Click the right-arrow to expand it again.

Aggregated views via the magnifying-glass

To see totals for an entire subscription or resource group without expanding it, click the magnifying-glass icon next to its name. The detail panel opens with a Subscription Aggregation or Resource Group Aggregation badge.

Header Controls

Date Range

Choose Current Month, Previous Month, Last 30 Days, Last 60 Days, or Custom Range. Selecting Custom Range reveals two date buttons next to the dropdown; click each to open a calendar popover and pick the start and end dates.

Range constraints

Up to 6 months of history is available, and the end date cannot be in the future. A custom range longer than 6 months is automatically snapped to a 6-month window with the same end date.

Last 30 Days and Last 60 Days are inclusive of today (today minus 29 or 59 days through today).

Show

Toggle which records count toward the totals: Resources, Purchases, or both. Leaving the dropdown empty shows everything; the dropdown reads All.

Historical

Includes resources that no longer exist in current inventory but had spend in the period (deleted, moved, or renamed). On by default so totals reconcile with Azure billing. Uncheck it for a forward-looking view of currently active spend only.

Amortize

Replaces the $0 cost that Azure reports for resources covered by a Savings Plan or Reservation with their real per-resource cost, so covered VMs and other resources surface what they're actually consuming from the commitment. Off by default. Hover the info icon next to the label for an in-app tooltip.

When on, every column total, detail-panel chart, metric tile, and contributor list across Cost Explorer updates to reflect amortized cost. When off, Cost Explorer shows as-billed actuals.

Bookmarkable URL state

The toggle persists in the URL as ?amortize=1, so amortized views can be bookmarked or shared. The parameter is omitted when the toggle is off, keeping default URLs clean. See Amortizing Savings Plan and Reservation Costs for the full picture.

Sort by

Controls ordering in columns 1 to 3: Alphabetical, Cost (High to Low), or Cost (Low to High).

Add Filters / Edit Filters

Opens the Filter Resources modal. When filters are active, the button shows a count badge and small badges nearby summarize what is filtered (for example, 2 resources, 3 tags). A Clear button next to it removes every active filter at once.

Filtering Resources

The Filter Resources modal applies filters to every column at once. Changes inside the modal stay local until you click Apply Filters; Cancel reverts everything to whatever was active before opening it.

Resource attribute filters

Resource Name
Free-text, case-insensitive substring match on display name. Applied client-side; results update as you type.
Resource Type
Searchable multi-select. Applied client-side.
Location
Searchable multi-select. Triggers a server-side refetch, so expect a brief delay versus name and type filters.

Tag filters

Each tag filter is a row with a key, an operator, and (for =) a value.

=
Tag key has the specified value.
exists
Tag key is present, regardless of value.
missing
Tag key is not present.

AND / OR mode

When two or more tag filters are active, an AND/OR toggle appears in the Tag Filters header. Default is AND (a resource must match every filter). Switch to OR to match resources that satisfy any one filter. The toggle is hidden when only one tag filter is active.

Find resources missing a tag

The missing operator is the fastest way to surface untagged spend. Filter by cost-center missing to find every resource without a cost-center tag, or owner missing to find resources with no owner assigned. Pair it with a date range to see how much that untagged spend adds up to.

The Detail Panel

The detail panel switches between four display modes via the buttons at the top: Daily, Weekly, Monthly, and Forecast. The Details button (eye icon) toggles a more technical view of the metric cards. View in Explorer in the top-right jumps to the same entity in the Inventory Explorer.

Display modes

Daily
Daily Cost Trends and Cumulative Cost Trends across the selected range.
Weekly
Daily and Cumulative Cost Trends plus a Weekly Cost Patterns bar chart aggregated by week.
Monthly
The default mode. On subscription and resource-group panels, also shows Top Cost Contributors — the 5 highest-cost resources with their share of the total.
Forecast
Available only for the Current Month preset. Projects month-end spend and labels confidence HIGH, MEDIUM, or LOW.

Top Cost Contributors is a fixed top 5

The list always shows the 5 highest-cost resources for the period. There is no control to expand it.

"Covered by" badges on resources

On the resource detail panel, when a resource is covered by one or more Azure Savings Plans or Reservations, a row of Covered by {commitment name} chips appears above the metric tiles, each marked with a shield-check icon and labeled with the friendly name you gave the commitment in Azure. Multiple chips can appear when a resource is covered by more than one commitment (for example, during partial coverage or mid-month changes).

These chips are informational. They appear whenever the underlying billing data shows coverage, regardless of whether the Amortize toggle is on or off — coverage is a property of the billing data, not of the view mode. See Amortizing Savings Plan and Reservation Costs for what to do once you spot one.

Forecast Mode

Forecast appears only when the date range is Current Month. Switching to any other preset auto-switches the panel to Monthly.

The projection is month-to-date so far plus (average of the last N full days × days remaining in the month). The 7d / 30d / 60d selector on the Cost Forecast chart picks the trend basis. Pick a smaller window if recent activity is more representative; pick a larger one to smooth out short-term swings.

Confidence label

HIGH / MEDIUM / LOW reflects how consistent recent spend has been.

  • HIGH — consistent patterns in the trend window.
  • MEDIUM — some variability.
  • LOW — highly variable spend or insufficient data.

Meter Breakdown

For an individual resource, the meter granularity dropdown at the top of the detail panel chooses how charts and tables break costs down by Azure billing meter.

Total
Single-line view, no breakdown.
Meter
Breaks costs down by meter category (for example, Storage, Compute).
Sub-meter
The default. Full hierarchy (category, sub-category, meter) for the most detailed breakdown.

Only for individual resources

The meter granularity dropdown is hidden on subscription and resource-group aggregated panels. It applies only when a single resource is selected.

In Meter or Sub-meter mode, the Daily Cost Trends chart becomes multi-line (one line per meter) and the Cumulative Cost Trends chart becomes a stacked area. Each meter has a colored swatch that matches its row in the meter table.

Legend interactions

Click a legend entry once to toggle that line on or off. Double-click to isolate it (hide everything else); double-click again to bring the others back.

Below the charts, the Meter Breakdown is a collapsible table with one row per meter and one column per time period. It is collapsed by default and sorted by total cost descending. Click the chevron to expand or collapse it.

Amortizing Savings Plan and Reservation Costs

When you buy an Azure Savings Plan or Reservation, you prepay for compute capacity. From that point on, every VM, database, or other resource that consumes the commitment shows up in Azure's default cost data at $0, while the prepaid commitment itself is billed in full as a single line item at purchase time. That is technically how Azure invoices the spend, but it is operationally misleading: covered workloads look free, the resources actually consuming your money are hidden, and right-sizing decisions become impossible.

Cost Explorer can surface the real per-resource cost for you. Turning on the Amortize toggle in the header replaces the $0 values on covered resources with what each one is actually drawing from the Savings Plan or Reservation, so you can see the real operational cost of the workload instead of just how Microsoft happened to invoice it.

Turning it on

Use the Amortize checkbox in the page header (next to Historical). See Header Controls for the full description of what changes when it's on.

The "Covered by" badge

On any individual resource's detail panel, a row of Covered by {commitment name} chips appears above the metric tiles whenever that resource is covered by one or more Savings Plans or Reservations. Each chip is labeled with the friendly name you gave the commitment in Azure (for example, VM_RI_B2TSV2); multiple chips can appear when a resource is covered by more than one commitment.

The badge is a coverage indicator, not a view-mode indicator. It appears whether or not the Amortize toggle is on, because coverage is a property of the underlying billing data. Its purpose is to tell you that the default $0 (or near-$0) cost for that resource is misleading and that turning on Amortize will surface the real number.

When to use this view

  • Right-sizing decisions on VMs that look like they cost $0 in the default view but are actually consuming significant prepaid capacity.
  • Comparing workload costs apples-to-apples across covered and uncovered resources.
  • Identifying which workloads are actually drawing down your Savings Plan or Reservation commitments.
  • Allocating real per-resource cost to teams, cost centers, or environments through tag filters.

Reconciling against Azure billing

Leave Amortize off when you need totals that line up with Azure's invoice. In that view, the prepaid Savings Plan or Reservation commitment shows as a single line item inside the Purchases virtual group and covered resources show $0 (or near-$0) for any meters drawn from it — exactly as Azure invoices the spend. The Purchases line is unchanged in the amortized view as well; what changes is that covered resources stop showing $0 and start showing their real per-resource cost, so subscription and resource group totals in the amortized view will run higher than the actuals view by that amount.

No commitments? No change.

If you haven't purchased any Savings Plans or Reservations, the Amortize toggle still appears, but it produces identical numbers to the default view — there are no covered resources to amortize. The Covered by badge will never appear in that case either.

Defaults & Behaviors

Defaults

Date Range
Current Month (1st of the calendar month through today)
Show
All (Resources and Purchases)
Historical
On
Amortize
Off
Sort by
Alphabetical
Display Mode
Monthly
Meter Granularity
Sub-meter
Tag Filter Mode
AND (when 2+ tag filters are active)
Maximum history
6 months

Amortized vs. actual cost

Cost Explorer defaults to Azure's as-billed actuals, where covered resources show $0 for any meters drawn from a Savings Plan or Reservation. Turning on the Amortize toggle replaces those $0 values with each resource's real per-resource cost. The toggle is per-session and persists in the URL as ?amortize=1. See Amortizing Savings Plan and Reservation Costs for the full discussion.

Partial-data window

The last 2 days are flagged Partial

Yesterday and today are flagged Partial in chart tooltips, with an "⚠️ Incomplete billing data" footer, and rendered as dashed lines. Azure billing data for those days has not been finalized yet, and typically firms up within 24 to 48 hours. Don't read short-term spikes there as anomalies.

Currency

Per-subscription billing currency

Each subscription is displayed in its own Azure billing currency (EUR, GBP, USD, etc.). There is no FX conversion across subscriptions billed in different currencies. A tenant with multiple billing currencies will show different symbols in different subscriptions and aggregations.

Refunds and credits

Refund and credit entries are preserved as negative values in totals and trend lines so totals reflect true net spend. Negative numbers in charts and metric cards are intentional.

Historical resources

A historical resource is one with cost in the period but no longer in current inventory (deleted, moved, or renamed). Historical resources and resource groups render in muted text. The visual cue is the only indicator; there is no separate badge.

The Purchases virtual group

Reservation orders, savings plan orders, SaaS resources, and subscription-scoped marketplace charges (for example, GitHub Enterprise) appear inside a virtual resource group named Purchases under each subscription. It is not a real Azure resource group. Use the Show dropdown to include or exclude purchases.

Comparison to prior period

Metric cards compare the selected window against the prior period of the same shape (Last 30 Days vs. the Prior 30 Days, for example). If the prior period would fall outside the available 6 months of history, the comparison is omitted instead of partially computed.

Troubleshooting

A subscription is missing from column 1

What to check

Either the subscription had zero spend in the selected date range (broaden the range or toggle Historical on), or the managed identity lacks read access to that subscription's cost data. Confirm role assignments at the subscription level.

The Forecast button is missing

What to check

Forecast is only available for the Current Month preset. Switch the date range back to Current Month.

A custom date range got shortened

What to check

Custom ranges are capped at 6 months. A longer span auto-snaps to a 6-month window with the same end date.

A recently added tag is not in the filter dropdown

What to check

Tag keys and values are sourced from the last completed scan. A newly added tag appears after the next scan finishes.

The page is empty or says "No subscriptions found"

What to check

Either no subscriptions had spend in the selected range, the active filter set is too restrictive, or the first scan has not completed. Click Clear to drop filters, broaden the date range, or check scan status.

Resources appear in "Purchases" that aren't in the Azure portal

Why

Purchases is a virtual group StratoLens creates per subscription to corral reservation orders, savings plans, SaaS, and subscription-scoped marketplace charges. Use Show to switch to Resources only if you want to exclude them.

Why do my reservation-covered VMs show $0?

What to check

Azure reports zero against the resource and charges the commitment as a single line item in the Purchases group while a Savings Plan or Reservation is in effect. Turn on the Amortize toggle in the header to see each covered VM's real per-resource cost in place of those $0 values. See Amortizing Savings Plan and Reservation Costs.

My subscription totals changed when I toggled Amortize. Which is correct?

Both — they answer different questions

With Amortize off (the default), the view matches Azure's invoice line items exactly: the prepaid commitment shows as a Purchases entry and the consuming resources show $0. With Amortize on, those covered resources show their real per-resource cost instead — useful for right-sizing and per-workload allocation. Use the actuals view when you need to reconcile against Azure billing, and the amortized view when you need to understand what each workload is really costing you.

I see a "Covered by" badge but the Amortize toggle is off — is that a bug?

No, that's by design

The Covered by badge always appears when a resource is covered by a Savings Plan or Reservation, whether or not the Amortize toggle is on. It's there to tell you that the actuals view ($0 or near-$0) is misleading for that resource and that turning on Amortize will surface the real cost.