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. You can use Partner Center invoices and reconciliation data to confirm that the savings plan you purchased aligns with your consumption and costs. 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 | A unique identifier for each Azure savings plan. |
BenefitOrderId | An identifier to link between the monthly cost and the daily charges based on the ReservationOrderId from the invoice reconciliation. |
|
BenefitType | To see Azure savings plan transactions, use the SavingsPlan filter. |
API | New attribute | Description |
---|---|---|
Get invoice billed and unbilled commercial consumption line items | BenefitId | A unique identifier for each Azure Savings Plan. |
BenefitOrderId | An identifier to link between the monthly cost and the daily charges based on the reservationOrderId from the invoice reconciliation. |
|
BenefitType | To see Azure savings plan transactions, use the SavingsPlan filter. |
To see Azure savings plans charges, filter BenefitType
by "SavingsPlan." These transactions have zero charges in BillingPreTaxTotal
. To effectively compare daily usage and charges with monthly savings plan costs, first match the BenefitOrderId
in the daily rated usage data with the ReservationOrderId
in the invoice reconciliation data and cross-reference these identifiers in the dataset.
Pay-as-you-go charges use standard rates, calculated based on regular pricing without discounts, highlighting the savings difference between standard and savings plan rates.
Note
Only use "BenefitOrderId" and "BenefitType" attributes to match savings plan costs. Other attributes might not work as expected.
Important
Savings plan discounts exclude partner earned credits (PEC).
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?
You can track and compare charges using the Azure portal's "Utilization over time" feature, which helps you monitor the effectiveness of your savings plan over a specific period.
Identify plans with utilization below 100% by querying for the
BenefitOrderId
orBenefitId
.To find the virtual machines covered by savings plans, check the
ResourceURI
in the daily rated usage data. Depending on your needs, you can apply the benefit to a specific resource, resource group, single subscription.Sort the daily rated usage data by
UsageDate
. Transactions labeled "SavingsPlan" asBenefitType
indicate those resources are covered by the savings plan and don't incur daily usage charges. If there are no transactions with "Charge" asBenefitType
, it means there are no extra pay-as-you-go charges for those resources.Repeat steps 2 and 3 to ensure that plans with overcommitments have pay-as-you-go charges, which help in identifying any extra costs incurred due to exceeding the savings plan limits.
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 pre-tax 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 |