/

Data Integration

Best Way to Sync Stripe to Snowflake in 2026

Intergalactic Data Labs

—

—

12 min read

Table of contents

Summarize

Updated November 9, 2026

Stripe data reaches Snowflake in one of two ways. Stripe can push it with Stripe Data Pipeline, a Snowflake data share that refreshes with a full load every 3 hours, or an ETL tool can pull it from the Stripe API, page through each list endpoint, and load the rows with PUT, COPY INTO, and MERGE. Twelve products document a working path today. Fivetran, Airbyte, Estuary, Hevo, Stitch, and Portable are the hosted ETL options, dlt, Meltano, ingestr, and Sling are self-hosted libraries and CLIs, and Filament by Galaxy is the self-hosted engine that splits Stripe’s embedded lists into child tables and checksums every batch inside your own network.

What are the best ETL tools for Stripe to Snowflake?

The best ETL tools for Stripe to Snowflake in 2026 are Filament, Fivetran, Airbyte, Estuary, and dlt. All five read the Stripe API and differ in how they catch later changes, expand embedded lists, and route the data.

  1. Filament fits teams that want the pipeline inside their own network with no row meter. It reads invoice lines as child tables and re-reads late refunds with a lookback window, per its Stripe source docs.

  2. Fivetran fits teams that will not run any software. It ships an invoice line item table, per its Stripe connector docs, and bills monthly active rows with 500,000 free on the free plan.

  3. Airbyte fits teams that want one open source platform. Its Stripe connector, version 7.0.6, runs incremental syncs through the Events API and fetches invoice lines past the first 10, per its connector docs.

  4. Estuary fits event streaming. "Most streams capture changes in real-time via Stripe's Events API," per its Stripe connector docs, at $0.50 per GB plus $100 per month for each of the first six connectors and $50 for each one after, with a free plan for 2 connectors and 10 GB a month, per its pricing docs.

  5. dlt fits Python teams. Its Stripe source loads only events and balance transactions incrementally and reloads the rest in replace mode, per the verified source docs.

Tool

Deployment

Pricing unit

License

Stripe status

Stripe Data Pipeline

Stripe hosted

Charges per month

Proprietary

Native product

Filament

Self-hosted, Go library, Helm

None

Apache 2.0

Source and sink in preview

Fivetran

Hosted or hybrid

Monthly active rows

Proprietary

Full connector

Airbyte

Cloud or self-managed

Credits on Cloud

ELv2 connectors

Airbyte maintained, v7.0.6

Estuary Flow

Hosted, private, BYOC

Per GB plus per connector

BSL

Real-time connector

Hevo

Hosted

Events per month

Proprietary

Listed source

Stitch

Hosted

Rows per month

Proprietary

Singer tap

Portable

Hosted

Flat monthly tier

Proprietary

Listed source

dlt

Self-hosted

None, dltHub paid tier

Apache 2.0

Verified source

Meltano tap-stripe

Self-hosted

None

AGPL-3.0

Community supported

ingestr

Self-hosted CLI

None

FSL-1.1

Supported source

Sling

Self-hosted CLI

CLI Pro token

GPL-3.0

Paid API source

The rest cover narrower cases. Hevo starts at $299 per month on events, Stitch at $100 per month on rows, and Portable at $1,800 per month with unlimited volume across 6 data flows. Sling's Stripe source needs "a CLI Pro token or Platform Plan," per its docs.

How do Stripe Data Pipeline and Sigma compare with ETL tools?

Stripe Data Pipeline shares your whole Stripe account into Snowflake, Sigma runs SQL on the same data inside the Stripe Dashboard, and an ETL tool copies the API objects you pick on your own schedule. Only Data Pipeline and ETL tools put Stripe rows next to your product data.

Option

Lands in Snowflake

Freshness

Starting price

Joins with product data

Stripe Data Pipeline

Yes, as a data share

Full load every 3 hours

$65 per month

Yes

Stripe Sigma

No, stays in Stripe

Shown by data_load_time

$15 per month

Only by CSV export

ETL tool

Yes, as tables you own

Minutes to hours

Varies by meter

Yes

