Azure savings plan billing
Microsoft introduced an Azure savings plan for compute services. This plan enables customers to save money by committing to an hourly spend on Azure compute services for either one or three years. To ensure your plan aligns with actual usage and costs, Partner Center now provides streamlined invoice and reconciliation line items. The daily rated usage data model is updated with new attributes to make the reconciliation process easier and faster.
File | New column | Description |
---|---|---|
Daily rated usage reconciliation (closed and open periods) | BenefitId | Unique identifier for each Azure savings plan. |
BenefitOrderId | Links daily charges to monthly costs (matches ReservationOrderId in the invoice reconciliation). |
|
BenefitType | To isolate savings plan charges, filter with SavingsPlan. |
API | New attribute | Description |
---|---|---|
Get invoice billed and unbilled commercial consumption line items | BenefitId | Unique identifier for each Azure Savings Plan. |
BenefitOrderId | Links daily charges to monthly costs (matches ReservationOrderId in the invoice reconciliation). |
|
BenefitType | To isolate savings plan charges, filter with SavingsPlan. |
Identify Azure savings plan charges:
- In your daily rated usage reconciliation line items, filter the
BenefitType
field by "SavingsPlan." - These line items show zero charges in the
BillingPreTaxTotal
field since savings plan discounts are applied to them.
Analyze cost efficiency:
Match identifiers:
- Link the
BenefitOrderId
(from daily rated usage line items) with theReservationOrderId
(in invoice reconciliation line items). - Cross-reference these IDs in your reports to align daily consumption with monthly savings plan costs.
- Link the
Calculate savings:
- Pay-as-you-go charges reflect standard rates without discounts.
- Compare pay-as-you-go costs to your savings plan rates to quantify your savings.
Note
Use only designated attributes: Rely exclusively on BenefitOrderId
and BenefitType
to track savings plan details—other fields might not provide accurate matches.
Important
Partner earned credit (PEC) exclusion: PEC doesn't apply to usage eligible for savings plans.
Frequently asked questions
Here are some questions and answers about reconciling savings plan usage and costs.
Where can you see the savings plan usage in the Azure portal?
To see the daily usage of your Azure savings plan in the portal:
- Go to your customer view.
- Select the savings plan you bought to check how much you used it in the last week, month, quarter, or any date range.
How do you reconcile the charges with the utilization percentage?
Use the Azure portal’s "Utilization over time" feature to monitor how effectively your savings plan aligns with actual usage. Follow these steps to reconcile charges and maximize value:
Step 1: Identify underutilized plans
- To identify savings plans with <100% utilization, filter them using
BenefitOrderId
orBenefitId
. - Goal: Address underused commitments and avoid wasted spend.
Step 2: Map covered resources
- To see which virtual machines, resource groups, or subscriptions are covered by your savings plan, check the
ResourceURI
in daily rated usage data. - Goal: Confirm resources are correctly aligned with your plan's scope.
Step 3: Verify daily coverage
- Sort daily usage data by
UsageDate
. - Look for
BenefitType
= "SavingsPlan"—these resources incur no daily charges under the savings plan. - If there's no
BenefitType
= "Charge" line item, no pay-as-you-go costs apply.
Step 4: Flag overcommitments
- To identify extra pay-as-you-go costs for plans exceeding hourly commitments, check for
BenefitType
= "Charge." - Goal: Catch overages early and adjust usage or plans.
How do you verify the effective rate of a savings plan?
To see the effective rate of a savings plan, you can either:
- Check amortized data in the Azure portal.
- Follow the calculation steps.
How do you verify effective rate, unused utilization, and amortized data?
To understand your savings plan usage and availability, review the amortized data for your subscription, resource group, or specific resource.
To download the data, use the instructions provided in the export cost data with an Azure Storage account SAS key.
Once downloaded, identify the savings plan's
resourceId
in the data. The attributes in this data are different from the Partner Center daily rated usage data. See the attribute mapping table for the mapping. The attribute mapping table helps you understand how the attributes in this data differ from the attributes in the Partner Center daily rated usage data. This mapping ensures you correctly interpret the data and avoid any confusion.To make it easier, sort or filter the transactions by date to quickly identify relevant charges. Check the charges for the resources. If the
pricingModel
is "SavingsPlan," it indicates no charge.Review the
effectivePrice
andcostInBillingCurrency
for the effective rate and charges.To determine the unused hours of the Azure savings plan:
- Filter by
productOrderId
to locate the order ID. - Look for the
chargeType
labeled "UnusedBenefits" to identify any unused benefits within your plan. This attribute helps you gauge how much of your plan remains unutilized. - Check the
quantity
value. A value greater than zero signifies the number of unused hours for that day, indicating how much of your savings plan remains unutilized.
- Filter by
How do you figure out the costs of the savings plan?
Here's an example of how we calculate savings plan costs. Suppose you purchase a savings plan for a virtual machine (VM) at USD 1/hour. This plan typically costs USD 4/hour with pay-as-you-go, leading to significant savings.
Consider this scenario:
If your savings plan offers a 50% discount on the usual rate of USD 4 per hour, you pay only USD 2 per hour with the plan.
To determine coverage, for every hour your VM runs, the plan covers 0.5 (S) hours. This duration is calculated by dividing your commitment amount USD 1 (A) by the discounted rate USD 2 (C). 1 (A) / 2 (C) = 0.5 (S). Each hour of VM operation is billed half at the discounted rate.
For the first half-hour at the discounted rate, you're billed USD (0.5 * 2) = 1 (H). For the next half-hour at the regular rate, you're billed USD (0.5 * 4) = 2 (J). So, the total cost per hour is USD 3 (K).
If the VM runs for 24 hours, the daily charge is USD 72. This cost is calculated by multiplying the hourly charge (USD 3) by the number of hours in a day (24): 24 (E) * 3 (K) = 72 (L).
When purchasing your savings plan, you can choose the billing frequency, either monthly or upfront.
The table illustrates daily charges based on different commitments, varying discount rates, or usage durations.
Committed $$ per hour (A) | Pay-as-you-go rate per hour (B) | Savings plan rate per hour (C) | Savings plan discount % (D) | Total hours per day (E) | Pay-as-you-go hours per day (F) | Savings plan hours per day (G) |
---|---|---|---|---|---|---|
1 (A) | 4 (B) | 2 (C) | 0.50 (D) | 24 (E) | 12 (E - G) | 12 (E * S) |
Assume the VM ran for 1 hour. | Apply the same calculation to cover the full 24-hour day. | |||||
Savings plan | Pay-as-you-go | Total | ||||
Quantity | 0.5 (A / C) ==> S | 0.5 (1 - S) ==> P | 1 | 96 (B * E ==> M) | ||
Effective costs with the savings plan | 1 (H) | 2 [B * [1 - (A / C)]] ==> J | 3 (H + J) ==> K | 72 (K * E) ==> L | 48 (B * F) ==> Q | 0 |
Savings | 1 | 0 | 1 | 24 (M - L) ==> N | ||
Savings % | 25% (N / M) |
Here's a realistic example of how much you can save with our hourly savings plan, designed to offer significant discounts compared to pay-as-you-go rates:
Savings plan comparison
If you buy a savings plan at USD 0.01 per hour, you're billed this amount first for the hours it covers instead of the pay-as-you-go rate of USD 0.3264 per hour for the VM, due to the discount.
This commitment translates to savings of USD 0.3164 per hour, which is approximately 97% discount.
Moreover, by committing to a year, you receive an extra discount of 31.43%, paying only USD 0.22381248 per hour.
Calculation of savings
The savings plan covers 0.01 (A) / 0.22381248 (C) hours per hour of VM usage, which is 0.04468026 (S) hours.
Every hour the VM runs, the savings plan covers 0.01 (A) / 0.22381248 (C) hours per hour of VM usage, which is 0.04468026 (S) hours. For the remaining 0.95531973 (P) hours, you pay the pay-as-you-go rate of USD 0.31181636 (J), or 0.95531973 (P) * 0.3264 (B).
Overall cost
You're billed USD 0.32181636 (K) per hour, which includes USD 0.01 (H) for the savings plan and USD 0.31181636 (J) for the usage exceeding the savings plan commitment.
Running the VM for 24 hours results in a daily cost of USD 7.72359270 (L), based on 24 hours multiplied by USD 0.32181636 (K). This cost includes both the savings plan rate and the pay-as-you-go rate for usage exceeding the savings plan commitment.
This structured approach not only clarifies potential savings but also highlights how committing to a plan can significantly reduce costs.
Important
The daily rated usage data presents the usage of each day your virtual machine operates. For a full 24 hours of operation, the data indicates a usage quantity of 22.9276737383009 and a pretax billing total of 7.48359270818142.
This information helps you monitor your usage patterns and identify cost-saving opportunities. By analyzing this data, you can pinpoint peak usage times or underutilized resources, ultimately helping you manage your expenses more effectively.
The table shows how daily charges vary by commitment.
Committed $$ per hour (A) | Pay-as-you-go rate per hour (B) | Savings plan rate per hour (C) | Savings plan discount % (D) | Total hours per day (E) | Pay-as-you-go hours per day (F) | Savings plan hours per day (G) |
---|---|---|---|---|---|---|
0.01 (A) | 0.3264 (B) | 0.22381248 (C) | 0.3143 (D) | 24 (E) | 22.92767373 (E - G) ==> F | 1.07232626 (E * S) ==> G |
Assume the VM ran for 1 hour. | Apply the same calculation to cover the full 24-hour day. | |||||
Savings plan | Pay-as-you-go | Total | ||||
Quantity | 0.04468026 (A / C) ==> S | 0.95531973 (1 - S) ==> P | 1 | 7.8336 (B * E ==> M) | ||
Effective costs with a savings plan | 0.01 (H) | 0.31181636 (B * P) ==> J | 0.32181636 (H + J) ==> K | 7.72359270 (K * E) ==> L | 7.48359270 (B * F) ==> Q | 0 |
Savings | 0.11000729 (M - L) ==> N | |||||
Savings % | 1.40% (N / M) |
Amortized and daily rated usage data attribute mapping
The Azure portal amortized data and the Partner Center daily usage data help you compare your savings plans charges and usage. Although these two data sources may not match exactly due to differences in calculation methods or reporting times, they can still provide a useful estimate of your savings plan's benefits.
Amortized data attribute | Partner Center daily rated data attribute |
---|---|
invoiceId | InvoiceNumber |
previousInvoiceId | N/A |
billingAccountId | N/A |
billingAccountName | N/A |
billingProfileId | N/A |
billingProfileName | N/A |
invoiceSectionId | N/A |
invoiceSectionName | N/A |
partnerTenantId | PartnerId |
partnerName | PartnerName |
resellerName | N/A |
resellerMpnId | N/A |
customerTenantId | CustomerId |
customerName | CustomerName |
costCenter | N/A |
billingPeriodEndDate | N/A |
billingPeriodStartDate | N/A |
servicePeriodEndDate | ChargeStartDate |
servicePeriodStartDate | ChargeEndDate |
date | UsageDate |
serviceFamily | N/A |
productOrderId | BenefitOrderId |
productOrderName | N/A |
consumedService | ConsumedService |
meterId | MeterId |
meterName | MeterName |
meterCategory | MeterCategory |
meterSubCategory | MeterSubCategory |
meterRegion | MeterRegion |
productId | ProductId + SkuId |
productName | ProductName |
subscriptionId | EntitlementId |
subscriptionName | EntitlementDescription |
publisherType | N/A |
publisherId | PublisherId |
publisherName | PublisherName |
resourceGroupName | ResourceGroup |
resourceId | ResourceURI |
resourceLocation | ResourceLocation |
location | N/A |
effectivePrice | EffectiveUnitPrice |
quantity | Quantity |
unitOfMeasure | UnitType |
chargeType | N/A |
billingCurrency | BillingCurrency |
pricingCurrency | PricingCurrency |
costInBillingCurrency | PricingPreTaxTotal |
costInPricingCurrency | PricingCurrency |
costInUsd | N/A |
paygCostInBillingCurrency | N/A |
paygCostInUsd | N/A |
exchangeRatePricingToBilling | PCToBCExchangeRate |
exchangeRateDate | PCToBCExchangeRateDate |
isAzureCreditEligible | N/A |
serviceInfo1 | ServiceInfo1 |
serviceInfo2 | ServiceInfo2 |
additionalInfo | AdditionalInfo |
tags | Tags |
partnerEarnedCreditRate | PartnerEarnedCreditPercentage |
partnerEarnedCreditApplied | N/A |
PayGPrice | N/A |
frequency | N/A |
term | N/A |
reservationId | N/A |
reservationName | N/A |
pricingModel | BenefitType |
unitPrice | UnitPrice |
benefitId | BenefitId |
benefitName | N/A |
provider | N/A |