---
title: "Stripe Data Model for Your Data Warehouse | OWOX"
canonical: "https://www.owox.com/data-sources/stripe"
updated: "2026-11-09"
---

# Stripe data model: balance transactions, payouts and subscriptions as tables

OWOX loads Stripe balance transactions, charges, refunds, disputes, payouts, invoices and subscriptions into your data warehouse as separate tables, with the keys and joins already drawn. Open the model on the canvas or bring it in as Data Marts.

[Get started free](https://www.owox.com/app-signup)

## The Stripe data model

14 tables · 261 fields · 28 joins · [View on GitHub](https://github.com/ikrasovytskyi/owox-model-canvas/blob/main/bundles/stripe/index.md)

Start from Balance Transactions: each row is one movement of money, with the gross amount, Stripe's fee and the net that lands in your balance. Charges, Refunds, Disputes and Payouts all hold the id of the balance transaction they created. Subscriptions are the recurring half. Subscription Items point at Prices, Prices at Products, and Invoices with their Invoice Line Items bill the result to a Customer. Payment Intents record every checkout attempt, including those that never became a charge, and Events logs each change Stripe made. All tables carry id and account\_id, so a second Stripe account can load into the same table without colliding. Amounts are integers in the smallest unit of the currency, so a cent or a yen is 1. Put the model in your [data warehouse](/data-storages), or turn each table into a Data Mart that keeps its joins.

[Explore on canvas →](https://model.owox.com/?okf=https://github.com/ikrasovytskyi/owox-model-canvas/tree/main/bundles/stripe)

[Import this model](https://model.owox.com/?okf=https://github.com/ikrasovytskyi/owox-model-canvas/tree/main/bundles/stripe)

## Endpoints

## Stripe Endpoints

[Documentation](https://docs.stripe.com/api)

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 fields · Time series](#schema-balance-transactions)

*   [Charges One row per charge attempt: amount, outcome, card details, who paid and which invoice or payment intent it belongs to. 33 fields · Time series](#schema-charges)

*   [Customers Every customer object: identity, billing country, delinquency and balance. 17 fields](#schema-customers)

*   [Disputes One row per dispute (chargeback) with its status and evidence deadline. 14 fields · Time series](#schema-disputes)

*   [Events The audit trail: every change Stripe recorded (invoice.paid, customer.subscription.updated, charge.refunded, …) with the id of the object it concerns. 11 fields · Time series](#schema-events)

*   [Invoice line items Every line on every invoice: what was billed, for which price and product, for which period. 19 fields](#schema-invoice-line-items)

*   [Invoices One row per invoice with amounts, status and period. 31 fields · Time series](#schema-invoices)

*   [Payment intents One row per payment attempt lifecycle: how much was asked for, how much was received, and where it stands. 22 fields · Time series](#schema-payment-intents)

*   [Payouts One row per transfer from the Stripe balance to the bank account: amount, arrival date, status. 18 fields · Time series](#schema-payouts)

*   [Prices Every price (plan) of every product, active or not, with amount, currency and billing interval. 17 fields](#schema-prices)

*   [Products The catalogue: every product, active or not. 13 fields](#schema-products)

*   [Refunds One row per refund: how much was returned on which charge, why, and the balance transaction that reversed the money. 13 fields · Time series](#schema-refunds)

*   [Subscription items The lines of every subscription: which price, how many units. 14 fields](#schema-subscription-items)

*   [Subscriptions One row per subscription in any status (status=all), full refresh every run so cancellations and past-due states are current. 23 fields](#schema-subscriptions)

## Where Stripe data goes

### Data warehouses

*   [Google BigQuery](/connectors/stripe-connector-to-google-bigquery)
*   [Snowflake](/connectors/stripe-connector-to-snowflake)
*   [AWS Redshift](/connectors/stripe-connector-to-aws-redshift)
*   [AWS Athena](/connectors/stripe-connector-to-aws-athena)
*   [Databricks](/connectors/stripe-connector-to-databricks)

### AI assistants

*   [![](https://cdn.owox.com/www/portfolio-management-data-destination/chatgpt/logo/2.svg/public)ChatGPT](/connectors/stripe-connector-to-chatgpt)
*   [![](https://cdn.owox.com/www/portfolio-management-data-destination/claude/logo/2.svg/public)Claude](/connectors/stripe-connector-to-claude)

### Spreadsheets

*   [Google Sheets](/connectors/stripe-connector-to-google-sheets)
*   [![](https://cdn.owox.com/www/portfolio-management-data-destination/microsoft-excel/logo/1.svg/public)Microsoft Excel](/connectors/stripe-connector-to-microsoft-excel)

### Dashboards

*   [![](https://cdn.owox.com/www/portfolio-management-data-destination/data-studio/logo/1.svg/public)Data Studio](/connectors/stripe-connector-to-data-studio)

### Messages

*   [![](https://cdn.owox.com/www/portfolio-management-data-destination/email/logo/2.svg/public)Email](/connectors/stripe-insights-to-email)
*   [![](https://cdn.owox.com/www/portfolio-management-data-destination/google-chat/logo/2.svg/public)Google Chat](/connectors/stripe-insights-to-google-chat)
*   [![](https://cdn.owox.com/www/portfolio-management-data-destination/microsoft-teams/logo/2.svg/public)Microsoft Teams](/connectors/stripe-insights-to-microsoft-teams)
*   [![](https://cdn.owox.com/www/portfolio-management-data-destination/slack/logo/2.svg/public)Slack](/connectors/stripe-insights-to-slack)

## What Stripe data answers

### Across the tables

*   How much did we net after fees, refunds and disputes last month, and did every \`payout\` reach the bank for the amount its \`balance transactions\` add up to?
*   What is MRR today from \`subscription items\` × \`prices\`, and how did it move: new, expansion, contraction, churn?
*   Which \`customers\` and \`invoices\` are past due or failing payment, and how much revenue is at risk?

### [Balance transactions](#schema-balance-transactions)

*   How much did we net after Stripe fees last month, and how much was fees?
*   Which balance transactions made up payout po\_… and do they sum to its amount?
*   How much revenue became available for payout each week versus how much was charged?

### [Charges](#schema-charges)

*   How many charges failed or were declined this month, and for which reasons?
*   What share of volume comes from each card brand and country?
*   Which \`customers\` have refunded or disputed charges?

### [Customers](#schema-customers)

*   How many paying customers do we have, and how many are delinquent?
*   Which customers were created this month, and which ad campaign brought them (joined on email or metadata)?

### [Disputes](#schema-disputes)

*   How many disputes are open, how much is at stake, and when is evidence due?
*   What is our dispute rate (disputes per hundred charges) by month?

### [Events](#schema-events)

*   What changed on subscription sub\_… and when?
*   How many invoice.payment\_failed events fired this week?

### [Invoice line items](#schema-invoice-line-items)

*   Which \`products\` and \`prices\` drive invoiced revenue?
*   How much of this month's invoicing is prorations from plan changes?

### [Invoices](#schema-invoices)

*   How much is invoiced, paid and still outstanding this month?
*   Which invoices are past due and how many payment attempts have been made?
*   How much billed revenue was voided or became uncollectible?

### [Payment intents](#schema-payment-intents)

*   How many checkouts were started but never completed, and why?
*   What is the decline rate by last error code?

### [Payouts](#schema-payouts)

*   When did each payout arrive at the bank, and which ones failed?
*   How many days pass between a charge's created date and its payout's arrival date?

### [Prices](#schema-prices)

*   Which prices (plans) are in use, at what amount and interval?
*   How much list revenue do legacy inactive prices still bill?

### [Products](#schema-products)

*   Which products are active, and which still carry subscriptions?

### [Refunds](#schema-refunds)

*   How much was refunded this month, by reason?
*   Which \`products\` (through the invoice lines of the refunded charge) are refunded most?

### [Subscription items](#schema-subscription-items)

*   What is MRR today, by \`product\` and by billing interval?
*   How did MRR move this month: new, expansion, contraction, churn?

### [Subscriptions](#schema-subscriptions)

*   How many subscriptions are active, trialing, past due or canceled right now?
*   How many subscriptions are set to cancel at the end of the period?
*   Why do customers cancel, according to the cancellation reason?

## Why OWOX

## What the Stripe model gives you

Stripe keeps volume, bank transfers and revenue in separate screens, and they disagree on purpose. In your data warehouse they are columns you can put side by side.

*   **Sold, settled, banked.** Charge amount by created date says what you sold. Balance transaction net by available\_on says what you could spend. Payout amount by arrival\_date says what hit the bank. One model, one query per question.
*   **A deposit you can trace.** Payouts sit next to the balance transactions with their dates, so when a bank deposit is lower than the sales behind it, fees, refunds and disputes are rows you can add up.
*   **Recurring revenue you define.** MRR is built from subscription items and prices, and invoiced revenue from invoice line items and prices, so a change of plan structure is a change to your query, not a wait for a vendor report.
*   **Stripe next to your own tables.** Match Customers to your customer table on the ids and emails you keep, Charges to orders by the charge id stored with the order, and Payouts to deposits in your bank or QuickBooks feed.
*   **The same figures everywhere.** [Spreadsheets](/product/spreadsheets), [dashboards](/product/dashboards) and [AI assistants](/product/ai-assistants) read these tables, so finance and marketing quote one net revenue.
*   **A restricted key, nothing more.** The credential is a restricted Stripe API key. OWOX Data Marts hosts the connector, a custom one whose manifest is open and versioned.

[Book a call](/book-a-call)

[Get started free](https://www.owox.com/app-signup)

## Recent updates

*   [0.43.0 · Compare LinkedIn Ads results across markets: spend by country, region, and county](https://docs.owox.com/docs/changelog/#compare-linkedin-ads-results-across-markets-spend-by-country-region-and-county-0430)
*   [0.43.0 · The Sheet link of a Google Sheets source opens the imported tab, not the first one](https://docs.owox.com/docs/changelog/#the-sheet-link-of-a-google-sheets-source-opens-the-imported-tab-not-the-first-one-0430)
*   [0.43.0 · Connect a Google Sheets plan with one Google sign-in](https://docs.owox.com/docs/changelog/#connect-a-google-sheets-plan-with-one-google-sign-in-0430)

## Other data sources

*   [QuickBooks · 26 endpoints · 486 fields](/data-sources/quickbooks)
*   [Bank of Canada · 1 endpoint · 3 fields](/data-sources/bank-of-canada)
*   [Criteo Ads · 4 endpoints · 196 fields](/data-sources/criteo)
*   [Facebook Ads · 15 endpoints · 1,172 fields](/data-sources/facebook-ads)
*   [GitHub · 3 endpoints · 54 fields](/data-sources/github)
*   [Google Ads · 9 endpoints · 166 fields](/data-sources/google-ads)

## Balance transactions schema

## Stripe Balance transactions schema

16 fields · Time series · `stripe_balance_transactions`

Every movement of money through the Stripe balance: charges, refunds, disputes, fees, payouts, adjustments.

| Field | Type | Description |
| --- | --- | --- |
| `id` | STRING | Stripe object id, unique across the account. |
| `account_id` | STRING | Your Stripe account id (acct\\\_…) as entered in the connector; lets several Stripe accounts share one table. |
| `livemode` | BOOLEAN | true for live-mode objects, false for test mode. |
| `created` | INTEGER | When Stripe created the object, as Unix time in seconds (UTC); TIMESTAMP\_SECONDS(created) in SQL. The field the daily window filters on. |
| `amount` | INTEGER | Gross amount of the transaction in the smallest currency unit (cents for USD); negative for money leaving the balance. |
| `fee` | INTEGER | Stripe fees taken on this transaction in the smallest currency unit (cents for USD). |
| `net` | INTEGER | Amount after fees in the smallest currency unit (cents for USD): amount minus fee. What moves to the balance and, later, to the bank. |
| `currency` | STRING | Three-letter ISO currency code of amount, fee and net, lowercase. |
| `type` | STRING | Transaction type: charge, refund, payout, adjustment, stripe\_fee, application\_fee, transfer, payment, dispute and about forty more. |
| `reporting_category` | STRING | Stripe's reporting category (charge, refund, dispute, fee, payout, …), the stable grouping Stripe uses in its own financial reports. |
| `source` | STRING | Id of the object that caused the movement: a charge (ch\\\_), refund (re\\\_), dispute (du\\\_), payout (po\\\_). Join key to those tables. |
| `status` | STRING | available or pending: whether the funds can be paid out yet. |
| `available_on` | INTEGER | When the funds became (or become) available for payout. The date to use for revenue that has reached the balance, as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `exchange_rate` | FLOAT | Exchange rate applied when the charge currency differs from the balance currency; null otherwise. |
| `description` | STRING | Free-text description Stripe attaches to the transaction. |
| `fee_details` | JSON | JSON list of the fees that make up fee: each with amount, currency, type (stripe\_fee, application\_fee, tax) and description. |

## Charges schema

## Stripe Charges schema

33 fields · Time series · `stripe_charges`

One row per charge attempt: amount, outcome, card details, who paid and which invoice or payment intent it belongs to.

| Field | Type | Description |
| --- | --- | --- |
| `id` | STRING | Stripe object id, unique across the account. |
| `account_id` | STRING | Your Stripe account id (acct\\\_…) as entered in the connector; lets several Stripe accounts share one table. |
| `livemode` | BOOLEAN | true for live-mode objects, false for test mode. |
| `created` | INTEGER | When Stripe created the object, as Unix time in seconds (UTC); TIMESTAMP\_SECONDS(created) in SQL. The field the daily window filters on. |
| `amount` | INTEGER | Amount requested in the smallest currency unit (cents for USD). |
| `amount_captured` | INTEGER | Amount actually captured in the smallest currency unit (cents for USD); equals amount unless the charge was authorized for more. |
| `amount_refunded` | INTEGER | Amount refunded so far in the smallest currency unit (cents for USD); grows after creation. |
| `currency` | STRING | Three-letter ISO currency code, lowercase. |
| `status` | STRING | succeeded, pending or failed. |
| `paid` | BOOLEAN | true when the charge succeeded or was successfully authorized. |
| `captured` | BOOLEAN | true when the charge was captured (funds taken), false for an uncaptured authorization. |
| `refunded` | BOOLEAN | true when the charge is fully refunded. |
| `disputed` | BOOLEAN | true when a dispute (chargeback) exists on this charge. |
| `customer` | STRING | Customer id (cus\\\_). Join to customers. |
| `payment_intent` | STRING | Payment intent id (pi\\\_) this charge belongs to. Join to payment\_intents. |
| `invoice` | STRING | Invoice id (in\\\_) when the charge paid an invoice. Join to invoices. |
| `balance_transaction` | STRING | Balance transaction id (txn\\\_) carrying this charge's fee and net. Join to balance\_transactions. |
| `payment_method` | STRING | Payment method id (pm\\\_) used. |
| `payment_method_type` | STRING | Payment method family: card, link, sepa\_debit, us\_bank\_account, … |
| `card_brand` | STRING | Card brand: visa, mastercard, amex, … |
| `card_funding` | STRING | credit, debit or prepaid. |
| `card_country` | STRING | Two-letter issuing country of the card. |
| `card_last4` | STRING | Last four digits of the card. |
| `outcome_network_status` | STRING | approved\_by\_network, declined\_by\_network, not\_sent\_to\_network or reversed\_after\_approval. |
| `outcome_risk_level` | STRING | Stripe Radar risk level: normal, elevated, highest. |
| `outcome_seller_message` | STRING | Human-readable outcome from Stripe. |
| `failure_code` | STRING | Error code when the charge failed (card\_declined, insufficient\_funds, …). |
| `failure_message` | STRING | Human-readable failure reason. |
| `description` | STRING | Description set when the charge was created. |
| `receipt_email` | STRING | Email the receipt was sent to. |
| `statement_descriptor` | STRING | Text shown on the customer's card statement. |
| `billing_country` | STRING | Two-letter country from the billing address. |
| `metadata` | JSON | Metadata object your systems attached (order ids, plan names) as a JSON string. |

## Customers schema

## Stripe Customers schema

17 fields · `stripe_customers`

Every customer object: identity, billing country, delinquency and balance.

| Field | Type | Description |
| --- | --- | --- |
| `id` | STRING | Stripe object id, unique across the account. |
| `account_id` | STRING | Your Stripe account id (acct\\\_…) as entered in the connector; lets several Stripe accounts share one table. |
| `livemode` | BOOLEAN | true for live-mode objects, false for test mode. |
| `created` | INTEGER | When Stripe created the object, as Unix time in seconds (UTC); TIMESTAMP\_SECONDS(created) in SQL. The field the daily window filters on. |
| `email` | STRING | Customer email. |
| `name` | STRING | Customer or company name. |
| `description` | STRING | Free-text description. |
| `currency` | STRING | Currency the customer is billed in, set after the first invoice. |
| `delinquent` | BOOLEAN | true when the latest invoice is unpaid past its due date. |
| `balance` | INTEGER | Account balance in the smallest currency unit (cents for USD): negative means credit the next invoice applies, positive means owed. |
| `default_payment_method` | STRING | Default payment method id for invoices. |
| `default_source` | STRING | Legacy default source id. |
| `address_country` | STRING | Two-letter country of the billing address. |
| `address_city` | STRING | Billing city. |
| `tax_exempt` | STRING | none, exempt or reverse. |
| `invoice_prefix` | STRING | Prefix Stripe uses for this customer's invoice numbers. |
| `metadata` | JSON | Metadata object your systems attached as a JSON string. |

## Disputes schema

## Stripe Disputes schema

14 fields · Time series · `stripe_disputes`

One row per dispute (chargeback) with its status and evidence deadline.

| Field | Type | Description |
| --- | --- | --- |
| `id` | STRING | Stripe object id, unique across the account. |
| `account_id` | STRING | Your Stripe account id (acct\\\_…) as entered in the connector; lets several Stripe accounts share one table. |
| `livemode` | BOOLEAN | true for live-mode objects, false for test mode. |
| `created` | INTEGER | When Stripe created the object, as Unix time in seconds (UTC); TIMESTAMP\_SECONDS(created) in SQL. The field the daily window filters on. |
| `amount` | INTEGER | Disputed amount in the smallest currency unit (cents for USD). |
| `currency` | STRING | Three-letter ISO currency code, lowercase. |
| `charge` | STRING | Charge id (ch\\\_) disputed. Join to charges. |
| `payment_intent` | STRING | Payment intent id (pi\\\_) disputed. |
| `reason` | STRING | fraudulent, product\_not\_received, duplicate, subscription\_canceled, credit\_not\_processed, general, … |
| `status` | STRING | warning\_needs\_response, warning\_under\_review, warning\_closed, needs\_response, under\_review, won or lost. |
| `is_charge_refundable` | BOOLEAN | Whether the charge can still be refunded instead of fought. |
| `evidence_due_by` | INTEGER | Deadline to submit evidence, as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `evidence_has_evidence` | BOOLEAN | Whether evidence has been submitted. |
| `balance_transactions` | JSON | JSON list of the balance transactions (debit and, if won, credit) tied to the dispute. |

## Events schema

## Stripe Events schema

11 fields · Time series · `stripe_events`

The audit trail: every change Stripe recorded (invoice.paid, customer.subscription.updated, charge.refunded, …) with the id of the object it concerns.

| Field | Type | Description |
| --- | --- | --- |
| `id` | STRING | Stripe object id, unique across the account. |
| `account_id` | STRING | Your Stripe account id (acct\\\_…) as entered in the connector; lets several Stripe accounts share one table. |
| `livemode` | BOOLEAN | true for live-mode objects, false for test mode. |
| `created` | INTEGER | When Stripe created the object, as Unix time in seconds (UTC); TIMESTAMP\_SECONDS(created) in SQL. The field the daily window filters on. |
| `type` | STRING | Event type, e.g. invoice.paid, charge.succeeded, customer.subscription.deleted. |
| `object_id` | STRING | Id of the object the event concerns. |
| `object_type` | STRING | Type of that object: invoice, charge, subscription, … |
| `api_version` | STRING | API version the event payload is rendered in. |
| `pending_webhooks` | INTEGER | Webhooks still to be delivered for this event. |
| `request_id` | STRING | Id of the API request that caused the event; null for automatic events. |
| `idempotency_key` | STRING | Idempotency key of that request. |

## Invoice line items schema

## Stripe Invoice line items schema

19 fields · `stripe_invoice_line_items`

Every line on every invoice: what was billed, for which price and product, for which period.

| Field | Type | Description |
| --- | --- | --- |
| `id` | STRING | Stripe object id, unique across the account. |
| `account_id` | STRING | Your Stripe account id (acct\\\_…) as entered in the connector; lets several Stripe accounts share one table. |
| `livemode` | BOOLEAN | true for live-mode objects, false for test mode. |
| `invoice` | STRING | Invoice id (in\\\_) the line belongs to. Join to invoices. |
| `amount` | INTEGER | Line amount in the smallest currency unit (cents for USD), after quantity, before invoice-level discounts. |
| `currency` | STRING | Three-letter ISO currency code, lowercase. |
| `description` | STRING | Line description as printed. |
| `quantity` | INTEGER | Units billed. |
| `period_start` | INTEGER | Start of the period this line covers, as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `period_end` | INTEGER | End of the period, as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `price_id` | STRING | Price id (price\\\_). Join to prices. |
| `product_id` | STRING | Product id (prod\\\_). Join to products. |
| `unit_amount` | INTEGER | Unit price in the smallest currency unit (cents for USD). |
| `recurring_interval` | STRING | month, year, week or day for recurring prices. |
| `proration` | BOOLEAN | true for a proration line after a plan change. |
| `type` | STRING | invoiceitem or subscription. |
| `subscription` | STRING | Subscription id (sub\\\_) when the line bills a subscription. |
| `subscription_item` | STRING | Subscription item id (si\\\_). Join to subscription\_items. |
| `discountable` | BOOLEAN | Whether invoice discounts apply to this line. |

## Invoices schema

## Stripe Invoices schema

31 fields · Time series · `stripe_invoices`

One row per invoice with amounts, status and period.

| Field | Type | Description |
| --- | --- | --- |
| `id` | STRING | Stripe object id, unique across the account. |
| `account_id` | STRING | Your Stripe account id (acct\\\_…) as entered in the connector; lets several Stripe accounts share one table. |
| `livemode` | BOOLEAN | true for live-mode objects, false for test mode. |
| `created` | INTEGER | When Stripe created the object, as Unix time in seconds (UTC); TIMESTAMP\_SECONDS(created) in SQL. The field the daily window filters on. |
| `customer` | STRING | Customer id (cus\\\_). Join to customers. |
| `subscription` | STRING | Subscription id (sub\\\_) when the invoice bills a subscription. Join to subscriptions. |
| `status` | STRING | draft, open, paid, uncollectible or void. |
| `number` | STRING | Invoice number shown to the customer. |
| `billing_reason` | STRING | subscription\_create, subscription\_cycle, subscription\_update, manual, upcoming, … |
| `collection_method` | STRING | charge\_automatically or send\_invoice. |
| `currency` | STRING | Three-letter ISO currency code, lowercase. |
| `period_start` | INTEGER | Start of the usage period the invoice covers, as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `period_end` | INTEGER | End of the usage period, as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `due_date` | INTEGER | When payment is due (send\_invoice collection), as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `paid_at` | INTEGER | When the invoice was paid, as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `finalized_at` | INTEGER | When the invoice was finalized, as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `voided_at` | INTEGER | When the invoice was voided, as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `amount_due` | INTEGER | Amount still to collect when finalized in the smallest currency unit (cents for USD). |
| `amount_paid` | INTEGER | Amount paid in the smallest currency unit (cents for USD). |
| `amount_remaining` | INTEGER | Amount outstanding in the smallest currency unit (cents for USD). |
| `subtotal` | INTEGER | Sum of line items before discounts and tax in the smallest currency unit (cents for USD). |
| `total` | INTEGER | Total after discounts and tax in the smallest currency unit (cents for USD). |
| `tax` | INTEGER | Tax amount in the smallest currency unit (cents for USD). |
| `starting_balance` | INTEGER | Customer balance applied at creation in the smallest currency unit (cents for USD). |
| `charge` | STRING | Charge id (ch\\\_) that paid it. Join to charges. |
| `payment_intent` | STRING | Payment intent id (pi\\\_). |
| `attempt_count` | INTEGER | Number of payment attempts made. |
| `attempted` | BOOLEAN | Whether payment was attempted. |
| `paid` | BOOLEAN | Whether the invoice is paid. |
| `hosted_invoice_url` | STRING | Link to the hosted invoice page. |
| `metadata` | JSON | Metadata object as a JSON string. |

## Payment intents schema

## Stripe Payment intents schema

22 fields · Time series · `stripe_payment_intents`

One row per payment attempt lifecycle: how much was asked for, how much was received, and where it stands.

| Field | Type | Description |
| --- | --- | --- |
| `id` | STRING | Stripe object id, unique across the account. |
| `account_id` | STRING | Your Stripe account id (acct\\\_…) as entered in the connector; lets several Stripe accounts share one table. |
| `livemode` | BOOLEAN | true for live-mode objects, false for test mode. |
| `created` | INTEGER | When Stripe created the object, as Unix time in seconds (UTC); TIMESTAMP\_SECONDS(created) in SQL. The field the daily window filters on. |
| `amount` | INTEGER | Amount intended in the smallest currency unit (cents for USD). |
| `amount_received` | INTEGER | Amount received so far in the smallest currency unit (cents for USD). |
| `amount_capturable` | INTEGER | Amount authorized but not yet captured in the smallest currency unit (cents for USD). |
| `currency` | STRING | Three-letter ISO currency code, lowercase. |
| `status` | STRING | requires\_payment\_method, requires\_confirmation, requires\_action, processing, requires\_capture, canceled or succeeded. |
| `customer` | STRING | Customer id (cus\\\_). Join to customers. |
| `invoice` | STRING | Invoice id (in\\\_) when the intent pays an invoice. |
| `latest_charge` | STRING | Most recent charge id (ch\\\_). Join to charges. |
| `payment_method` | STRING | Payment method id (pm\\\_). |
| `payment_method_types` | JSON | JSON list of payment method types offered. |
| `capture_method` | STRING | automatic, automatic\_async or manual. |
| `canceled_at` | INTEGER | When the intent was canceled, as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `cancellation_reason` | STRING | duplicate, fraudulent, requested\_by\_customer, abandoned, failed\_invoice, automatic, … |
| `last_error_code` | STRING | Code of the last payment error. |
| `last_error_decline_code` | STRING | Card network decline code of the last error. |
| `description` | STRING | Description set at creation. |
| `statement_descriptor` | STRING | Statement descriptor. |
| `metadata` | JSON | Metadata object as a JSON string. |

## Payouts schema

## Stripe Payouts schema

18 fields · Time series · `stripe_payouts`

One row per transfer from the Stripe balance to the bank account: amount, arrival date, status.

| Field | Type | Description |
| --- | --- | --- |
| `id` | STRING | Stripe object id, unique across the account. |
| `account_id` | STRING | Your Stripe account id (acct\\\_…) as entered in the connector; lets several Stripe accounts share one table. |
| `livemode` | BOOLEAN | true for live-mode objects, false for test mode. |
| `created` | INTEGER | When Stripe created the object, as Unix time in seconds (UTC); TIMESTAMP\_SECONDS(created) in SQL. The field the daily window filters on. |
| `amount` | INTEGER | Amount sent to the bank in the smallest currency unit (cents for USD). |
| `currency` | STRING | Three-letter ISO currency code, lowercase. |
| `status` | STRING | paid, pending, in\_transit, canceled or failed. |
| `type` | STRING | bank\_account or card. |
| `method` | STRING | standard or instant. |
| `automatic` | BOOLEAN | true for payouts Stripe created on the payout schedule, false for manual ones. |
| `arrival_date` | INTEGER | Date the funds are expected in (or arrived at) the bank. The cash date, as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `balance_transaction` | STRING | Balance transaction id (txn\\\_) of the payout itself (type payout). Join to balance\_transactions. |
| `destination` | STRING | Bank account (ba\\\_) or card (card\\\_) the payout went to. |
| `failure_code` | STRING | Why a payout failed (account\_closed, no\_account, …). |
| `failure_message` | STRING | Human-readable failure reason. |
| `statement_descriptor` | STRING | Text on the bank statement. |
| `description` | STRING | Stripe's description, usually STRIPE PAYOUT. |
| `source_type` | STRING | Balance type paid out: card, bank\_account or fpx. |

## Prices schema

## Stripe Prices schema

17 fields · `stripe_prices`

Every price (plan) of every product, active or not, with amount, currency and billing interval.

| Field | Type | Description |
| --- | --- | --- |
| `id` | STRING | Stripe object id, unique across the account. |
| `account_id` | STRING | Your Stripe account id (acct\\\_…) as entered in the connector; lets several Stripe accounts share one table. |
| `livemode` | BOOLEAN | true for live-mode objects, false for test mode. |
| `created` | INTEGER | When Stripe created the object, as Unix time in seconds (UTC); TIMESTAMP\_SECONDS(created) in SQL. The field the daily window filters on. |
| `product` | STRING | Product id (prod\\\_). Join to products. |
| `active` | BOOLEAN | Whether the price can be used on new subscriptions. |
| `currency` | STRING | Three-letter ISO currency code, lowercase. |
| `unit_amount` | INTEGER | Price per unit in the smallest currency unit (cents for USD); null for tiered or metered prices. |
| `type` | STRING | one\_time or recurring. |
| `billing_scheme` | STRING | per\_unit or tiered. |
| `recurring_interval` | STRING | month, year, week or day for recurring prices. |
| `recurring_interval_count` | INTEGER | Intervals per billing cycle. |
| `recurring_usage_type` | STRING | licensed or metered. |
| `nickname` | STRING | Price nickname (plan name). |
| `lookup_key` | STRING | Your own key for the price. |
| `tax_behavior` | STRING | inclusive, exclusive or unspecified. |
| `metadata` | JSON | Metadata object as a JSON string. |

## Products schema

## Stripe Products schema

13 fields · `stripe_products`

The catalogue: every product, active or not.

| Field | Type | Description |
| --- | --- | --- |
| `id` | STRING | Stripe object id, unique across the account. |
| `account_id` | STRING | Your Stripe account id (acct\\\_…) as entered in the connector; lets several Stripe accounts share one table. |
| `livemode` | BOOLEAN | true for live-mode objects, false for test mode. |
| `created` | INTEGER | When Stripe created the object, as Unix time in seconds (UTC); TIMESTAMP\_SECONDS(created) in SQL. The field the daily window filters on. |
| `name` | STRING | Product name. |
| `active` | BOOLEAN | Whether the product can be sold. |
| `description` | STRING | Product description. |
| `type` | STRING | service or good. |
| `default_price` | STRING | Default price id (price\\\_). |
| `unit_label` | STRING | Label for units (seat, GB) shown on invoices. |
| `statement_descriptor` | STRING | Statement descriptor override. |
| `updated` | INTEGER | Last update time, as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `metadata` | JSON | Metadata object as a JSON string. |

## Refunds schema

## Stripe Refunds schema

13 fields · Time series · `stripe_refunds`

One row per refund: how much was returned on which charge, why, and the balance transaction that reversed the money.

| Field | Type | Description |
| --- | --- | --- |
| `id` | STRING | Stripe object id, unique across the account. |
| `account_id` | STRING | Your Stripe account id (acct\\\_…) as entered in the connector; lets several Stripe accounts share one table. |
| `livemode` | BOOLEAN | true for live-mode objects, false for test mode. |
| `created` | INTEGER | When Stripe created the object, as Unix time in seconds (UTC); TIMESTAMP\_SECONDS(created) in SQL. The field the daily window filters on. |
| `amount` | INTEGER | Refunded amount in the smallest currency unit (cents for USD). |
| `currency` | STRING | Three-letter ISO currency code, lowercase. |
| `charge` | STRING | Charge id (ch\\\_) refunded. Join to charges. |
| `payment_intent` | STRING | Payment intent id (pi\\\_) refunded. |
| `balance_transaction` | STRING | Balance transaction id (txn\\\_) of the refund. Join to balance\_transactions. |
| `reason` | STRING | duplicate, fraudulent, requested\_by\_customer or expired\_uncaptured\_charge; null when not given. |
| `status` | STRING | pending, requires\_action, succeeded, failed or canceled. |
| `receipt_number` | STRING | Receipt number shown to the customer. |
| `description` | STRING | Optional description. |

## Subscription items schema

## Stripe Subscription items schema

14 fields · `stripe_subscription_items`

The lines of every subscription: which price, how many units.

| Field | Type | Description |
| --- | --- | --- |
| `id` | STRING | Stripe object id, unique across the account. |
| `account_id` | STRING | Your Stripe account id (acct\\\_…) as entered in the connector; lets several Stripe accounts share one table. |
| `livemode` | BOOLEAN | true for live-mode objects, false for test mode. |
| `created` | INTEGER | When Stripe created the object, as Unix time in seconds (UTC); TIMESTAMP\_SECONDS(created) in SQL. The field the daily window filters on. |
| `subscription` | STRING | Subscription id (sub\\\_). Join to subscriptions. |
| `quantity` | INTEGER | Units of the price on this item. |
| `price_id` | STRING | Price id (price\\\_). Join to prices. |
| `product_id` | STRING | Product id (prod\\\_). Join to products. |
| `unit_amount` | INTEGER | Unit price in the smallest currency unit (cents for USD). |
| `price_currency` | STRING | Currency of the price. |
| `recurring_interval` | STRING | month, year, week or day. |
| `recurring_interval_count` | INTEGER | Number of intervals per billing cycle (3 with month = quarterly). |
| `price_nickname` | STRING | Price nickname (plan name) if set. |
| `metadata` | JSON | Metadata object as a JSON string. |

## Subscriptions schema

## Stripe Subscriptions schema

23 fields · `stripe_subscriptions`

One row per subscription in any status (status=all), full refresh every run so cancellations and past-due states are current.

| Field | Type | Description |
| --- | --- | --- |
| `id` | STRING | Stripe object id, unique across the account. |
| `account_id` | STRING | Your Stripe account id (acct\\\_…) as entered in the connector; lets several Stripe accounts share one table. |
| `livemode` | BOOLEAN | true for live-mode objects, false for test mode. |
| `created` | INTEGER | When Stripe created the object, as Unix time in seconds (UTC); TIMESTAMP\_SECONDS(created) in SQL. The field the daily window filters on. |
| `customer` | STRING | Customer id (cus\\\_). Join to customers. |
| `status` | STRING | trialing, active, past\_due, unpaid, canceled, incomplete, incomplete\_expired or paused. |
| `start_date` | INTEGER | When the subscription started, as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `current_period_start` | INTEGER | Start of the current billing period, as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `current_period_end` | INTEGER | End of the current billing period; the next invoice date, as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `cancel_at_period_end` | BOOLEAN | true when set to cancel at the end of the current period. |
| `cancel_at` | INTEGER | Scheduled cancellation time, as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `canceled_at` | INTEGER | When the subscription was canceled, as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `ended_at` | INTEGER | When the subscription ended, as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `trial_start` | INTEGER | Trial start, as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `trial_end` | INTEGER | Trial end, as Unix time in seconds (UTC); use TIMESTAMP\_SECONDS() in SQL. |
| `collection_method` | STRING | charge\_automatically or send\_invoice. |
| `currency` | STRING | Three-letter ISO currency code, lowercase. |
| `latest_invoice` | STRING | Latest invoice id (in\\\_). Join to invoices. |
| `default_payment_method` | STRING | Default payment method id (pm\\\_). |
| `days_until_due` | INTEGER | Days until an invoice is due for send\_invoice subscriptions. |
| `cancellation_reason` | STRING | Reason given at cancellation. |
| `cancellation_feedback` | STRING | Customer feedback at cancellation. |
| `metadata` | JSON | Metadata object as a JSON string. |

## Links

Pages this page links to, on this site and on docs.owox.com. Where the page has a Markdown twin, its address follows the link.

- [Get started free](https://www.owox.com/app-signup)
- [data warehouse](https://www.owox.com/data-storages) — /data-storages.md
- [Google BigQuery](https://www.owox.com/connectors/stripe-connector-to-google-bigquery) — /connectors/stripe-connector-to-google-bigquery.md
- [Snowflake](https://www.owox.com/connectors/stripe-connector-to-snowflake) — /connectors/stripe-connector-to-snowflake.md
- [AWS Redshift](https://www.owox.com/connectors/stripe-connector-to-aws-redshift) — /connectors/stripe-connector-to-aws-redshift.md
- [AWS Athena](https://www.owox.com/connectors/stripe-connector-to-aws-athena) — /connectors/stripe-connector-to-aws-athena.md
- [Databricks](https://www.owox.com/connectors/stripe-connector-to-databricks) — /connectors/stripe-connector-to-databricks.md
- [ChatGPT](https://www.owox.com/connectors/stripe-connector-to-chatgpt) — /connectors/stripe-connector-to-chatgpt.md
- [Claude](https://www.owox.com/connectors/stripe-connector-to-claude) — /connectors/stripe-connector-to-claude.md
- [Google Sheets](https://www.owox.com/connectors/stripe-connector-to-google-sheets) — /connectors/stripe-connector-to-google-sheets.md
- [Microsoft Excel](https://www.owox.com/connectors/stripe-connector-to-microsoft-excel) — /connectors/stripe-connector-to-microsoft-excel.md
- [Data Studio](https://www.owox.com/connectors/stripe-connector-to-data-studio) — /connectors/stripe-connector-to-data-studio.md
- [Email](https://www.owox.com/connectors/stripe-insights-to-email) — /connectors/stripe-insights-to-email.md
- [Google Chat](https://www.owox.com/connectors/stripe-insights-to-google-chat) — /connectors/stripe-insights-to-google-chat.md
- [Microsoft Teams](https://www.owox.com/connectors/stripe-insights-to-microsoft-teams) — /connectors/stripe-insights-to-microsoft-teams.md
- [Slack](https://www.owox.com/connectors/stripe-insights-to-slack) — /connectors/stripe-insights-to-slack.md
- [Spreadsheets](https://www.owox.com/product/spreadsheets) — /product/spreadsheets.md
- [dashboards](https://www.owox.com/product/dashboards) — /product/dashboards.md
- [AI assistants](https://www.owox.com/product/ai-assistants) — /product/ai-assistants.md
- [Book a call](https://www.owox.com/book-a-call) — /book-a-call.md
- [0.43.0 · Compare LinkedIn Ads results across markets: spend by country, region, and county](https://docs.owox.com/docs/changelog)
- [QuickBooks · 26 endpoints · 486 fields](https://www.owox.com/data-sources/quickbooks) — /data-sources/quickbooks.md
- [Bank of Canada · 1 endpoint · 3 fields](https://www.owox.com/data-sources/bank-of-canada) — /data-sources/bank-of-canada.md
- [Criteo Ads · 4 endpoints · 196 fields](https://www.owox.com/data-sources/criteo) — /data-sources/criteo.md
- [Facebook Ads · 15 endpoints · 1,172 fields](https://www.owox.com/data-sources/facebook-ads) — /data-sources/facebook-ads.md
- [GitHub · 3 endpoints · 54 fields](https://www.owox.com/data-sources/github) — /data-sources/github.md
- [Google Ads · 9 endpoints · 166 fields](https://www.owox.com/data-sources/google-ads) — /data-sources/google-ads.md
