How to Check Your Snowflake Costs: Snowsight and ACCOUNT_USAGE (2026)
You can check your Snowflake costs in two places. In Snowsight, go to Admin » Cost management for charts of spend by account, day and usage type. In SQL, query the views in SNOWFLAKE.ACCOUNT_USAGE for credits by service, warehouse and storage, and SNOWFLAKE.ORGANIZATION_USAGE.USAGE_IN_CURRENCY_DAILY for spend in dollars. This guide shows where each screen is, who can open it, which view answers which question, and the SQL to run. Every fact and figure in this guide was checked against Snowflake’s documentation.
This article is part of our guide to Snowflake cost monitoring.
Where do you see Snowflake costs in Snowsight?
Sign in to Snowsight, switch to a role with access to cost features, and select Admin » Cost management. It has three pages: Organization Overview, Account Overview and Consumption. Invoices sit separately under Admin » Billing. Cost data can take up to 72 hours to appear, and times are shown in UTC.
What each page shows, according to Snowflake’s guide to exploring overall cost:
| Snowsight page | What it shows | Who can see it |
|---|---|---|
| Organization Overview | Spend against your capacity contract: remaining balance, cost since the contract started, monthly spend and spend by account | The organization account or an ORGADMIN-enabled account; not shown to on-demand or reseller customers |
| Account Overview | A summary of spend, unexpected spikes and suggested savings | Roles with cost access |
| Consumption | Cost by day, week or month, for all usage types or filtered to compute, storage or data transfer | Roles with cost access; without ORGADMIN, an ACCOUNTADMIN sees only the current account |
| Admin » Billing, “Snowflake billing” tab | Invoices and usage statements | GLOBALORGADMIN in the organization account, or ACCOUNTADMIN plus ORGADMIN in an ORGADMIN-enabled account |
Snowsight asks you to pick a warehouse to load the usage data; Snowflake recommends an X-Small. The billing invoices page covers the Billing tab.
Who can see cost data in Snowflake?
By default only system administrator roles can use the cost features: ACCOUNTADMIN in a regular account and GLOBALORGADMIN in the organization account. To let others view cost, grant the APP_USAGE_VIEWER application role and the USAGE_VIEWER database role. Seeing amounts in currency also needs ORGANIZATION_BILLING_VIEWER.
Snowflake’s cost access control page sets out the roles. Viewers get APP_USAGE_VIEWER plus USAGE_VIEWER. Administrators, who can also manage budgets and cost anomalies, get APP_USAGE_ADMIN plus USAGE_ADMIN. Currency is only shown from the organization account or an ORGADMIN-enabled account, and customers who bought through a reseller cannot see the price of a credit or usage in currency at all.
Which ACCOUNT_USAGE views show Snowflake costs?
Five views answer most cost questions. METERING_DAILY_HISTORY gives billed credits per service per day. METERING_HISTORY gives hourly credits per service and object. WAREHOUSE_METERING_HISTORY gives hourly credits per warehouse. STORAGE_USAGE and DATABASE_STORAGE_USAGE_HISTORY give storage in bytes. All keep 365 days and lag by two to three hours.
For dollars, use USAGE_IN_CURRENCY_DAILY in ORGANIZATION_USAGE, which lags by up to 72 hours and keeps data indefinitely (from June 2020).
| Question | View | Latency |
|---|---|---|
| How many credits were billed, by service, per day? | METERING_DAILY_HISTORY | Up to 3 hours |
| Which service or object used credits in a given hour? | METERING_HISTORY | Up to 3 hours; cloud services column up to 6 hours |
| Which warehouse used the most credits, and how much was idle? | WAREHOUSE_METERING_HISTORY | Up to 3 hours; cloud services column up to 6 hours |
| Is total storage growing? | STORAGE_USAGE | Up to 2 hours |
| Which database holds the most storage? | DATABASE_STORAGE_USAGE_HISTORY | Up to 3 hours |
| What did we spend in dollars, by account and service? | USAGE_IN_CURRENCY_DAILY | Up to 72 hours |
Two cautions. The storage views use a different measurement from billing, so they are for trends and comparisons, not for matching your invoice. And USAGE_IN_CURRENCY_DAILY can change for a given day until the month closes. If you need the cost of single queries or users rather than services, see how to trace a Snowflake cost spike to a query and user.
How do you check credit usage in Snowflake with SQL?
Query METERING_DAILY_HISTORY and sum CREDITS_BILLED by SERVICE_TYPE. That column already includes the cloud services adjustment, so it is the closest ACCOUNT_USAGE figure to what you pay in credits. Set the session to UTC first, as Snowflake recommends, so your days line up with Snowflake’s billing days.
Total credits by service type, last 30 days:
ALTER SESSION SET TIMEZONE = 'UTC';
SELECT
service_type,
SUM(credits_used_compute) AS compute_credits,
SUM(credits_used_cloud_services) AS cloud_services_credits,
SUM(credits_adjustment_cloud_services) AS cloud_services_adjustment,
SUM(credits_billed) AS credits_billed
FROM SNOWFLAKE.ACCOUNT_USAGE.METERING_DAILY_HISTORY
WHERE usage_date >= DATEADD('day', -30, CURRENT_DATE())
GROUP BY service_type
ORDER BY credits_billed DESC;
WAREHOUSE_METERING is your warehouses. Most other rows, such as SERVERLESS_TASK, AUTO_CLUSTERING or PIPE, are serverless features that bill without a warehouse; our guide to Snowflake serverless costs explains each one.
Credits by warehouse, last 30 days, with idle credits:
SELECT
warehouse_name,
SUM(credits_used_compute) AS compute_credits,
SUM(credits_used_cloud_services) AS cloud_services_credits,
SUM(credits_used_compute)
- SUM(credits_attributed_compute_queries) AS idle_credits
FROM SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY
WHERE start_time >= DATEADD('day', -30, CURRENT_DATE())
GROUP BY warehouse_name
ORDER BY compute_credits DESC;
CREDITS_ATTRIBUTED_COMPUTE_QUERIES leaves out idle time, so the difference is time the warehouse ran with nothing to do. It is NULL for Adaptive Warehouses. To check whether a warehouse’s spend fits its size, compare it with Snowflake warehouse sizes and credits per hour.
How do you check Snowflake storage costs?
Use STORAGE_USAGE for the account-wide trend and DATABASE_STORAGE_USAGE_HISTORY to see which database holds the bytes. Both report average daily bytes, including Time Travel in table storage and Fail-safe in its own column. Average the days in a month to get the figure storage is priced on.
Monthly storage trend, last 6 months:
SELECT
DATE_TRUNC('month', usage_date) AS month,
AVG(storage_bytes) / POWER(1024, 4) AS table_tb,
AVG(stage_bytes) / POWER(1024, 4) AS stage_tb,
AVG(failsafe_bytes) / POWER(1024, 4) AS failsafe_tb
FROM SNOWFLAKE.ACCOUNT_USAGE.STORAGE_USAGE
WHERE usage_date >= DATEADD('month', -6, CURRENT_DATE())
GROUP BY 1
ORDER BY 1;
Largest databases, last 30 days:
SELECT
database_name,
AVG(average_database_bytes) / POWER(1024, 4) AS database_tb,
AVG(average_failsafe_bytes) / POWER(1024, 4) AS failsafe_tb
FROM SNOWFLAKE.ACCOUNT_USAGE.DATABASE_STORAGE_USAGE_HISTORY
WHERE usage_date >= DATEADD('day', -30, CURRENT_DATE())
AND deleted IS NULL
GROUP BY database_name
ORDER BY database_tb DESC
LIMIT 20;
A Fail-safe figure that is large next to table storage often points to tables that are rewritten often. Archive storage tiers have their own columns in both views if you use them.
How do you see Snowflake spend in dollars?
Query SNOWFLAKE.ORGANIZATION_USAGE.USAGE_IN_CURRENCY_DAILY and sum USAGE_IN_CURRENCY. It covers every account in the organization and every service, including storage and data transfer, in your contract currency. Run it from the organization account or an ORGADMIN-enabled account. Reseller customers cannot query it.
Spend in currency by account and service, last full month:
SELECT
account_name,
service_type,
currency,
SUM(usage_in_currency) AS spend
FROM SNOWFLAKE.ORGANIZATION_USAGE.USAGE_IN_CURRENCY_DAILY
WHERE usage_date >= DATE_TRUNC('month', DATEADD('month', -1, CURRENT_DATE()))
AND usage_date < DATE_TRUNC('month', CURRENT_DATE())
GROUP BY account_name, service_type, currency
ORDER BY spend DESC;
In the organization account, GLOBALORGADMIN can query it by default. In an ORGADMIN-enabled account, the ORGANIZATION_BILLING_VIEWER database role grants access (Organization Usage reference).
Why do credits used and credits billed differ?
Cloud services are only billed when a day’s cloud services credits exceed 10% of that day’s warehouse credits. Snowflake subtracts an adjustment equal to the smaller of the two figures, calculated per UTC day. So CREDITS_USED can be higher than CREDITS_BILLED, and only METERING_DAILY_HISTORY shows the adjustment.
Snowflake’s compute cost page gives an example. On a day with 100 warehouse credits and 13 cloud services credits, the adjustment is -10, so 103 credits are billed. On a day with 80 warehouse credits and 5 cloud services credits, the adjustment is -5 and cloud services cost nothing. Serverless compute does not count toward the 10%. Because CREDITS_USED in METERING_HISTORY and WAREHOUSE_METERING_HISTORY ignores the adjustment, Snowflake notes it may be greater than the credits billed. This is one reason a home-made chart can disagree with the invoice; see your Snowflake cost dashboard might be lying to you.
How do you convert Snowflake credits to dollars?
Multiply credits billed by your price per credit. On demand in AWS US East, a credit costs $2.00 on Standard, $3.00 on Enterprise and $4.00 on Business Critical. Capacity contracts set their own price. So 1,000 credits billed on Enterprise on demand cost $3,000.
Warehouses bill per second with a 60-second minimum each time they start. Storage is priced per terabyte per month, not in credits, so add it separately or use USAGE_IN_CURRENCY_DAILY, which already converts everything. For how the price per credit is set, see our Snowflake pricing guide and what Snowflake credits are and what they cost.
How do you give non-admins access to ACCOUNT_USAGE?
Grant a SNOWFLAKE database role to a custom role. USAGE_VIEWER covers the metering and storage views in this guide. Snowflake recommends database roles over GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE, because imported privileges open every view in the database and can expose organization-level data.
USE ROLE ACCOUNTADMIN;
CREATE ROLE cost_viewer_role;
USE DATABASE SNOWFLAKE;
GRANT DATABASE ROLE USAGE_VIEWER TO ROLE cost_viewer_role;
GRANT APPLICATION ROLE APP_USAGE_VIEWER TO ROLE cost_viewer_role; -- adds the Snowsight cost pages
GRANT ROLE cost_viewer_role TO USER jane;
GOVERNANCE_VIEWER is for governance data such as tags and masking policies. It shares access to QUERY_ATTRIBUTION_HISTORY with USAGE_VIEWER but not to the metering views (SNOWFLAKE database roles). These roles do not give access to resource monitors. For alerts and limits, compare Snowflake budgets and resource monitors.
What should you check every month?
- Run the service type query and compare CREDITS_BILLED with last month.
- Check the top 10 warehouses by credits and their idle credits.
- Look for new or growing serverless service types.
- Review the storage trend and the largest databases, including Fail-safe.
- Confirm the cloud services adjustment: days where cloud services stay above 10% need a look.
- Reconcile USAGE_IN_CURRENCY_DAILY with the invoice after month close.
- Break spend down by team: Snowflake cost by user, role and warehouse.
How Seemore helps you check Snowflake costs
The views above lag by hours, and the dollar view by up to three days. Seemore’s Real Time Monitoring shows every connected account live, down to the exact query behind a spike. You can also ask Seemore Assistant about your environment in plain language instead of writing the SQL above. Cost Anomaly Detection compares spend across your accounts, warehouses and services against the last 14 days of your own history and hands you the root cause when something drifts.
Frequently asked questions
How do I check my Snowflake cost?
In Snowsight, open Admin » Cost management and use the Account Overview or Consumption page. In SQL, sum CREDITS_BILLED from SNOWFLAKE.ACCOUNT_USAGE.METERING_DAILY_HISTORY, or USAGE_IN_CURRENCY from SNOWFLAKE.ORGANIZATION_USAGE.USAGE_IN_CURRENCY_DAILY for dollars.
How do I check credit usage by warehouse in Snowflake?
Query SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY and sum CREDITS_USED_COMPUTE by WAREHOUSE_NAME. The data is hourly, kept for 365 days and lags by up to 3 hours.
Why is the Snowsight cost page empty for me?
By default only ACCOUNTADMIN, or GLOBALORGADMIN in the organization account, can use the cost features. Ask an administrator to grant APP_USAGE_VIEWER and USAGE_VIEWER. New data can also take up to 72 hours to appear.
What is the difference between CREDITS_USED and CREDITS_BILLED?
CREDITS_USED is compute plus cloud services before the cloud services adjustment. CREDITS_BILLED, in METERING_DAILY_HISTORY, includes the adjustment, so it matches what you are charged in credits.
How current is ACCOUNT_USAGE data?
Most cost views lag by up to 3 hours, STORAGE_USAGE by up to 2 hours, and cloud services columns by up to 6 hours. USAGE_IN_CURRENCY_DAILY in ORGANIZATION_USAGE lags by up to 72 hours.
Can I see Snowflake cost in dollars without ORGADMIN?
Only from the organization account, with GLOBALORGADMIN or ORGANIZATION_BILLING_VIEWER. Otherwise multiply credits billed by your price per credit. Reseller customers cannot see currency in Snowflake.