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 compare daily usage and charges with monthly savings plan costs, match the BenefitOrderId
in the daily rated usage data and the ReservationOrderId
in the invoice reconciliation data. Pay-as-you-go charges use standard 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?
To compare charges and track your savings plan's performance, use the Azure portal's "Utilization over time" feature.
- Query for the
BenefitOrderId
orBenefitId
of plans with utilization below 100%. - To find the virtual machines that savings plans cover, look at the
ResourceURI
in the daily rated usage data. You can apply the benefit to a resource, resource group, subscription, or multiple subscriptions. - Sort the daily rated usage data by
UsageDate
. Transactions with "SavingsPlan" asBenefitType
don't have daily usage charges. They're covered by the savings plan. If you see no transactions with Charge asBenefitType
, the resources have no pay-as-you-go charges. - Repeat steps 2 and 3 to ensure that plans with over commitments have pay-as-you-go charges.
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?
The amortized data shows how much of a savings plan is utilized or still available for a subscription, resource group, or specific resource.
To download the data, see Export cost data with an Azure Storage account SAS key.
- Once you have the data, look for 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. - To make it easier, sort or filter the transactions by date. Check the charges for the resources. If the
pricingModel
is "SavingsPlan," it's not a charge. - See
effectivePrice
andcostInBillingCurrency
for the effective rate and charges. - To find the unused hours of the Azure savings plan:
- Use
productOrderId
to filter by the order ID. - Look for the
chargeType
that says "UnusedBenefits." - Check the
quantity
value. If it's more than zero, it shows the number of unused hours for that day.
- Use
How do you figure out the costs of the savings plan?
Here's an example of how we calculate savings plan costs. Suppose you bought a savings plan for Contoso for USD 1/hour. This plan covers a virtual machine (VM) that normally costs USD 4/hour with pay-as-you-go.
Consider the following scenario:
- Suppose you bought a savings plan that provides a 50% discount on the pay-as-you-go rate. Instead of paying USD 4 per hour, you only pay USD 2.
- The savings plan covers 0.5 (S) hours for every hour the VM runs, calculated as 1 (A) / 2 (C).
- You're charged USD 3 (K) per hour for the first half an hour (P) at the lower rate for your savings plan (0.5 * 2) = 1 (H) and another half an hour (P) at the pay-as-you-go rate without a savings plan (0.5 * 4) = 2 (J).
- The daily charge for the VM running for 24 hours is USD 72 (L), calculated as 24 (E) * 3 (K).
You decide the billing frequency (monthly or upfront) for your savings plan when you purchase it.
The table shows how we calculated the daily charges based on different commitments.
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 more realistic example of how much you can save with our plan:
- Suppose you buy a savings plan for **USD 0.01 per hour, ** you pay that amount instead of the pay-as-you-go rate of USD 0.3264 per hour for the VM in the plan.
- You get a discount of 31.43% when you sign up for a year. Pay only USD 0.22381248 per hour.
- 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).
- You're charged USD 0.32181636 (K) per hour: USD 0.01 (H) for the plan and USD 0.31181636 (J) for the usage over the savings plan commitment.
- The daily cost for running the VM for 24 hours is USD 7.72359270 (L), based on 24 (E) * 0.32181636 (K).
Important
The daily rated usage data displays the pay-as-you-go amount for each day that your virtual machine runs. For 24 hours of running, the daily rated usage data shows a quantity of 22.9276737383009 and a billing total before tax of 7.48359270818142.
With this data, you can track your usage patterns and find ways to save money. You might need this information to monitor your usage and manage your expenses effectively, no matter how large or small your deployment is.
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. They might not match exactly, but they can give you an estimate of your savings plans 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 |