Collect Stripe charges in Snowflake
Load Stripe charges, refunds and disputes into your own Snowflake account with a custom OWOX connector. What customers paid, and what went back, land as tables ready to join to orders and the CRM.
Stripe Endpoints
14 Stripe endpoints you can import. Each lands in its own table in your data warehouse.
Balance transactions
Every movement of money through the Stripe balance: charges, refunds, disputes, fees, payouts, adjustments.
16 fieldsTime seriesCharges
One row per charge attempt: amount, outcome, card details, who paid and which invoice or payment intent it belongs to.
33 fieldsTime seriesCustomers
Every customer object: identity, billing country, delinquency and balance.
17 fieldsDisputes
One row per dispute (chargeback) with its status and evidence deadline.
14 fieldsTime seriesEvents
The audit trail: every change Stripe recorded (invoice.paid, customer.subscription.updated, charge.refunded, …) with the id of the object it concerns.
11 fieldsTime seriesInvoice line items
Every line on every invoice: what was billed, for which price and product, for which period.
19 fieldsInvoices
One row per invoice with amounts, status and period.
31 fieldsTime seriesPayment intents
One row per payment attempt lifecycle: how much was asked for, how much was received, and where it stands.
22 fieldsTime seriesPayouts
One row per transfer from the Stripe balance to the bank account: amount, arrival date, status.
18 fieldsTime seriesPrices
Every price (plan) of every product, active or not, with amount, currency and billing interval.
17 fieldsProducts
The catalogue: every product, active or not.
13 fieldsRefunds
One row per refund: how much was returned on which charge, why, and the balance transaction that reversed the money.
13 fieldsTime seriesSubscription items
The lines of every subscription: which price, how many units.
14 fieldsSubscriptions
One row per subscription in any status (status=all), full refresh every run so cancellations and past-due states are current.
23 fields
Why join Stripe charges with orders and the CRM
A charge is money taken. Which order it paid for, and which account it belongs to, lives in the store and the CRM. To tie revenue to customers, the three have to meet in one warehouse, joined on keys.
- Reconcile Stripe charges with store orders on the key your checkout carries
- See refunds and disputes beside the charge they touch
- Group revenue by customer email, not only by card
Step 1: Connect Stripe and pick the fields
Create a Data Mart, choose Stripe as the source and add a restricted API key with read access. Open an endpoint and tick only the fields you need.
- Charges carries amounts, outcome, refund total and dispute flag
- A custom connector: the restricted API key is yours
Step 2: Load Stripe into Snowflake
Each endpoint becomes its own table, and refresh settings are set in the Data Mart. Run it and the first load lands as a table in a schema of the database you choose in Snowflake. The location is pre-filled from your storage, and you can change it.
- Charges, refunds and disputes each get their own table
- Every run is logged in Run History
Step 3: Get a business-friendly Stripe output schema
After the first run you get the output schema: every field with its type and a description. Amounts are in the smallest currency unit, and the schema says so.
- amount_captured and amount_refunded sit beside the requested amount
- disputed is true when a chargeback exists on the charge
Step 4: Keep the Stripe tables linked
Charges, refunds and disputes stay separate tables, joined by the charge id. Together they become the money-returned part of one Stripe model.
- Refunds and disputes both name the charge they touch
- Add orders and the CRM to the same model
Step 5: Schedule the Stripe refresh and backfill history
Set it once. A daily scheduled refresh keeps the charge tables current, and a manual backfill reloads earlier periods, which refreshes fields that change after creation, such as amount_refunded.
- Daily runs with no pipeline to maintain
- Backfill charge history the first time you connect
Step 6: Reuse the same Stripe table everywhere
One table feeds your model, , , assistants and scheduled insights in Slack or email.
- Define a successful payment once
- Every report reads the same table
- 0.41.0Rotating a warehouse key is one change: Storages share reusable Credentials
- 0.41.0Dates from Google Sheets arrive as dates, not text
- 0.41.0Shared SQL logic stays in one place: build a Data Mart on top of another
- 0.41.0Rotating a connector key is one change: Sources share reusable Credentials
- 0.40.0Connecting a plan from Google Sheets takes fewer guesses
Why OWOX for Stripe in Snowflake
Payment exports from Stripe go stale on the day they are made. OWOX keeps charges in Snowflake current and joined to what else you know about the customer.
- You own the data. It lands in your own data warehouse, in tables you control.
- Taken, returned, disputed. Charges, refunds and disputes are separate tables joined by charge.
- The whole account. 14 endpoints are available, so charges can grow into the full billing picture.
- One place to fix. When Stripe's API changes, you fix the connector once.
You are booked. The invitation is on its way to , with the calendar invite and the meeting link.