Collect Stripe balance transactions in AWS Redshift
Load Stripe balance transactions and payouts into your own AWS Redshift cluster with a custom OWOX connector. Every movement keeps its gross, fee and net, so revenue after Stripe's cut is a query, not an estimate.
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 bring balance transactions next to payouts and the bank
Balance transactions are the ledger behind every Stripe payout: the gross, the fee and the net of each movement. Matching payouts to the bank statement is only possible when both sit in one warehouse.
- Compute revenue after Stripe's fees from gross and fee
- Set payouts by arrival date beside the gross, fee and net of the period
- Reconcile with the bank statement in the same query
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.
- Balance transactions carries gross, fee, net, type and reporting category
- A custom connector: the restricted API key is yours
Step 2: Load Stripe into AWS Redshift
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 your own AWS Redshift cluster or workgroup. The location is pre-filled from your storage, and you can change it.
- Balance transactions and payouts each get their own table in the Redshift schema
- 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. amount, fee and net are in the smallest currency unit, and the schema says so.
- net is amount minus fee, so no rounding is invented
- source names the charge, refund or payout that caused the movement
Step 4: Keep the Stripe tables linked
Balance transactions, payouts and refunds stay separate tables, joined by balance transaction id. Together they become the reconciliation part of one Stripe model.
- A payout names its own balance transaction
- A refund names the balance transaction that carried it
Step 5: Schedule the Stripe refresh and backfill history
Set it once. A daily scheduled refresh keeps the ledger current, and a manual backfill loads earlier periods.
- Daily runs with no pipeline to maintain
- Backfill the ledger for the periods under reconciliation
Step 6: Reuse the same Stripe table everywhere
One table feeds your model, , , assistants and scheduled insights in Slack or email.
- Define net revenue 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 AWS Redshift
The Stripe dashboard shows balance and payouts. OWOX puts the ledger behind them in your own AWS Redshift, ready to reconcile.
- You own the data. It lands in your own data warehouse, in tables you control.
- Gross, fee and net. Every movement keeps all three, so revenue after Stripe's cut is a column.
- Built to extend. As a custom connector it can gain fields without a vendor roadmap.
- Built to extend. Add a field or an endpoint in the builder when the account needs it.
You are booked. The invitation is on its way to , with the calendar invite and the meeting link.