Share via

Seeing actual savings with a saving plans on compute in Azure Cost Management

Rune Gulbrandsen 115 Reputation points
2026-03-31T12:35:18.19+00:00

A bit background first. We have an CSP agreement for our Azure environment, and we have utilized saving plans on compute resources to reduce the costs. But we have a hard time seeing ANY savings at all. All calculations indicates that even though we pay for the plan we are still paying full price in total as we didn't have a saving plan when looking at the costs.

As far as I have understood saving plans is that if I e.g. (for simplicity) purchases a saving plan covering 100 hours where each hour is 0.80 USD, the saving plan price is applied to 100 hours of computing time and if I use 120 hours the first 100 hours is the saving plan price while the last 20 hours is PAYG price (or the price the CSP has applied). So, if the saving plan costs 80 USD and each hour of computing cost is 1 USD outside of the saving plan, we should pay 100 USD ((100 hours * 0.80 USD) + (20 hours * 1 USD)).

In addition, it is of my understanding that ALL compute costs; no matter if it is covered by the saving plan or not; is moved from the compute resource itself to the saving plan as long as the compute resource is within the scope of the saving plan applies to. So, when I look at that those compute resources that the saving plan can affect in Cost Management with "Actual Costs"* it will show 0 USD, and the saving plan will be the sum of ALL compute costs within the scope of that saving plan. To see the "real" cost for a compute resource, Microsoft has utilized a concept called "Amortized Costs"** that break down the saving plan purchases and associate those with the compute resources it affects. So, in my previous example if the there is only one compute resource, I should see the cost of that resource being 100 USD and there would not be any saving plan cost. However, what I see when I look at the "Amortized Costs" is 120 USD (that is full price).

I asked Gemini which gave me an answer that was more or less "The CSP needs to activate a policy called "View Charges" in the partner center for your profile", but our CSP only states "Everything is activated in our portal". So, I'm unsure if Gemini is correct or the CSP.

So, my questions are:

  1. Is my impression correct on how saving plans, cost management actual costs and amortized costs works?
  2. If it is correct (or at least partially), why does the "Amortized Costs" report incorrect?
  3. Are there any settings that a CSP need to set (as mentioned by Gemini) to let us see Amortized Costs as documented by Microsoft and others***?

*Microsoft defines "Actual Costs" as "Shows raw usage and purchases for Azure and third-party Marketplace offerings as they will be shown on the invoice."

**Microsoft defines "Amortized Costs" as "Breaks reservation purchase charges down and spreads them evenly across the lifetime of the term. Amortized reservation costs are associated with the resources which incurred the us."

***References:

Azure Cost Management
Azure Cost Management

A Microsoft offering that enables tracking of cloud usage and expenditures for Azure and other cloud providers.

0 comments No comments

Answer accepted by question author
  1. Suchitra Suregaunkar 11,805 Reputation points Microsoft External Staff Moderator
    2026-03-31T18:42:27.75+00:00

    Hello Rune Gulbrandsen

    Thank you for posting your query on Microsoft Q&A platform.

    Thanks for sharing the detailed information.
    Your understanding of how Savings Plans are intended to work is largely correct. The confusion you’re seeing comes from a documented limitation with CSP subscriptions, rather than a configuration issue.

    Under Enterprise Agreement (EA) and Microsoft Customer Agreement (MCA), Azure Cost Management provides enhanced Savings Plan reporting. In those agreement types:

    • Actual Cost shows usage covered by a Savings Plan with an effective price of zero.
    • Amortized Cost redistributes (amortizes) the Savings Plan purchase back to the resources that consumed the benefit, making the discounted cost visible at VM/resource level.

    However, Microsoft states that this enhanced Savings Plan cost and usage experience is only available for EA and MCA, not CSP.

    Because your subscription is under a CSP agreement, Azure Cost Management does not re‑allocate Savings Plan charges back to individual compute resources.

    As a result:

    • Compute resources continue to appear at full PAYG cost in both Actual Cost and Amortized Cost views.
    • This does not mean the Savings Plan is ineffective.
    • The discount is applied at the CSP billing/invoice level, not exposed at the customer subscription’s resource-level cost analysis.

    There is also no CSP-side or Partner Center setting (such as a “View Charges” policy) that changes this behavior. The limitation is agreement-based, not a missing configuration.

    For CSP subscriptions, Microsoft’s guidance is to validate Savings Plan benefits using:

    • The CSP invoice, or
    • The partner reconciliation/consumption report provided by your CSP

    These are the authoritative sources where the Savings Plan discount is applied and reflected.

    Reference:
    View savings plan cost and usage:
    https://learn.microsoft.com/azure/cost-management-billing/savings-plan/utilization-cost-reports

    The Savings Plan is still providing value, but the discount visibility differs from EA/MCA and must be confirmed through CSP billing data rather than Azure Cost Analysis at the resource level.

    If you need any further assistance, please feel free to reach out.

    If you found the comment helpful, please consider clicking "Upvote it".

    Thanks,
    Suchitra.


1 additional answer

