How do I manage 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 |
---|---|---|
Billed and unbilled daily rated usage reconciliation API v2 (GA) | 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. |
How do I identify Azure savings plan charges?
To identify Azure savings plan charges, follow these steps:
- 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.
How do I find out the cost efficiency?
To find out the cost efficiency, follow these steps:
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.
Tip
Use only designated attributes: Rely on only 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.
Where can I see the savings plan usage in the Azure portal?
To see the daily usage of your Azure savings plan in the Azure 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 I reconcile the charges with the utilization percentage?
To monitor how well your savings plan matches actual usage, use the Azure portal's "Utilization over time" feature. Follow these steps to adjust charges and maximize value:
- Step 1: Identify underutilized plans: To avoid <100% spending, filter plans with less than 100% utilization using
BenefitOrderId
. - Step 2: Map covered resources: To ensure resources are correctly aligned with your plan's scope, check the
ResourceURI
in daily usage line items. - Step 3: Verify daily coverage: To confirm resources incur no daily charges under the savings plan, sort daily usage data by
UsageDate
and look forBenefitType = "SavingsPlan"
. - Step 4: Find overcommitments: To catch overages early and adjust usage or plans, check for
BenefitType = "Charge"
.
How do I 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's.
- Follow the calculation steps.
How do I verify effective rate, unused utilization, and amortized data?
To understand your savings plan usage, review the amortized data for your subscription, resource group, or specific resource.
To download the amortized 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. These attributes are different from the Partner Center daily rated usage data. See the attribute mapping table for the mapping. 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 find the relevant charges. Check the charges for the resources. If the
pricingModel
is "SavingsPlan," it means there's no charge.Review the
effectivePrice
andcostInBillingCurrency
for the effective rate and charges.To find out the unused hours in your Azure savings plan:
- Filter by
productOrderId
to find the order ID. - Look for the
chargeType
labeled "UnusedBenefits" to see any unused benefits in your plan. - Check the
quantity
value. If the value is more than zero, it means there are unused hours for that day. This quantity shows how much of your savings plan is still unused.
- Filter by
How do I figure out the costs of the savings plan?
Here's an example of how much you can save with our hourly savings plan, designed to offer significant discounts compared to pay-as-you-go rates:
Example
- If you buy a savings plan at $0.1/hour, you're billed this amount first for the hours it covers instead of the pay-as-you-go rate of $0.3264/hour for the VM, due to the discount.
- This commitment translates to savings of $0.2264/hour, which is approximately 69% discount.
- Moreover, by committing to a year, you receive an extra discount of 31.43%, paying only $0.22381248/hour.
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) | Savings plan hours per day (G) | Pay-as-you-go hours per day (G) |
---|---|---|---|---|---|---|
0.10 (A) | 0.3264 (B) | 0.22381248 (C) | 31.43 (D) | 24 (E) | 10.72326262 (E x S) | 13.27673738 (E – F) |
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.446802609 (S) | 0.553197391 (P) | 1 | 7.8336**(M)** | ||
Effective costs with the savings plan | 1 | 0.180563628 (J) | 0.280563628 (K) | 6.733527082**(L)** | ||
Savings | 1.100072918**(N)** | |||||
Savings % | 14.04% |
Calculation of savings
- The savings plan covers 0.10 (A) ÷ 0.22381248 (C) hours per hour of VM usage, which is 0.446802609 (S) hours.
- Every hour the VM runs, the savings plan covers 0.1 (A) ÷ 0.22381248 (C) hours per hour of VM usage, which is 0.446802609 (S) hours. For the remaining 0.553197391 (P) hours, you pay the pay-as-you-go rate of $0.180563628 (J), or 0.553197391 (P) x 0.3264 (B).
Overall cost
- You're billed $0.280563628 (K) per hour, which includes $0.10 (H) for the savings plan and $0.180563628 (J) for the usage exceeding the savings plan commitment.
- Running the VM for 24 hours results in a daily cost of $6.733527082 (L), based on 24 hours multiplied by $0.280563628 (K). This cost includes both the savings plan rate and the pay-as-you-go rate for usage exceeding the savings plan commitment.
Cost analysis
These steps provide a detailed comparison of costs between a pay-as-you-go model and a savings plan for a virtual machine (VM) over a 24-hour period.
Variables and assumptions
Variable | Description | Value |
---|---|---|
A | Committed cost per hour | $0.10 |
B | Pay-as-you-go rate per hour | $0.3264 |
C | Savings plan rate per hour | $0.22381248 |
D | Savings plan discount rate | 31.43% |
E | Total hours per day | 24 |
Calculations
Step 1: Determine savings plan quantity (S)
Formula: S = A ÷ C
Calculation: 0.1 ÷ 0.22381248 = 0.446802609
Variable | Description | Calculation | Value |
---|---|---|---|
S | Savings plan quantity | A ÷ C | 0.446802609 |
Step 2: Determine pay-as-you-go quantity (P)
Formula: P = 1 - S
Calculation: 1 - 0.446802609 = 0.553197391
Variable | Description | Calculation | Value |
---|---|---|---|
P | Pay-as-you-go quantity | 1 - S | 0.553197391 |
Step 3: Calculate daily hours distribution
Formula: F = E x S, G = E - F
Calculations:
Savings plan hours = 24 x 0.446802609 = 10.72326262
Pay-as-you-go hours = 24 - 10.72326262 = 13.27673738
Variable | Description | Calculation | Value |
---|---|---|---|
F | Savings plan hours | E x S | 10.72326262 |
G | Pay-as-you-go hours | E – F | 13.27673738 |
Step 4: Calculate total pay-as-you-go cost per day without the savings plan (M)
Formula: M = B x E
Calculation: 0.3264 x 24 = 7.8336
Variable | Description | Calculation | Value |
---|---|---|---|
M | Total pay-as-you-go cost | B x E | 7.8336 |
Step 5: Calculate effective costs with savings plan per day (K)
Formula: J = B x P, K = A + J
Calculations:
J = 0.3264 x 0.553197391 = 0.180563628
K = 0.1 + 0.180563628 = 0.280563628
Variable | Description | Calculation | Value |
---|---|---|---|
J | Effective pay-as-you-go cost/hour | B x P | 0.180563628 |
K | Total effective cost/hour | A + J | 0.280563628 |
Step 6: Calculate daily costs with savings plan (L)
Formula: L = K x E
Calculations:
L = 0.280563628 x 24 = 6.733527082
Variable | Description | Calculation | Value |
---|---|---|---|
L | Total cost per day | K x E | 6.733527082 |
Step 7: Calculate total savings (N)
Formula: N = M - L
Calculation: 7.8336 - 6.733527082 = 0.11000736
Variable | Description | Calculation | Value |
---|---|---|---|
N | Savings amount | M - L | 1.100072918 |
Savings percentage | (N ÷ M) x 100 | 14.04% |
Results summary
By utilizing the savings plan, the effective cost for 24 hours of VM usage is reduced from $7.8336 (pay-as-you-go) to $6.733527082, resulting in:
- Savings amount: $1.100072918
- Savings percentage: 14.04%
This analysis demonstrates the cost efficiency of using a savings plan for committed workloads, highlighting the financial benefits.
How do I map amortized and daily rated usage data attributes for comparing costs?
The Azure portal's amortized data and the Partner Center's daily usage data help you compare your savings plans charges and usage. These two data sources might not match exactly due to differences in calculation methods or reporting times. However, they can still provide a useful estimate of your savings plan's benefits.
Azure portal 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 |