Data Pipeline sends a data share you accept in Snowflake, then refreshes "delivering a full load of data every 3 hours," per Stripe's Data Pipeline docs. In Stripe's freshness example, a new record lands about 6 hours after creation. Snowflake is the only destination that also gets Stripe's financial report views, per the warehouse docs. The first load lands within 12 hours, and Data Pipeline can also write Parquet files to Amazon S3, Google Cloud Storage, or Azure Blob Storage on the same 3 hour cycle. It connects one warehouse account at a time and is not offered in India. The monthly plan costs $65 for 1,000 charges plus 7 cents per extra charge, annual plans start at $50 per month, and every plan includes Sigma and a 30 day trial, per Data Pipeline pricing.

Sigma is "an interactive SQL environment in the Stripe Dashboard," and its data is read-only, per How Sigma works. It exports CSV but never lands in Snowflake. It starts at $15 per month, or $10 per month on an annual plan, per Sigma pricing.

An ETL tool trades Stripe's report views for control over objects, cadence, and destination, and you own the traps covered below.

What is the best data warehouse for combining Stripe data with product data?

The best warehouse is the one your product data already lands in, because that is where the join runs. Snowflake has the deepest Stripe support, since it is the only Data Pipeline destination with financial report views, and a share means "no actual data is copied," per Snowflake's data sharing docs.

Data Pipeline also shares to Redshift RA3, Databricks, and BigQuery. The join is a key stored on both sides. Stripe's own example joins an orders table on the Stripe transaction ID to balance_transactions, per its Data Pipeline docs. Store the Stripe customer and subscription IDs on your product rows the same way.

If product data lives in Postgres, replicate it into Snowflake beside the Stripe tables with the Postgres to Snowflake guide. Stripe also sells a Postgres sync at $0.0025 per row with 5,000 rows free per month, per Data Pipeline pricing.

Where does Filament fit for Stripe to Snowflake?

Filament is an Apache 2.0 licensed replication engine that reads Stripe through an HTTP manifest and writes typed Snowflake tables from inside your own network.

It handles Stripe's traps in the connector. The source exposes invoice_line_items and subscription_items as fan-out children, because Stripe embeds them as "lists that truncate at 10 with their own has_more," per its docs. Incremental resources checkpoint on created, a lookback window re-reads refunds and disputes that changed later, and one shared limiter holds 8 requests per second across all resources.

The Snowflake side needs no external bucket. Each batch becomes a Parquet file that the sink uploads with PUT to the user's stage and loads with COPY INTO. "No external storage integration is required," the sink docs state. Upserts apply with one MERGE, and schema evolution is add-only. Every batch carries a CRC32-C checksum that the sink recalculates before it reports a write, per the integrity docs.

Maturity. The Stripe source and the Snowflake sink are both flagged as preview in Filament’s connector status table, and no public benchmark covers this route, so this article makes no speed claim for it. Galaxy maintains Filament.

How to sync Stripe to Snowflake with Filament

Three steps produce a scheduled incremental pipeline.

1. Create the Snowflake service user with key-pair auth

Generate a 2048-bit RSA key and register the public key on a SERVICE user with the SQL on the sink page. Snowflake's key-pair guide covers rotation.

openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out snowflake_filament_key.p8 -nocrypt
openssl rsa -in snowflake_filament_key.p8 -pubout -out

openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out snowflake_filament_key.p8 -nocrypt
openssl rsa -in snowflake_filament_key.p8 -pubout -out

openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out snowflake_filament_key.p8 -nocrypt
openssl rsa -in snowflake_filament_key.p8 -pubout -out

2. Declare the source, sink, and pipeline

Install with curl -fsSL https://getgalaxy.io/filament/install | sh, then put this in ~/.config/filament/filament.yaml. The shape follows the CLI docs, so confirm nested fields with filament sink create --sink-connector snowflake --help.

version: 1

sources:
  billing:
    type: stripe
    config:
      api_key: env:STRIPE_API_KEY

sinks:
  analytics:
    type: snowflake
    config:
      connection_method: fields
      account: myorg-myaccount
      username: FILAMENT_USER
      warehouse: FILAMENT_WAREHOUSE
      database_name: FILAMENT_DATABASE
      schema_name: PUBLIC
      role: FILAMENT_ROLE
      auth:
        type: key_pair
        private_key: env:SNOWFLAKE_PRIVATE_KEY