Sort by: Most helpful
  1. Q&A Assist
    2026-03-31T12:36:09.1233333+00:00
    AI generated content. This question contains an answer created with AI from Q&A Assist. Learn more
    1. Understanding of savings plans, Actual cost, and Amortized cost

    The conceptual understanding is mostly correct, with a few clarifications based on how Azure Cost Management exposes savings plan data:

    • Savings plans are an hourly spend commitment. Each hour, eligible compute usage is discounted until the hourly commitment is fully consumed; any remaining usage that hour is charged at pay-as-you-go (or negotiated) rates.
    • The discount is applied first to the usage that yields the greatest savings relative to pay-as-you-go, then to the next-best, and so on, until the commitment is exhausted for that hour.
    • The benefit is strictly hour-by-hour and “use-it-or-lose-it”; unused commitment in one hour does not roll over to another hour.

    In Cost Management data:

    • Actual Cost
      • Shows what appears on the invoice.
      • For usage that receives a savings plan discount, EffectivePrice is zero.
      • Savings plan purchase records appear here as separate cost lines with PricingModel = SavingsPlan and ChargeType = Purchase.
      • So, the compute resource usage lines that are covered by the savings plan show cost = 0 (for the usage portion), and the savings plan purchase line(s) carry the commitment cost.
    • Amortized Cost
      • Mirrors Actual Cost but changes how savings plan-covered usage is priced.
      • For usage that gets a savings plan discount, EffectivePrice is the prorated cost of the savings plan for that usage, not zero.
      • This view:
        • Allocates the savings plan cost down to the individual resources, resource groups, subscriptions, or tags that consumed the benefit.
        • Adds ChargeType = UnusedSavingsPlan lines for any unused hourly commitment.
        • Does not include the original savings plan purchase records.

    So, in the simplified example:

    • If there is only one VM and its usage is fully within the savings plan commitment, in Amortized cost the VM’s usage lines would reflect the amortized savings plan cost (e.g., 80 USD total) plus any pay-as-you-go usage beyond commitment. There would be no separate savings plan purchase line in Amortized cost.

    This aligns with the documented behavior of Actual vs Amortized cost and how savings plan data is exposed.

    1. Why Amortized Cost might appear to show “full price”

    From the documented behavior, Amortized cost should not simply show the original pay-as-you-go price if the savings plan is being applied. Common reasons the numbers appear as “full price” include:

    • Looking at the wrong pricing model or charge type
      • To see savings plan utilization, Amortized cost data must be filtered or grouped by PricingModel = SavingsPlan.
      • If only PricingModel = OnDemand or all pricing models are viewed together without grouping, it can be hard to distinguish which portion is discounted vs on-demand.
    • Not isolating savings plan-covered usage
      • To see the monetary value of savings plan consumption, filter Amortized cost for PricingModel = SavingsPlan and then group by subscription, resource group, resource, or tag.
      • The Cost column in this filtered view represents the amortized savings plan cost (including used and unused portions) allocated to those entities.
    • Underutilized savings plan
      • If the savings plan is underutilized, Amortized cost will include ChargeType = UnusedSavingsPlan lines.
      • These unused charges are part of the total savings plan cost and reduce the effective savings. If these are not considered, it can look like there is “no savings” because the unused commitment is still billed.
    • Comparing to the wrong baseline
      • To see savings, the documented method is:
        1. In Amortized cost, filter PricingModel = SavingsPlan.
        2. Compute the hypothetical pay-as-you-go cost: UnitPrice * Quantity (or PayGPrice * Quantity for list price).
        3. Sum Cost for the same lines to get what was actually paid under the savings plan (including unused commitment).
        4. Subtract: Pay-as-you-go cost – Savings plan cost to get savings.
      • If only the Cost column is compared to some other view without this calculation, it may appear that there is no benefit.
    • Fully utilized vs underutilized
      • When fully utilized, there will be no UnusedSavingsPlan quantity; all commitment is allocated to usage and savings are maximized.
      • When underutilized, the UnusedSavingsPlan cost is effectively “waste” and can make the total spend look similar to or higher than pure pay-as-you-go.

    Given the documentation, if Amortized cost is showing exactly the same total as a pure pay-as-you-go scenario, the most likely explanations are underutilization or comparing without using the recommended UnitPrice/PayGPrice vs Cost method.

    1. CSP settings and visibility of Amortized Cost

    The documentation for savings plan cost and usage does not describe any CSP-specific “View Charges” toggle as a prerequisite for seeing Amortized cost behavior. Instead, it states:

    • Savings plan costs and usage are available in Cost Management for EA and MCA usage.
    • In cost analysis:
      • Actual cost is the default.
      • Switching to Amortized cost shows savings plan purchases broken down and associated with the resources that used the benefit.
      • Grouping by Charge Type or Pricing Model (including SavingsPlan) exposes the savings plan vs on-demand breakdown.
      • Grouping by Benefit and using BenefitId / BenefitName identifies costs related to specific savings plan purchases.

    For common tasks, the documented steps to analyze savings plan costs and savings are:

    • To get underutilized savings plan quantity and costs:
      • Use Amortized Cost data.
      • Filter ChargeType = UnusedSavingsPlan and PricingModel = SavingsPlan.
      • Optionally filter by BenefitId or ProductOrderId.
    • To determine savings resulting from savings plans:
      • Get Amortized cost data and filter PricingModel = SavingsPlan.
      • Compute estimated pay-as-you-go cost: UnitPrice * Quantity (or PayGPrice * Quantity).
      • Sum Cost to get what was actually paid under the savings plan (used + unused).
      • Subtract to get estimated savings.
    • To charge back savings plan costs:
      • Use Amortized cost data and group by resource, resource group, tags, or subscription.
      • The EffectivePrice for discounted usage is the prorated savings plan cost, enabling correct internal chargeback.

    No additional CSP-side configuration is described as required for these capabilities to function. The behavior is controlled by the Cost Management data model (Actual vs Amortized) and the filters/groupings applied in cost analysis or exports.

    If the portal is set to Amortized cost and the expected fields (PricingModel, ChargeType, BenefitId, ProductOrderId, PayGPrice, UnitPrice) are present but the numbers still do not reconcile when following the documented calculations, this would indicate a scenario that should be investigated with Azure support using exported Amortized cost data.


    References:


Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.