Savings Plans: Committing to Dollars per Hour, Not Servers
A savings plan trades a fixed hourly spend commitment for lower rates. The commitment is charged every hour, so its size decides whether it pays off.
A savings plan is a pricing commitment measured in money, not machines. AWS defines Savings Plans as savings beyond On-Demand rates “in exchange for a commitment of using a specified amount of compute power (measured per hour) for a one or three year period.” Azure offers the same idea as a savings plan for compute and a savings plan for databases, each on a one-year or three-year term, and states that savings plan purchases cannot be cancelled or refunded. Instead of reserving an instance type, you promise to spend a set amount per hour on eligible usage, and the provider bills that usage at discounted rates until the promise is used up.
The AWS plan types
AWS currently sells four types, and each trades flexibility against discount depth. The ceilings below are the figures AWS publishes against On-Demand rates:
| Plan | What it covers | AWS-stated ceiling |
|---|---|---|
| Compute Savings Plans | EC2 regardless of family, size, Region, OS or tenancy, plus Fargate and Lambda | up to 66% |
| EC2 Instance Savings Plans | One instance family in one Region, any size, OS or tenancy | up to 72% |
| Database Savings Plans | Aurora, RDS, DynamoDB, ElastiCache and other listed database services | up to 35% |
| SageMaker AI Savings Plans | SageMaker AI instance usage across family, size, Region and component | up to 64% |
Payment can be All Upfront, Partial Upfront or No Upfront. AWS’s FAQ notes that Database Savings Plans offer only one payment option and a one-year term. Terms are one year (365 days) or three years (1,095 days).
How the discount is applied each hour
Every hour, AWS calculates the savings percentage for each piece of eligible usage and applies your plan to the highest percentage first. It continues “until there are no more remaining usages, or your commitment is exhausted. Any remaining usage is charged at the On-Demand rates.” If you also own Reserved Instances, the RI covers matching usage before the savings plan is applied.
Azure behaves the same way and states the consequence plainly: benefits are applied hourly, remaining eligible usage is billed at pay-as-you-go rates once the commitment is used, and “unused commitment for an hour expires and does not roll over.”
The commitment is charged whether or not usage shows up. In the AWS Cost and Usage Report, No Upfront and Partial Upfront plans produce a SavingsPlanRecurringFee line item that is added every hour of the billing period, and the AWS utilisation report shows what share of that commitment was actually consumed. As arithmetic: a $10 per hour commitment against $9.80 of discounted usage is 98 percent utilisation, and the unused 20 cents is still billed.
Sizing a plan when part of your estate is scheduled
A savings plan should cover the spend you are certain will occur every hour, around the clock. If you size it to your weekday daytime peak and then switch development environments off at night, the overnight hours leave commitment unused, and that unused commitment is billed anyway.
The practical sequence:
- Put intermittent workloads on a start/stop schedule first.
- Look at the lowest hourly eligible spend across a normal week once scheduling is running. That trough, not the average, is the safe commitment.
- Commit to that floor. Usage above it is billed On-Demand, which is the correct price for capacity that comes and goes.
Because Compute Savings Plans apply across families and Regions, they absorb rightsizing moves better than Standard Reserved Instances do. That flexibility does not change the hourly-commitment rule: shrinking a workload below the committed amount still leaves commitment unused.
Returning a plan
AWS allows a Savings Plan to be returned only if its hourly commitment is $100 or less, it was purchased in the past 7 days, and it is still the same calendar month. Otherwise treat the purchase as fixed for the full term.
Where ZopNight fits
ZopNight reads existing AWS Savings Plans as inventory (AWS Savings Plans) and folds their coverage in, so already-committed capacity does not trigger a fresh commitment suggestion. Its priced commitment recommendations currently cover reservation-style terms (1-year and 3-year No-Upfront RIs, Azure reservations and GCP CUDs); it does not currently recommend a Savings Plan purchase. For the reservation equivalent, see Reserved Instances.
Questions we get a lot.
If yours isn't here, email us and we'll answer directly.
What happens to usage above my savings plan commitment?
AWS charges it at On-Demand rates, and Azure bills it at pay-as-you-go rates. The plan only discounts usage up to the hourly commitment.
Does unused savings plan commitment carry over to the next hour?
No. Azure states that unused commitment for an hour expires and does not roll over, and AWS adds the recurring fee for No and Partial Upfront plans every hour of the billing period regardless of usage.