pipelines:
  billing-to-analytics:
    source:
      ref: billing
    sink:
      ref: analytics
    resources:
      - charges
      - balance_transactions
      - invoices
      - invoice_line_items
      - subscriptions
      - subscription_items
    sync_mode: incremental
    write_mode: upsert
version: 1

sources:
  billing:
    type: stripe
    config:
      api_key: env:STRIPE_API_KEY

sinks:
  analytics:
    type: snowflake
    config:
      connection_method: fields
      account: myorg-myaccount
      username: FILAMENT_USER
      warehouse: FILAMENT_WAREHOUSE
      database_name: FILAMENT_DATABASE
      schema_name: PUBLIC
      role: FILAMENT_ROLE
      auth:
        type: key_pair
        private_key: env:SNOWFLAKE_PRIVATE_KEY

pipelines:
  billing-to-analytics:
    source:
      ref: billing
    sink:
      ref: analytics
    resources:
      - charges
      - balance_transactions
      - invoices
      - invoice_line_items
      - subscriptions
      - subscription_items
    sync_mode: incremental
    write_mode: upsert
version: 1

sources:
  billing:
    type: stripe
    config:
      api_key: env:STRIPE_API_KEY

sinks:
  analytics:
    type: snowflake
    config:
      connection_method: fields
      account: myorg-myaccount
      username: FILAMENT_USER
      warehouse: FILAMENT_WAREHOUSE
      database_name: FILAMENT_DATABASE
      schema_name: PUBLIC
      role: FILAMENT_ROLE
      auth:
        type: key_pair
        private_key: env:SNOWFLAKE_PRIVATE_KEY

pipelines:
  billing-to-analytics:
    source:
      ref: billing
    sink:
      ref: analytics
    resources:
      - charges
      - balance_transactions
      - invoices
      - invoice_line_items
      - subscriptions
      - subscription_items
    sync_mode: incremental
    write_mode: upsert

Use a restricted rk_ key with read permission on those resources. Incremental reads default to upsert.

3. Run it once, then schedule it

filament run billing-to-analytics performs the first full read and resumes from its last committed checkpoint if interrupted. It creates one typed table per resource, with Stripe epoch timestamps as NUMBER(38,0) and JSON as VARIANT. Schedule it with cron, or attach a schedule through the pipelines API, which takes a timezone and an overlap policy. Keep the interval well inside 30 days.

What goes wrong when syncing Stripe to Snowflake?

Every API path pages through Stripe's list endpoints, "with each page containing up to 10 results by default," per Stripe's pagination docs. Every tool then hits the same five traps.

  • Events expire. Events carry later changes such as a refund settling, and you can read them for 30 days, per the events reference. Airbyte, Estuary, dlt, and Filament all document the gap a longer pause leaves.

  • Lists are embedded. Invoice lines and subscription items stop at the default page size, so the full set needs the child endpoint.

  • Created cursors miss mutations. Add a lookback window or a periodic full run, or refund and dispute statuses freeze at their first value. Airbyte's lookback defaults to 0 days.

  • Metadata edits stay silent. "Stripe does not generate an event if only the metadata object is updated," per Fivetran's Stripe docs.

  • Request budgets are shared. Live mode allows 100 requests per second globally and 25 per endpoint, and reads must average no more than 500 per transaction over 30 days, per the rate limits page.

Frequent MERGEs also keep a warehouse awake. Fivetran says most customers use "10 - 20% usage of an X-Small warehouse," per its Snowflake destination docs.

Which Stripe to Snowflake option fits which job?

Finance reporting points to Data Pipeline, and everything that joins Stripe with product data points to an ETL tool.

Job

Pick

Why

Pipeline inside your network, no per-row meter

Filament

Apache 2.0, internal stage, typed child tables

Finance close with Stripe's own report views

Stripe Data Pipeline

Financial report views, no third party

Ad hoc SQL without a warehouse

Stripe Sigma

Runs in the Stripe Dashboard

Sub-hour freshness, no operations team

Fivetran or Estuary

1 minute or event streaming syncs

Python-first team, minimal dependencies

