Snowflake On-Demand vs Capacity: Credits, Rollover and Renewal (2026)
Snowflake capacity pricing means you buy a set dollar amount of usage up front and spend it down at order-form rates. On-demand pricing means list price, invoiced monthly in arrears. Beyond your capacity balance, Snowflake’s usage view describes the excess as usage paid at on-demand pricing; check your order form for the price that applies. Snowflake’s results releases say unused capacity may roll over, but we found no public page that sets the conditions. Every fact and figure in this guide was checked against Snowflake’s documentation.
This article is part of our guide to Snowflake pricing explained.
How does Snowflake capacity pricing differ from on-demand?
On demand, you pay list price, invoiced monthly in arrears. With capacity, you buy a set dollar amount of usage up front for a term, at list price less the Platform Credit Discount in your order form. Snowflake publishes list prices and capacity storage and AI Credit tiers, but we found no public page that states that discount.
Snowflake’s pricing page lists the same two options. The Service Consumption Table (SCT) sets the rules, publishes the capacity tiers in Tables 3(a) and 2(b), and lets purchased capacity apply to any of your accounts. Teams often choose on demand for new or uneven workloads, and capacity for steady, forecastable ones.
| On demand | Capacity | |
|---|---|---|
| What you buy | Usage as you go | A dollar amount, up front |
| Billing | Invoice, monthly in arrears | Monthly usage statement; invoices per order form |
| Credit price, Enterprise, AWS US East | $3.00 list | List less your discount |
| Commitment | No capacity purchase | A term, set in your order form |
| If you use more | Same list price | Usage view: on-demand pricing; see order form |
| If you use less | Pay only for usage | Rollover possible, per order form |
| Storage per TB-month, AWS US East | $23.00 | $23.00 at Tier 1, $13.80 at Tier 7 |
| AI Credit, global routing | $2.00 | $2.00 at Tier 1, $1.88 at Tier 7 |
| Marketplace drawdown | Not available | With MCD enrollment |
Compute and storage figures are SCT prices for AWS US East (N. Virginia). The AI Credit rows come from Table 2(b), which has no cloud, region or edition columns. All figures are effective 29 October 2026. Tier 7 means $40,000,000 or more in annualized contract value. The SCT calls the tier ranges “for illustrative purposes only,” storage tiers above Tier 1 apply to a Qualifying Order, and Cortex Inference may not be eligible for capacity AI Credit pricing.
Do you buy Snowflake credits or dollars?
Dollars. A capacity contract is a dollar commitment, not a block of credits. Snowflake’s CONTRACT_ITEMS view says each amount is “measured in CURRENCY, not credits.” Credits are what those dollars buy at your rate, so your credit count depends on your edition, cloud, region and discount.
For example, Enterprise Edition in AWS US East (N. Virginia) costs $3.00 per credit on demand (SCT Table 2(a)), and our guide to how much a Snowflake credit costs lists other editions and regions. We found no public page that states the Platform Credit Discount, so treat any figure quoted elsewhere as unverified. Snowflake does publish capacity tier prices for storage and AI Credits.
To see your own rate, query the RATE_SHEET_DAILY view. EFFECTIVE_RATE is the rate after your contract discounts, but it holds two decimals, so compare it with list price instead of reading a discount percentage from it.
-- Effective rates on the latest day, after contract discounts. Up to 24 hours old.
-- Role: GLOBALORGADMIN (organization account) or ACCOUNTADMIN (ORGADMIN-enabled account).
SELECT date, contract_number, account_name, service_level, region, rating_type,
service_type, currency, effective_rate
FROM snowflake.organization_usage.rate_sheet_daily
WHERE date >= DATEADD(day, -10, CURRENT_DATE())
QUALIFY date = MAX(date) OVER ()
ORDER BY account_name, contract_number, rating_type, service_type;
Do Snowflake credits expire or roll over?
We found no public page that says when, or whether, unused capacity expires. Snowflake’s results releases (fiscal 2026 Q4 and fiscal 2027 Q2) say customers “may have the ability to roll over unused capacity,” generally when they buy additional capacity at renewal. Unused free trial balance expires if you do not upgrade before the trial ends.
The documentation for USAGE_IN_CURRENCY_DAILY says that when an organization renews, unused credits “are added to the balance of the new contract,” and REMAINING_BALANCE_DAILY tracks them in ROLLOVER_BALANCE. The SCT refers to “eligible Capacity Rollover” and says rolled-over capacity and Additional Capacity Orders do not count toward the contract value that sets your storage and AI Credit tier.
However, we found no public page that says whether rollover is guaranteed, how large a renewal must be to unlock it, or whether unused capacity is lost if you do not renew. The CONTRACT_ITEMS view describes EXPIRATION_DATE as the date after which a renewal contract takes effect “if signed within 30 days,” or the relationship ends. That is a column description, not a contract term, so check your order form.
What happens when you use more than your Snowflake capacity?
Snowflake’s usage view labels usage beyond your capacity, rollover and free balances “overage” and describes it as usage paid at on-demand pricing; check your order form for the price that applies. Snowflake’s results releases also say customers can consume more than their contracted capacity during the term.
Overage shows up in USAGE_IN_CURRENCY_DAILY as BALANCE_SOURCE overage, and in REMAINING_BALANCE_DAILY as a negative ON_DEMAND_CONSUMPTION_BALANCE until the invoice is paid. The SCT mentions an Additional Capacity Order, but we found no public page that sets its price.
Which terms does your order form decide?
Snowflake’s public pages fix the mechanics and leave the numbers to your order form. This table pairs each question with what Snowflake publishes and the term to find in your contract. Then ask your account team to confirm each answer in writing.
| Question | What Snowflake publishes | Find this in your order form |
|---|---|---|
| Does unused capacity roll over? | Results releases: it may, generally at renewal | Capacity Rollover, Prior Order Form |
| What is my credit price? | List price less a discount | Platform Credit Discount |
| What do I pay above my balance? | Usage view: on-demand pricing | Overage and Additional Capacity Order terms |
| When do I pay? | SCT: purchased up front; no schedule found | Payment schedule, billing frequency |
| Which storage and AI tiers apply? | Tiers by contract value | Qualifying Order, storage tier |
| Can Marketplace spend use it? | Only with MCD | MCD Cap, MCD Order Form |
| What happens at term end? | Only a note on the EXPIRATION_DATE column | Subscription Term, renewal and expiry clauses |
Can Snowflake Marketplace purchases draw down your capacity?
Yes, but only through the Snowflake Marketplace Capacity Drawdown (MCD) program. Snowflake reserves part of your committed capacity for Marketplace purchases, and you enroll through your account executive. Without enrollment, you pay for listings by card or bank transfer, and Marketplace invoices stay separate from your other Snowflake invoices.
The MCD documentation sets these limits:
- You need a committed capacity contract and a business located where MCD is available. The docs list the United States (excluding Florida) and Japan, with Mexico, Switzerland and the United Kingdom in private preview only.
- Only data shares, Native Apps and Connected Apps qualify, and listings paid off-platform do not.
- Snowflake’s docs exclude on-demand accounts, monthly billing frequency, reseller customers, Government Regions and contracts made through the Google Cloud Marketplace. They say MCD is “not compatible with Snowflake Priority Support,” so ask your account executive what that means for you.
The public MCD Terms say your MCD order form sets a cap. Once service consumption exceeds your pre-paid balance minus the cap, or reaches committed capacity minus the cap, Snowflake applies any remaining MCD balance to the service, the balance is no longer available for purchases, and you pay for any further Marketplace purchases under the Provider and Consumer Terms. Unconsumed capacity from expired order forms may not fund the MCD balance, and any balance left at expiry moves back to capacity.
In SQL, MARKETPLACE_CAPACITY_DRAWDOWN_BALANCE is the part of CAPACITY_BALANCE available for Marketplace purchases. Do not add it a second time.
How do you check your Snowflake capacity balance in SQL?
Query the billing views in the ORGANIZATION_USAGE schema. REMAINING_BALANCE_DAILY holds balances, CONTRACT_ITEMS holds dates, USAGE_IN_CURRENCY_DAILY holds spend and RATE_SHEET_DAILY holds your rates. ACCOUNT_USAGE has no matching views, and balances are in currency, not credits. You need a billing role to read them.
The ORGANIZATION_USAGE documentation sets the rules:
- Roles. In the organization account, use GLOBALORGADMIN or a role granted the ORGANIZATION_BILLING_VIEWER application role. In a regular account with ORGADMIN enabled, use ACCOUNTADMIN or a role granted the ORGANIZATION_BILLING_VIEWER database role.
- Latency. Balance and spend views run up to 72 hours behind, so today’s usage will not show yet. Contract and rate views run up to 24 hours behind.
- Limits. Reseller customers cannot read these views. If several organizations share a contract, only the primary organization can read the balance and contract views.
Remaining balance per contract
Snowflake’s reconciliation guide adds capacity, free usage and rollover to get the remaining balance. This query does the same for the latest day of each contract.
-- Latest end-of-day balance per contract, in currency. Up to 72 hours old.
-- Role: GLOBALORGADMIN (organization account) or ACCOUNTADMIN (ORGADMIN-enabled account).
SELECT contract_number, date AS balance_date, currency,
capacity_balance, rollover_balance, free_usage_balance,
capacity_balance + rollover_balance + free_usage_balance AS remaining_balance,
marketplace_capacity_drawdown_balance AS marketplace_part_of_capacity,
on_demand_consumption_balance
FROM snowflake.organization_usage.remaining_balance_daily
WHERE date >= DATEADD(day, -10, CURRENT_DATE())
QUALIFY date = MAX(date) OVER (PARTITION BY contract_number)
ORDER BY contract_number;
Burn rate against days left
This query divides each balance by the average daily spend of the last 30 days, then compares the result with the days left. It skips today and the three days before it, because the 72-hour delay makes them look low.
-- Burn rate vs days left, per contract, in currency. Inputs are up to 72 hours old.
-- Role: GLOBALORGADMIN (organization account) or ACCOUNTADMIN (ORGADMIN-enabled account).
WITH latest AS (
SELECT contract_number, date AS balance_date,
capacity_balance + rollover_balance + free_usage_balance AS remaining_balance
FROM snowflake.organization_usage.remaining_balance_daily
WHERE date >= DATEADD(day, -10, CURRENT_DATE())
QUALIFY date = MAX(date) OVER (PARTITION BY contract_number)
),
burn AS (
SELECT contract_number, SUM(usage_in_currency) / 30 AS avg_daily_burn
FROM snowflake.organization_usage.usage_in_currency_daily
WHERE usage_date BETWEEN DATEADD(day, -33, CURRENT_DATE()) AND DATEADD(day, -4, CURRENT_DATE())
AND LOWER(balance_source) IN ('capacity', 'rollover', 'free usage')
GROUP BY contract_number
),
term AS (
SELECT contract_number, MAX(end_date) AS term_end
FROM snowflake.organization_usage.contract_items
WHERE LOWER(contract_item) LIKE '%capacity%'
GROUP BY contract_number
)
SELECT l.contract_number, l.balance_date, l.remaining_balance, b.avg_daily_burn,
l.remaining_balance / NULLIF(b.avg_daily_burn, 0) AS days_of_balance_left,
DATEDIFF(day, l.balance_date, t.term_end) AS days_left_in_term,
l.remaining_balance - b.avg_daily_burn * DATEDIFF(day, l.balance_date, t.term_end)
AS projected_balance_at_term_end
FROM latest l
LEFT JOIN burn b ON b.contract_number = l.contract_number
LEFT JOIN term t ON t.contract_number = l.contract_number
ORDER BY l.contract_number;
A negative projected_balance_at_term_end is the shortfall at your capacity rate. A NULL avg_daily_burn means this contract had no capacity-funded usage in the last 30 days, or has just renewed. The result can mislead when a renewal splits usage across two contract numbers, when free usage lapses before the term ends, or when the account is already in overage.
Will your balance last the term? A worked example
Divide the balance by the trailing 30-day daily burn, then compare the result with the days left in the term. A shorter result means overage is likely if usage keeps this pace. A much longer one means unused capacity. These figures are illustrative, not from a real account.
Both teams hold a $1,000,000 commitment on a 365-day term and are on day 240, with 125 days left.
- Team A has a $300,000 balance and spent $120,000 in the last 30 days, which is $4,000 a day. The balance lasts 75 days, so it runs out 50 days early. That is a $200,000 shortfall in capacity dollars. To land on zero, Team A needs $2,400 a day, which is $1,600 below today’s pace.
- Team B has a $620,000 balance and spent $54,000 in the last 30 days, which is $1,800 a day. The balance would last 344 days, and about $395,000 would go unused.
Use the trailing window, not the term average. Team A’s average is $2,917 a day, which suggests 103 days of balance and hides recent growth. Also, the $200,000 is priced at the order-form rate, so overage could cost more, depending on your discount and your order form’s overage terms. Team B’s $395,000 may roll over only if its Capacity Rollover wording allows it.
What should you pull 90 days before renewal?
Pull your order form, the SQL results above and your monthly usage statements. Together they show what you committed, what you spent, what each credit costs you and where the balance will land. Start 90 days out, so you can still change usage before the renewal talks.
- The order form and amendments. Mark each clause from the table above.
- CONTRACT_ITEMS. Record START_DATE, END_DATE, EXPIRATION_DATE and AMOUNT for each capacity item.
- USAGE_IN_CURRENCY_DAILY. Pull 12 months by service type and account. Our guide to serverless costs shows what each service charges.
- RATE_SHEET_DAILY. Check that the effective rates match the discount you signed.
- Usage statements. Snowflake generates a usage statement for each contract. Reseller customers cannot view them.
Then follow our 90-day plan before a Snowflake renewal to cut waste before you size the next commitment, and our contract planning guide to track after you sign. Snowflake expresses a budget’s limit in credits for one month, so a budget tracks credits, not your remaining dollar balance. Pair it with the burn query.
How Seemore helps with Snowflake contract tracking
The SQL above shows where you stand on the day you run it. Seemore’s Contract Utilization shows where you stand against your Snowflake contract right now, where your current usage is projecting you to land, whether that means overage and how much you would need to save to stay within contract. It also shows which Seemore savings can close that gap. If your renewal is inside 90 days, book a demo.
Frequently asked questions
What is Snowflake capacity pricing?
Snowflake capacity pricing is a contract where you buy a set dollar amount of usage up front and draw it down over a term. Your credit price is list price less your Platform Credit Discount. Snowflake’s usage view describes usage beyond the balance as usage paid at on-demand pricing; check your order form for the price that applies.
Is Snowflake capacity pricing cheaper than on-demand?
It can be. Your order form applies a Platform Credit Discount to list price, but we found no public page that states it, so check your rate in RATE_SHEET_DAILY. Snowflake does publish capacity storage and AI Credit tiers. Tier 1 costs the same as on demand for AI Credits and for storage in AWS US East.
Do Snowflake credits expire or roll over?
We found no public page that says when, or whether, unused capacity expires. Snowflake’s results releases say customers may be able to roll unused capacity into a new contract, generally when they buy additional capacity at renewal. Free trial credits do expire. Check the Capacity Rollover wording in your order form.
What happens if I use more than my Snowflake capacity?
Snowflake’s usage view describes the excess as usage paid at on-demand pricing; check your order form for the price that applies. You can see it in USAGE_IN_CURRENCY_DAILY, where BALANCE_SOURCE is overage, and in REMAINING_BALANCE_DAILY, where ON_DEMAND_CONSUMPTION_BALANCE stays negative until the invoice is paid.
How do I check my remaining Snowflake capacity balance?
Query REMAINING_BALANCE_DAILY and add CAPACITY_BALANCE, ROLLOVER_BALANCE and FREE_USAGE_BALANCE. Use GLOBALORGADMIN in the organization account or ACCOUNTADMIN in an ORGADMIN-enabled account. The data is up to 72 hours old, and reseller customers cannot read it.
Can Snowflake Marketplace purchases draw down my capacity?
Yes, if your organization has enrolled in the Marketplace Capacity Drawdown program and the listing accepts it. On-demand accounts, reseller customers and monthly billing frequency are not eligible. Snowflake lists other limits, so confirm your eligibility with your account executive.