Snowpipe costs¶
In all Snowflake editions, Snowpipe charges a fixed number of credits for each GB of data that your pipes load. You don’t pay for warehouse time or for the number of files that you load, so your Snowpipe cost depends mainly on how much data you load and on the format of the files.
How Snowpipe billing works¶
For the current credit rate per GB, see the Snowflake Service Consumption Table. The billed size of a file depends on its type:
| File type | Examples | Billed size |
|---|---|---|
| Text | CSV, JSON, XML | Uncompressed size |
| Binary | Avro, ORC, Parquet | Size in storage (observed size), regardless of compression |
For example, a gzip-compressed CSV file that’s 1 GB in storage and 5 GB uncompressed is billed as 5 GB. A Parquet file that’s 1 GB in storage is billed as 1 GB.
The following factors don’t change what you pay:
- Compute: Snowflake provides and scales the compute for every load. There’s no warehouse to size, and no charge for load duration.
- Number of files: There’s no per-file charge, so delivering the same data in more or fewer files doesn’t change what you pay. File size and staging frequency still affect latency and throughput. For recommendations, see File sizing for Snowpipe.
Snowpipe previously charged for the compute time used to load files, measured per second and per core, plus a fee for every 1,000 files. Snowflake moved Business Critical and Virtual Private Snowflake (VPS) accounts to the credit-per-GB model on August 1, 2025, and Standard and Enterprise accounts on December 8, 2025.
Estimate Snowpipe costs¶
To estimate your Snowpipe cost, add up the billed size of the files that you expect to load, and then multiply that total by the rate in the Snowflake Service Consumption Table. For compressed text files, use their uncompressed size. If you know only their compressed size, multiply it by the compression ratio of your files.
For example, suppose that each day you load two sets of files: 200 GB of gzip-compressed CSV files that are 1,000 GB uncompressed, and 100 GB of Parquet files. The following table shows the billed size of each:
| Files | Size in storage | Billed size |
|---|---|---|
| CSV files (gzip) | 200 GB | 1,000 GB (uncompressed) |
| Parquet files | 100 GB | 100 GB (observed) |
| Total for one day | 300 GB | 1,100 GB |
At a rate of 0.0037 credits per GB, which is the rate in the December 8, 2025 release note, this workload uses 1,100 × 0.0037 = 4.07 credits per day, or about 122 credits for a 30-day month. To convert credits to a dollar amount, multiply by the price per credit in your Snowflake agreement.
To check an estimate against real usage, load a representative set of files, and then compare your estimate with the BYTES_BILLED and CREDITS_USED values for the pipe, as described in Monitor Snowpipe costs.
Monitor Snowpipe costs¶
The privileges that you need depend on where you look:
- Snowsight: The
ACCOUNTADMINrole, or a role that’s granted theAPP_USAGE_VIEWERapplication role and theUSAGE_VIEWERdatabase role. For more information, see Access control for cost management. - The
PIPE_USAGE_HISTORYtable function: TheACCOUNTADMINrole, or a role that has theMONITOR USAGEglobal privilege. - The
PIPE_USAGE_HISTORYview: A role that has theIMPORTED PRIVILEGESprivilege on theSNOWFLAKEdatabase, or that’s granted theUSAGE_VIEWERdatabase role. The per-pipe query in Monitor costs with SQL also reads thePIPESview. If the role uses database roles instead ofIMPORTED PRIVILEGES, it also needs theOBJECT_VIEWERdatabase role. For more information, see ACCOUNT_USAGE schema SNOWFLAKE database roles.
Monitor costs in Snowsight¶
To see Snowpipe credits in Snowsight, complete the following steps:
- Sign in to Snowsight.
- Switch to a role with access to cost and usage data.
- In the navigation menu, select Admin » Cost management.
- Select a warehouse to use to view the usage data.
- Select Consumption, and then select Compute from the usage type list.
- Above the bar graph, select By Service. Snowpipe credits appear as
PIPE.
For more information, see Exploring compute cost.
Monitor costs with SQL¶
Query either of the following:
- The PIPE_USAGE_HISTORY view in the Account Usage schema, which covers the last 365 days. Data in the view can be up to 3 hours behind.
- The PIPE_USAGE_HISTORY table function in the Information Schema, which covers the last 14 days. The function is generally deprecated in favor of the view, so use it only when you need usage from the last few hours, which the view might not show yet. If you don’t specify
DATE_RANGE_START, the function returns only the last 10 minutes.
Both return the CREDITS_USED and BYTES_BILLED columns, along with the number of files and bytes loaded. The view returns rows for each pipe. The table function returns totals for all pipes unless you specify the PIPE_NAME argument.
The following query returns the credits used and bytes billed for each pipe, for each day in the last 30 days. PIPE_NAME doesn’t include the database or schema, so the query joins the PIPES view to tell apart pipes with the same name in different schemas:
The results also include automated refreshes of external tables, directory tables, and Apache Iceberg™ tables, which use Snowpipe internally. For how these rows appear and how they’re billed, see Other charges related to Snowpipe.
The following query returns the average daily credits and bytes billed for each week in the last year. Use it to spot unexpected increases in Snowpipe usage. Days with no Snowpipe usage aren’t included in the averages. If your account moved to per-GB billing during this period, expect a change in credits on that date that isn’t caused by your workload:
Control Snowpipe costs¶
To track and reduce Snowpipe spending, use the following approaches:
- Set a budget. Add pipes to a custom budget with a spending limit. The budget sends a notification when spending is projected to exceed the limit. Budgets don’t stop pipes on their own, but a budget can call a stored procedure when projected or actual spending reaches a threshold, such as a procedure that pauses pipes. If a pipe stays paused for longer than 14 days, it becomes stale. Resource monitors can’t control Snowpipe credit usage, because they apply only to warehouses that you manage.
- Load only the files that you need. End stage URLs and pipe paths with a forward slash (
/), and enable event filtering in your cloud provider, so that Snowpipe loads only the files that belong in the target table. For more information, see Best practices. - Avoid loading the same data twice. If two pipes watch overlapping paths, or if you load the same files with both Snowpipe and
COPY INTO, Snowflake loads and bills the same data twice. For more information, see Duplicate data in the target table. - Prefer binary formats when you control the producer. A compressed CSV file is billed on its uncompressed size, so the same data in Parquet, Avro, or ORC files, which are billed on their observed size, can cost much less. For an example, see Estimate Snowpipe costs.
Other charges related to Snowpipe¶
Some charges appear under Snowpipe even though they don’t come from your pipes, and some charges for related work are billed separately.
Snowpipe charges that don’t come from your pipes¶
Automated refreshes for external tables, directory tables, and Iceberg tables use Snowpipe internally, so their charges appear under Snowpipe on your bill and in the PIPE_USAGE_HISTORY view, even though they aren’t for pipes that you created.
These refreshes aren’t billed per GB; they’re billed for the compute time that they use. For external tables and directory tables, the refresh charges also include an overhead that increases with the number of files that are added to cloud storage. Automated refresh for Iceberg tables doesn’t incur this per-file overhead.
In the PIPE_USAGE_HISTORY view, rows for these refreshes show the name of the refreshed table, or NULL, in PIPE_NAME. They can show credits with BYTES_INSERTED and FILES_INSERTED values of 0. For more information, see Billing for external tables, Billing for directory tables, and billing for automated refresh of Iceberg tables.
Related charges that are billed separately¶
The following charges are related to Snowpipe but billed separately:
- Event logging: Recording Snowpipe events in an event table. For more information, see Costs of telemetry data collection.
- Replication: Replicating pipes and their target tables, including when you use Multi-Location Resilience for Data Pipelines. For more information, see Understanding replication cost.
- Warehouse compute: Loading files with
COPY INTO, for example to backfill historical files or to reload a file that Snowpipe already processed. - Storage: Storing data in standard tables, in Iceberg tables that use Snowflake storage, and in internal stages, which Snowflake bills until you remove them. For Iceberg tables that use an external volume, your cloud storage provider bills you for the table’s data. With
LOAD_MODE = ADD_FILES_COPY, you also pay to store the source files until you delete them. - Data transfer: Reading files from cloud storage in a different region or on a different cloud platform from your Snowflake account. Snowflake doesn’t charge for data ingress, but your cloud storage provider might charge an egress fee. For more information, see Understanding data transfer cost.