dlt

Verified source, Apache 2.0

Flat bill at high volume

Portable

Unlimited volume per tier

Fivetran's 1 minute syncs need an Enterprise or Business Critical plan, per its sync overview. For an engineering team that runs its own infrastructure, Filament is the pick, with dlt as the Python alternative.

Related guides in this series cover MySQL to Snowflake, any REST API with a YAML manifest, full load vs incremental vs CDC, the best Airbyte alternatives, and the data movement tool roundup.

Frequently asked questions

What are the best ETL tools for Stripe to Snowflake?

Filament, Fivetran, Airbyte, Estuary, and dlt are the main options in 2026. Filament runs inside your network and splits invoice lines into child tables. Fivetran is fully managed and bills monthly active rows. Airbyte is open source with a credit-based cloud. Estuary streams Stripe events, and dlt is a Python library.

What is the best data warehouse for combining Stripe data with product data?

Use the warehouse your product data already lands in, because the join runs there. Snowflake has the deepest Stripe support, since it is the only Stripe Data Pipeline destination with financial report views. Redshift, Databricks, and BigQuery also receive the share. Store Stripe customer and subscription IDs on product rows to join them.

What is the difference between Stripe Sigma and Stripe Data Pipeline?

Sigma runs read-only SQL inside the Stripe Dashboard and exports CSV, so the data stays in Stripe. Data Pipeline shares the same data into your Snowflake, Redshift, Databricks, or BigQuery account every 3 hours, where you can join it with product tables. Every Data Pipeline plan includes Sigma.

Does Stripe have a native Snowflake integration?

Yes. Stripe Data Pipeline sends a data share to your Snowflake account, and the tables arrive as secure views you query with your own warehouse. It refreshes with a full load every 3 hours and includes Stripe's financial report views. Snowflake's own Openflow connectors do not cover Stripe, so any other route needs an ETL tool.

How much does Stripe Data Pipeline cost?

The monthly plan starts at 65 dollars per month for up to 1,000 charges, with 7 cents per extra charge. Annual plans start at 50 dollars per month and step up through four charge tiers with lower overage rates. Every plan includes Stripe Sigma and a 30 day free trial.

Why do Stripe syncs need to run at least every 30 days?

Stripe keeps event objects for 30 days. Any tool that uses the events feed to catch refund settlements, dispute outcomes, or deletes cannot recover a change older than that, so never pause a pipeline for a month.

Why do only 10 invoice line items show up in my warehouse?

Stripe embeds invoice lines and subscription items as lists that stop at 10 records. A tool that stores the embedded copy silently drops the rest. The complete set comes from the child endpoints, which mature connectors expose as separate tables.

What are Stripe's API rate limits for a sync?

Live mode allows 100 requests per second globally and 25 per second on any single endpoint, and sandboxes allow 25 in total. Read requests must also average no more than 500 per transaction over 30 days. Tools that extract many resources share one budget.

Can I sync Stripe to Snowflake without a hosted vendor?

Yes. dlt, Meltano tap-stripe, ingestr, and Filament all run on your own machines, and Sling does with a CLI Pro token. You own scheduling and the events window, in exchange for a data path that never passes through a third party's cloud.

How does Filament load Stripe data into Snowflake?

Filament encodes every batch as a Parquet file, uploads it with PUT to the Snowflake user's internal stage, and loads it with COPY INTO. Upserts apply with one MERGE. The Stripe source and the Snowflake sink are both in preview, so validate the first loads against Sigma.

Which is the best way to sync Stripe to Snowflake?

It depends on who reads the data. Finance teams that want Stripe's report views take Data Pipeline. Teams that need sub-hour freshness with no operations take Fivetran or Estuary. An engineering team that wants the pipeline inside its own network with no row meter should run Filament.

More articles

Stay up to date with what we’re building

Stay up to date with what we’re building

Stay up to date with what we’re building

Questions

Answered

FAQ

What does Galaxy do?

What is Filament?

What is enterprise context management?

What does working with Galaxy look like?

How do you handle security and compliance?

Why does Galaxy build in the open?

Own your knowledge stack

Own your knowledge stack

Copyright © 2026 Galaxy. All rights reserved.