New: Supaflow Claude Code Plugin -- let AI agents create, edit, and monitor your data pipelines. See how the plugin works
Stripe logo

Stripe Connector

Sync Stripe customers, subscriptions, invoices, products, prices, events, and balance transactions into your warehouse. Community v1 connector.

SourceCommunity

Evaluating against Fivetran? See how Supaflow handles Stripe pricing, connector quality, and Snowflake deployment side-by-side.

Supaflow vs Fivetran

Why Supaflow

All connectors included

Every connector is available on every plan. Pricing does not increase with connector count.

Pay for compute, not rows

Credit-based pricing. Usage scales with your pipelines, not with row counts.

One platform

Ingestion, dbt Core transformation, reverse ETL, and orchestration in a single workspace.

Capabilities

Secret Key Authentication

Authenticate with a Stripe secret key (`sk_test_...` for test mode, `sk_live_...` for live). Works with restricted keys scoped to the nine read resources the connector needs; no OAuth flow required.

Incremental for Events and Balance Transactions

The Event log and BalanceTransaction stream sync incrementally on Stripe’s `created` timestamp, so scheduled runs append only what is new. Customers, subscriptions, invoices, products, prices, coupons, and your account run as full refresh because Stripe’s list endpoints do not expose a modified-at filter.

Static, API-version-pinned Schema

Field lists are generated offline from Stripe’s OpenAPI spec for API version 2022-11-15 and shipped with the connector. Fields that happen to be null in a given sync are not silently dropped from the schema. Destination columns are stable run-to-run.

Canceled Subscription Handling

The connector passes `status=all` when listing subscriptions, so canceled subscriptions land in your warehouse alongside active ones. Lifetime subscription analysis and churn cohorts work out of the box.

Start Date and Lookback

Cap the historical window for incremental streams with an ISO 8601 Start Date, and configure a per-run Lookback Period (seconds) to re-fetch recent events on every sync for late-arriving updates.

Supported Objects

Incremental (cursor: `created`)

Event

Stripe’s event log -- every API change that produces a webhook event.

BalanceTransaction

Every charge, refund, payout, and fee that hits your Stripe balance.

Full Refresh

Customer

All customers in your Stripe account.

Subscription

All subscriptions, including canceled ones (the connector sends `status=all`).

Invoice

All invoices.

Product

Product catalog.

Price

Price objects (the successor to the legacy Plan object).

Coupon

Coupons (distinct from promotion codes, which are not synced in v1).

Account

Your Stripe account record, capabilities, and settings.

Not synced in v1

Charge, PaymentIntent, Refund, Dispute, Payout, Transfer, SetupIntent, PaymentMethod, CreditNote, TaxRate, PromotionCode, UsageRecord, SubscriptionItem, Plan

Not exposed by the v1 connector. Contact us at support@supa-flow.io if you need any of these -- it helps us prioritize the v2 connector.

How It Works

1

Create a Stripe API key

In the Stripe Dashboard, go to Developers > API Keys. Either use your Standard key (`sk_live_...` for production, `sk_test_...` for test mode) or create a Restricted key with Read access only to the nine resources this connector calls: Account, Balance transactions, Coupons, Customers, Events, Invoices, Prices, Products, and Subscriptions.

2

Paste the key into Supaflow

Paste the `sk_test_` or `sk_live_` key into the Stripe Secret Key field. The value is stored encrypted and is never echoed back in logs or the UI.

3

Configure optional sync settings

Optionally set a Start Date (ISO 8601, e.g., `2024-01-01T00:00:00Z`) to cap the historical window for Event and BalanceTransaction. Optionally set a Lookback Period in seconds to re-fetch a trailing window on every incremental run.

4

Test and save

Click Test & Save. Supaflow validates the key by calling `stripe.Customer.list(limit=1)` and then runs schema discovery against the nine Stripe resources.

Use Cases

Revenue and finance reporting

Land Customer, Subscription, Invoice, Price, and BalanceTransaction into the warehouse to build MRR, ARR, churn, and payout reconciliation reports in dbt -- without paying a per-row fee on a high-invoice month.

Event-log audit and webhooks backfill

The incremental Event stream gives you the Stripe Events API feed that this connector can read. Use it to audit recent webhook activity, inspect `customer.subscription.updated` / `invoice.payment_failed` history, or replay downstream processing inside the retention window Stripe exposes.

Cohorting on canceled subscriptions

Because the connector pulls `status=all` for subscriptions, canceled and past-due subscriptions live in the warehouse. Cohort churn by plan, price, or cancel reason without having to rebuild the history from webhooks.

Frequently Asked Questions

What Stripe API version does the connector use?
The connector pins `stripe.api_version = "2022-11-15"`. Fields added by Stripe after that API version will not appear automatically. Contact us if you need a newer field and we will roll it into the connector.
Does the connector require OAuth?
No. Stripe’s REST API authenticates with a server-side secret key (`sk_live_...` or `sk_test_...`). Supaflow stores the key encrypted and uses it directly with the official Stripe Python SDK. Publishable keys (`pk_...`) and webhook signing secrets (`whsec_...`) are not accepted.
Does the connector write to Stripe?
No. The connector is read-only. It issues `list` calls to the nine resources above and never calls create / update / delete endpoints. Do not grant write permissions on the Restricted key.
Can I sync Charges, PaymentIntents, Refunds, Disputes, or Payouts?
Not in the v1 connector. The dltHub stripe_analytics source exposes a fixed list of nine resources. Expanding coverage is a connector-level change, not a configuration. Email support@supa-flow.io with the objects you need -- we prioritize expansion by customer demand.
Why are Customers, Subscriptions, and Invoices full refresh instead of incremental?
Stripe’s `list` endpoints for those objects only expose the immutable `created` timestamp, not a `lastModifiedDate`-style filter. Running them as incremental would miss updates to existing rows. Full refresh means the connector re-reads every record on each sync; how those rows are applied downstream depends on your pipeline load mode.
Does Supaflow support test mode and live mode?
Yes, but not in the same source. `sk_test_...` keys read test-mode data only; `sk_live_...` reads production only. Create two separate sources if you want both.
How does Stripe rate limiting work with Supaflow?
Stripe enforces its own API rate limits in live mode and test mode. The connector does not add a Stripe-specific retry or throttling layer. Initial syncs of large accounts can take a while because Stripe’s maximum page size is 100 records -- a 1M-customer first sync is 10k sequential requests.
Can I run the Stripe pipeline natively inside Snowflake?
Yes. Supaflow runs as a Snowflake Native App via Snowpark Container Services. Your Stripe data is extracted and loaded without leaving your Snowflake account. See our Snowflake Native ETL guide for details.

Need a connector we don't support yet?

Build one with AI-powered Connector Dev Skills.

Learn More About the Connector SDK