<!-- Generated by tools/emit_artifacts.py. Do not edit by hand. -->
# AGENTS.md — Stripe Sigma SQL schema reference

> ## This is the STRIPE SIGMA schema. It is not the Stripe REST API schema.
>
> Sigma is Stripe's separate SQL data warehouse. Its table and column names
> **diverge from the REST API's object fields** — e.g. Sigma's
> `charges.captured_at` timestamp vs. the API's `captured` boolean, or Sigma's
> `charges.customer_id` vs. the API's nested `customer` object. A REST API
> reference (Stripe's own `/api/*` docs, an OpenAPI spec, most search results
> and most general model knowledge) will not give you correct Sigma columns
> and will produce SQL that looks plausible and fails or hallucinates.
>
> If you are about to write a Sigma SQL query: use only this file, or the
> other files this repo generates. Do not translate a REST API field name
> into a Sigma column name — see rule 3 below.

**What this is:** a machine-readable reference for the **Stripe Sigma**
data warehouse schema — tables, columns, join keys, enums and gotchas needed to
write correct Sigma SQL. Not guaranteed complete or current; see rule 6 below.

**Use this instead of guessing table or column names, and instead of running
exploratory `select * limit 1` queries to rediscover the schema each session.**

## If you are an agent, start here

| You want | Read |
| --- | --- |
| Everything, in one prompt-sized file | this file (below) or `llms-full.txt` |
| Machine-readable schema to parse | `dist/sigma_schema.json` |
| A specific table's full column list | `dist/SCHEMA.md` |
| To run practice SQL locally | `dist/sigma_sample.sqlite` (synthetic data) |
| Realistic example values | `dist/samples/<table>.csv` |
| DDL for tooling | `dist/sigma_schema.trino.sql` |
| The join graph as a diagram | `dist/erd.mmd` |
| Worked query patterns (MRR, fees, disputes, tax) | `RECIPES.md` |

## Rules for using this reference

1. **Sigma is read-only.** Never emit `INSERT`, `UPDATE`, `DELETE`, or DDL.
2. **Respect the confidence marks.** A column marked `?` is unverified — it may
   not exist. Prefer unmarked columns; if you must use a `?` column, tell the
   user it needs verification. `verification/README.md` explains how to remove
   every `?` by extracting ground truth from a live Sigma account.
3. **Never invent a Sigma column by translating a Stripe REST API field name.**
   Sigma's naming diverges from the API in specific, documented ways (see
   below) — a name that's correct for the API is frequently wrong for Sigma.
   If a column isn't in this reference, say so; don't guess from API shape.
4. **`columns_complete: false`** on a table means the list here is partial, not
   that the missing column doesn't exist. Say so rather than asserting absence.
5. The local SQLite sandbox is **SQLite, not Trino**. Use it to check join logic
   and shape; Trino-specific functions (`date_trunc`, `map_agg`, `json_parse`,
   `count_if`, `try`) will not run there.
6. **This reference is not guaranteed complete or current.** Stripe can add,
   rename or remove Sigma columns at any time, independent of this repo's
   update cadence. Treat this as the best available starting point, not a
   substitute for confirming against a live account when correctness matters.

---

Schema v1.0.0. 262 tables. Load this instead of probing Sigma with exploratory queries.

## Ground rules

- Engine is **Trino v414** (migrated from Presto v334). Read-only ANSI SQL — no DDL or DML.
- Amounts are integers in the currency's smallest unit (cents for USD, yen for JPY). An amount of 1000 with currency usd is 10.00 USD.
  - **Exception:** `itemized_fees`, `connected_account_itemized_fees` — amount and tax on these tables are in MAJOR currency units, not minor units. Do not divide by 100.
- `data_load_time` is a query-scoped constant, not a column: Not a column — a query-scoped constant available in every Sigma query, holding the time through which your account's data is complete. Use it instead of current_date to make scheduled queries deterministic.
- Timestamps are UTC. Convert with `AT TIME ZONE 'America/New_York'` (IANA casing — `AMERICA/NEW_YORK` errors).
- Sigma column names are **not** the API's field names. See 'API vs Sigma' below.
- Confidence marks below: no mark = documented by Stripe, `~` = derived from a documented convention, `?` = unverified. Verify `?` columns before relying on them.

## API vs Sigma naming

- Reference fields gain an _id suffix. _charge.customer -> charges.customer_id; charge.transfer -> charges.transfer_id_
- Nested objects are flattened with underscores. _charge.outcome.risk_score -> charges.outcome_risk_score_
- Some nested prefixes are dropped entirely when unambiguous. _charge.payment_method_details.card.brand -> charges.card_brand_
- Some booleans are exposed as timestamps instead. _charge.captured (boolean) -> charges.captured_at (timestamp)_
- The API `object` discriminator field is not present in Sigma. _charge.object -> (no column)_
- Deeply nested arrays become their own tables rather than columns. _invoice.lines -> invoice_line_items table_

Do not invent a column by translating an API field. Guess, then verify with `select <col> from <table> limit 1`.

## Object id prefixes

`acct_` accounts, `ch_` charges, `cn_` credit_notes, `cs_` checkout_sessions, `cus_` customers, `dp_` disputes, `fa_` treasury_financial_accounts, `iauth_` issuing_authorizations, `ic_` issuing_cards, `ich_` issuing_cardholders, `ii_` invoice_items, `il_` invoice_line_items, `in_` invoices, `ipi_` issuing_transactions, `pi_` payment_intents, `plan_` plans (legacy), `plink_` payment_links, `pm_` payment_methods, `po_` transfers (payouts, on/after 2017-04-06), `price_` prices, `prod_` products, `promo_` promotion_codes, `qt_` quotes, `re_` refunds, `seti_` setup_intents, `si_` subscription_items, `src_` sources, `sub_` subscriptions, `sub_sched_` subscription_schedules, `tax_` tax_transactions, `tax_li_` tax_transaction_line_items, `tr_` transfers (payouts before 2017-04-06, and Connect transfers), `trr_` transfer_reversals, `txcd_` tax_codes, `txn_` balance_transactions

## Table families

- **`*_metadata`** — Every object table with user-settable metadata has a sibling table named <table>_metadata. Each row is one key/value pair, joined back to the parent by a foreign key named <singular_object>_id. Pivot with `select parent_id, map_agg(key, value) as md from <table>_metadata group by 1 -- then md['your_key']`
- **`connected_account_*`** — Connect platforms get a parallel table for connected-account data, named connected_account_<base table>. It carries the same columns as the base table plus an `account` column holding the connected account id.

## Core tables

### balance_transactions
_One row per balance transaction. Rows are never mutated after creation._

`id:varchar`, `amount:bigint`, `automatic_transfer_id:varchar`, `available_on:timestamp`, `batch_timestamp:timestamp`, `created:timestamp`, `currency:varchar`, `description:varchar`, `exchange_rate:double`, `fee:bigint`, `net:bigint`, `reporting_category:varchar`, `source_id:varchar`, `status:varchar [available|pending]`, `type:varchar [charge|refund|adjustment|application_fee|application_fee_refund|transfer|payment|payout|payout_cancel|payout_failure|stripe_fee|network_cost]`

Joins: automatic_transfer_id → transfers.id; source_id → sources.id

- ⚠ Prefer this table over charges/refunds for anything accounting-related; it is the only table that nets out fees consistently.
- ⚠ source_id is polymorphic and has no single FK target. Join conditionally on type.
- ⚠ A charge and its refund are separate rows; refunding never mutates the original row.

### balance_transaction_fee_details
_One row per fee component of a balance transaction. A balance transaction can have several._

`balance_transaction_id:varchar`, `id:varchar`, `amount:bigint`, `application:varchar`, `batch_timestamp:timestamp`, `currency:varchar`, `description:varchar`, `type:varchar [application_fee|payment_method_passthrough_fee|stripe_fee|tax|withheld_tax]`

Joins: balance_transaction_id → balance_transactions.id

- ⚠ Summing amount here reproduces balance_transactions.fee for the same balance transaction.

### charges
_One row per charge, including failed charges._

`id:varchar`, `amount:bigint`, `amount_refunded:bigint`, `application_fee_id:varchar`, `application_id:varchar`, `balance_transaction_id:varchar`, `batch_timestamp:timestamp`, `calculated_statement_descriptor:varchar`, `captured:boolean`, `captured_at:timestamp`, `card_address_city:varchar`, `card_address_country:varchar`, `card_address_line1:varchar`, `card_address_line1_check:varchar`, `card_address_line2:varchar`, `card_address_state:varchar`, `card_address_zip:varchar`, `card_address_zip_check:varchar [pass|fail|unavailable|unchecked]`, `card_brand:varchar [American Express|Cartes Bancaires|Diners Club|Discover|Eftpos Australia|Girocard|JCB|MasterCard|UnionPay|Visa|Unknown]`, `card_country:varchar`, `card_currency:varchar`, `card_customer_id:varchar`, `card_cvc_check:varchar [pass|fail|unavailable|unchecked]`, `card_default_for_currency:boolean`, `card_dynamic_last4:varchar`, `card_exp_month:bigint`, `card_exp_year:bigint`, `card_fingerprint:varchar`, `card_funding:varchar [credit|debit|prepaid|unknown]`, `card_id:varchar`, `card_last4:varchar`, `card_name:varchar`, `card_network:varchar [amex|cartes_bancaires|diners|discover|eftpos_au|interac|jcb|link|mastercard|unionpay|visa|unknown]`, `card_recipient_id:varchar`, `card_token_type:varchar [dpan|mpan]`, `card_tokenization_method:varchar [android_pay|apple_pay|masterpass|visa_checkout]`, `created:timestamp`, `currency:varchar`, `customer_id:varchar`, `description:varchar`, `destination_id:varchar`, `dispute_id:varchar`, `failure_code:varchar`, `failure_message:varchar`, `invoice_id:varchar`, `on_behalf_of_id:varchar`, `order_id:varchar`, `outcome_advice_code:varchar`, `outcome_network_advice_code:varchar`, `outcome_network_decline_code:varchar`, `outcome_network_status:varchar [approved_by_network|declined_by_network|not_sent_to_network|reversed_after_approval]`, `outcome_reason:varchar`, `outcome_risk_level:varchar [normal|elevated|highest|not_assessed|unknown]`, `outcome_risk_score:bigint`, `outcome_rule_id:varchar`, `outcome_seller_message:varchar`, `outcome_type:varchar [authorized|manual_review|issuer_declined|blocked|invalid]`, `paid:boolean`, `payment_intent:varchar`, `payment_method_id:varchar`, `payment_method_type:varchar`, `presentment_amount:bigint`, `presentment_currency:varchar`, `receipt_email:varchar`, `receipt_number:varchar`, `refunded:boolean`, `shipping_address_city:varchar`, `shipping_address_country:varchar`, `shipping_address_line1:varchar`, `shipping_address_line2:varchar`, `shipping_address_postal_code:varchar`, `shipping_address_state:varchar`, `source_id:varchar`, `source_transfer_id:varchar`, `statement_descriptor:varchar`, `statement_descriptor_suffix:varchar`, `status:varchar [succeeded|pending|failed]`, `transfer_group:varchar`, `transfer_id:varchar`

Joins: customer_id → customers.id; invoice_id → invoices.id; balance_transaction_id → balance_transactions.id; transfer_id → transfers.id; destination_id → connected_accounts.id; payment_method_id → payment_methods.id; application_fee_id → application_fees.id; dispute_id → disputes.id; source_id → sources.id

- ⚠ card_brand values are display-cased (Visa, MasterCard), not the API's lowercase (visa, mastercard). Filter accordingly.
- ⚠ Extra card detail beyond the flattened card_* columns lives in payment_method_details, joined on charge_id.
- ⚠ A partial capture produces both a charge for the full authorized amount and a refund with reason 'partial_capture'. Exclude those refunds when measuring true refund rates.

### refunds
_One row per refund. A charge may have many partial refunds._

`id:varchar`, `amount:bigint`, `balance_transaction_id:varchar`, `batch_timestamp:timestamp`, `charge_id:varchar`, `created:timestamp`, `currency:varchar`, `failure_balance_transaction_id:varchar`, `failure_reason:varchar`, `reason:varchar [duplicate|fraudulent|requested_by_customer|partial_capture|expired_uncaptured_charge]`, `receipt_number:varchar`, `refund_description:varchar`, `refund_payment_intent:varchar`, `refund_transfer_reversal_id:varchar`, `source_transfer_reversal_id:varchar`, `status:varchar [pending|requires_action|succeeded|failed|canceled]`

Joins: charge_id → charges.id; balance_transaction_id → balance_transactions.id

- ⚠ reason = 'partial_capture' rows are an artifact of auth-and-capture, not customer refunds. Filter them out of refund-rate metrics.

### disputes
_One row per dispute. A single charge can have more than one dispute, so count distinct dispute ids._

`id:varchar`, `amount:bigint`, `batch_timestamp:timestamp`, `charge_id:varchar`, `created:timestamp`, `currency:varchar`, `evidence_access_activity_log:varchar`, `evidence_billing_address:varchar`, `evidence_cancellation_policy_disclosure:varchar`, `evidence_cancellation_policy_id:varchar`, `evidence_cancellation_rebuttal:varchar`, `evidence_customer_communication_id:varchar`, `evidence_customer_email_address:varchar`, `evidence_customer_name:varchar`, `evidence_customer_purchase_ip:varchar`, `evidence_customer_signature_id:varchar`, `evidence_details_due_by:timestamp`, `evidence_details_has_evidence:boolean`, `evidence_details_past_due:boolean`, `evidence_details_submission_count:bigint`, `evidence_details_submitted_at:timestamp`, `evidence_duplicate_charge_documentation_id:varchar`, `evidence_duplicate_charge_id:varchar`, `evidence_product_description:varchar`, `evidence_receipt_id:varchar`, `evidence_refund_policy_disclosure:varchar`, `evidence_refund_policy_id:varchar`, `evidence_refund_refusal_explanation:varchar`, `evidence_service_date:varchar`, `evidence_service_documentation_id:varchar`, `evidence_shipping_address:varchar`, `evidence_shipping_carrier:varchar`, `evidence_shipping_date:varchar`, `evidence_shipping_documentation_id:varchar`, `evidence_shipping_tracking_number:varchar`, `evidence_uncategorized_file_id:varchar`, `evidence_uncategorized_text:varchar`, `is_charge_refundable:boolean`, `network_details_type:varchar`, `network_details_visa_rapid_dispute_resolution:boolean`, `network_reason_code:varchar`, `partner_processed_at:timestamp`, `reason:varchar [bank_cannot_process|check_returned|credit_not_processed|customer_initiated|debit_not_authorized|duplicate|fraudulent|general|incorrect_account_details|insufficient_funds|noncompliant|product_not_received|product_unacceptable|subscription_canceled|unrecognized]`, `status:varchar [warning_needs_response|warning_under_review|warning_closed|needs_response|under_review|won|lost|prevented]`

Joins: charge_id → charges.id

- ⚠ Exclude status = 'prevented' when computing chargeback ratios the way card networks measure them.
- ⚠ Dispute data lags: recent months undercount because disputes arrive weeks after the charge.

### customers
_One row per customer, including deleted ones._

`id:varchar`, `account_balance:bigint`, `address_city:varchar`, `address_country:varchar`, `address_line1:varchar`, `address_line2:varchar`, `address_postal_code:varchar`, `address_state:varchar`, `balance:bigint`, `batch_timestamp:timestamp`, `business_name:varchar`, `business_vat_id:varchar`, `created:timestamp`, `currency:varchar`, `customer_account_id:varchar`, `default_source_id:varchar`, `deleted:boolean`, `delinquent:boolean`, `description:varchar`, `discount_checkout_session:varchar`, `discount_coupon_id:varchar`, `discount_customer_id:varchar`, `discount_end:timestamp`, `discount_invoice:varchar`, `discount_invoice_item:varchar`, `discount_promotion_code_id:varchar`, `discount_schedule_id:varchar`, `discount_start:timestamp`, `discount_subscription:varchar`, `discount_subscription_item:varchar`, `email:varchar`, `individual_name:varchar`, `invoice_credit_balance:varchar`, `invoice_settings_default_payment_method_id:varchar`, `name:varchar`, `phone:varchar`, `preferred_locales:varchar`, `shipping_address_city:varchar`, `shipping_address_country:varchar`, `shipping_address_line1:varchar`, `shipping_address_line2:varchar`, `shipping_address_postal_code:varchar`, `shipping_address_state:varchar`, `shipping_name:varchar`, `shipping_phone:varchar`, `sources_data_id:varchar`, `tax_exempt:varchar`, `tax_info_tax_id:varchar`, `tax_info_type:varchar`, `tax_ip_address:varchar`

- ⚠ Deleted customers are retained here, so filter on is_deleted for active-customer counts.

### payment_intents
_One row per PaymentIntent._

`id:varchar`, `amount:bigint`, `amount_capturable:bigint`, `amount_details_discount_amount:bigint`, `amount_details_shipping_amount:bigint`, `amount_details_shipping_from_postal_code:varchar`, `amount_details_shipping_to_postal_code:varchar`, `amount_details_surcharge_amount:bigint`, `amount_details_tax_total_tax_amount:bigint`, `amount_details_tip_amount:bigint`, `application_fee_amount:bigint`, `application_id:varchar`, `batch_timestamp:timestamp`, `canceled_at:timestamp`, `cancellation_reason:varchar`, `capture_method:varchar [automatic|automatic_async|manual]`, `card_request_three_d_secure:varchar`, `confirmation_method:varchar`, `created:timestamp`, `currency:varchar`, `customer_id:varchar`, `description:varchar`, `invoice_id:varchar`, `last_payment_error_charge:varchar`, `last_payment_error_source:varchar`, `last_payment_error_type:varchar`, `managed_payments_enabled:boolean`, `on_behalf_of_id:varchar`, `payment_details_customer_reference:varchar`, `payment_details_order_reference:varchar`, `payment_method_id:varchar`, `payment_method_types:varchar`, `presentment_amount:bigint`, `presentment_currency:varchar`, `receipt_email:varchar`, `review_id:varchar`, `setup_future_usage:varchar`, `statement_descriptor:varchar`, `statement_descriptor_suffix:varchar`, `status:varchar [requires_payment_method|requires_confirmation|requires_action|processing|requires_capture|canceled|succeeded]`

Joins: customer_id → customers.id; invoice_id → invoices.id; payment_method_id → payment_methods.id

- ⚠ Use this table to measure checkout conversion and drop-off; charges only contains attempts that reached the network.

### payment_method_details
_One row per charge._

`charge_id:varchar`, `ach_debit_account_holder_type:varchar`, `ach_debit_bank_name:varchar`, `ach_debit_country:varchar`, `ach_debit_fingerprint:varchar`, `ach_debit_last4:varchar`, `ach_debit_routing_number:varchar`, `acss_debit_fingerprint:varchar`, `acss_debit_institution_number:varchar`, `acss_debit_last4:varchar`, `acss_debit_mandate_id:varchar`, `acss_debit_transit_number:varchar`, `alipay_fingerprint:varchar`, `alipay_transaction_id:varchar`, `au_becs_debit_bsb_number:varchar`, `au_becs_debit_fingerprint:varchar`, `au_becs_debit_last4:varchar`, `au_becs_debit_mandate_id:varchar`, `bacs_debit_fingerprint:varchar`, `bacs_debit_last4:varchar`, `bacs_debit_mandate_id:varchar`, `bacs_debit_sort_code:varchar`, `batch_timestamp:timestamp`, `bizum_buyer_id:varchar`, `bizum_transaction_id:varchar`, `boleto_expires_at:bigint`, `boleto_number:varchar`, `card_3ds_authenticated:boolean`, `card_3ds_succeeded:boolean`, `card_3ds_version:varchar`, `card_address_line1_check:varchar [pass|fail|unavailable|unchecked]`, `card_address_postal_code_check:varchar [pass|fail|unavailable|unchecked]`, `card_amount_authorized:bigint`, `card_authorization_code:varchar`, `card_brand:varchar [amex|cartes_bancaires|diners|discover|eftpos_au|jcb|link|mastercard|unionpay|visa|unknown]`, `card_brand_product:varchar`, `card_country:varchar`, `card_cvc_check:varchar [pass|fail|unavailable|unchecked]`, `card_exp_month:bigint`, `card_exp_year:bigint`, `card_fingerprint:varchar`, `card_funding:varchar [credit|debit|prepaid|unknown]`, `card_generated_card:varchar`, `card_iin:varchar`, `card_installments_plan_count:bigint`, `card_installments_plan_interval:varchar`, `card_installments_plan_type:varchar [fixed_count|bonus|revolving]`, `card_last4:varchar`, `card_mandate:varchar`, `card_moto:boolean`, `card_network:varchar [amex|cartes_bancaires|diners|discover|eftpos_au|interac|jcb|link|mastercard|unionpay|visa|unknown]`, `card_network_token_used:boolean`, `card_network_transaction_id:varchar`, `card_present_dynamic_currency_conversion_cardholder_rate:double`, `card_present_dynamic_currency_conversion_markup_percent:double`, `card_present_dynamic_currency_conversion_original_amount:bigint`, `card_present_dynamic_currency_conversion_original_currency:varchar`, `card_present_dynamic_currency_conversion_status:varchar`, `card_present_dynamic_currency_conversion_transaction_fx_rate:double`, `card_read_method:varchar`, `card_regulated_status:varchar`, `card_transaction_link_id:varchar`, `card_wallet_apple_pay_type:varchar [apple_pay|apple_pay_later|unknown]`, `card_wallet_type:varchar`, `cashapp_buyer_id:varchar`, `cashapp_cashtag:varchar`, `cashapp_transaction_id:varchar`, `customer_balance_bank_transfer_type:varchar`, `customer_balance_funding_type:varchar`, `eps_bank:varchar`, `eps_verified_name:varchar`, `fpx_account_holder_type:varchar`, `fpx_bank:varchar`, `fpx_transaction_id:varchar`, `giropay_bank_code:varchar`, `giropay_bank_name:varchar`, `giropay_bic:varchar`, `giropay_verified_name:varchar`, `ideal_bank:varchar`, `ideal_bic:varchar`, `ideal_generated_sepa_debit_id:varchar`, `ideal_generated_sepa_debit_mandate_id:varchar`, `ideal_iban_last4:varchar`, `ideal_transaction_id:varchar`, `ideal_verified_name:varchar`, `klarna_payer_details_address_country:varchar`, `klarna_payment_method_category:varchar`, `klarna_preferred_locale:varchar`, `konbini_store_chain:varchar`, `link_country:varchar`, `multibanco_entity:varchar`, `multibanco_reference:varchar`, `naver_buyer_id:varchar`, `naver_transaction_id:varchar`, `nz_bank_account_account_holder_name:varchar`, `nz_bank_account_bank_code:varchar`, `nz_bank_account_bank_name:varchar`, `nz_bank_account_branch_code:varchar`, `nz_bank_account_last4:varchar`, `nz_bank_account_suffix:varchar`, `oxxo_number:varchar`, `p24_bank:varchar`, `p24_reference:varchar`, `p24_verified_name:varchar`, `paynow_transaction_id:varchar`, `payto_account_number:varchar`, `payto_bsb_number:varchar`, `payto_last4:varchar`, `payto_mandate:varchar`, `payto_pay_id:varchar`, `pix_bank_transaction_id:varchar`, `pix_fingerprint:varchar`, `promptpay_transaction_id:varchar`, `sepa_debit_bank_code:varchar`, `sepa_debit_branch_code:varchar`, `sepa_debit_country:varchar`, `sepa_debit_fingerprint:varchar`, `sepa_debit_last4:varchar`, `sepa_debit_mandate_id:varchar`, `sofort_bank_code:varchar`, `sofort_bank_name:varchar`, `sofort_bic:varchar`, `sofort_country:varchar`, `sofort_iban_last4:varchar`, `sofort_preferred_language:varchar`, `sofort_verified_name:varchar`, `swish_fingerprint:varchar`, `swish_payment_reference:varchar`, `swish_verified_phone_last4:varchar`, `terminal_location_id:varchar`, `terminal_reader_id:varchar`, `type:varchar`, `us_bank_account_account_holder_type:varchar`, `us_bank_account_account_type:varchar`, `us_bank_account_bank_name:varchar`, `us_bank_account_fingerprint:varchar`, `us_bank_account_last4:varchar`, `us_bank_account_mandate_id:varchar`, `us_bank_account_payment_reference:varchar`, `us_bank_account_routing_number:varchar`

Joins: charge_id → charges.id

- ⚠ Left join from charges — not every charge has a row here.

### transfers
_One row per payout or transfer._

`id:varchar`, `amount:bigint`, `amount_reversed:bigint`, `application_fee_amount:bigint`, `application_fee_id:varchar`, `automatic:boolean`, `balance_transaction_id:varchar`, `batch_timestamp:timestamp`, `created:timestamp`, `currency:varchar`, `date:timestamp`, `description:varchar`, `destination_id:varchar`, `destination_payment_id:varchar`, `failure_code:varchar`, `failure_message:varchar`, `kind:varchar`, `original_payout:varchar`, `payout_method:varchar`, `reversed:boolean`, `reversed_by:varchar`, `source_transaction_id:varchar`, `source_type:varchar [card|fpx|bank_account]`, `statement_descriptor:varchar`, `status:varchar [paid|pending|in_transit|canceled|failed]`, `trace_id:varchar`, `trace_id_status:varchar`, `transfer_group:varchar`, `transfer_instruction:varchar`, `type:varchar [card|bank_account|stripe_account]`

Joins: application_fee_id → application_fees.id; balance_transaction_id → balance_transactions.id

- ⚠ Reconcile a payout to its components with: balance_transactions.automatic_transfer_id = transfers.id.
- ⚠ Manual payouts cannot be reconciled to specific balance transactions — the amount is arbitrary.

### invoices
_One row per invoice, including drafts and voided invoices._

`id:varchar`, `amount_due:bigint`, `amount_paid:bigint`, `amount_remaining:bigint`, `amount_shipping:bigint`, `application_fee:bigint`, `application_id:varchar`, `attempt_count:bigint`, `attempted:boolean`, `auto_advance:boolean`, `automatic_tax_enabled:boolean`, `automatic_tax_provider:varchar`, `automatic_tax_status:varchar`, `batch_timestamp:timestamp`, `billing_reason:varchar [subscription_cycle|subscription_create|subscription_update|subscription|manual|upcoming|subscription_threshold]`, `charge_id:varchar`, `collection_method:varchar [charge_automatically|send_invoice]`, `currency:varchar`, `customer_address_city:varchar`, `customer_address_country:varchar`, `customer_address_line1:varchar`, `customer_address_line2:varchar`, `customer_address_postal_code:varchar`, `customer_address_state:varchar`, `customer_description:varchar`, `customer_email:varchar`, `customer_id:varchar`, `customer_name:varchar`, `customer_phone:varchar`, `customer_shipping_address_city:varchar`, `customer_shipping_address_country:varchar`, `customer_shipping_address_line1:varchar`, `customer_shipping_address_line2:varchar`, `customer_shipping_address_postal_code:varchar`, `customer_shipping_address_state:varchar`, `customer_shipping_name:varchar`, `customer_shipping_phone:varchar`, `customer_tax_exempt:varchar`, `date:timestamp`, `default_payment_method_id:varchar`, `description:varchar`, `discount_checkout_session:varchar`, `discount_coupon_id:varchar`, `discount_customer_id:varchar`, `discount_end:timestamp`, `discount_invoice:varchar`, `discount_invoice_item:varchar`, `discount_promotion_code_id:varchar`, `discount_schedule_id:varchar`, `discount_start:timestamp`, `discount_subscription:varchar`, `discount_subscription_item:varchar`, `discounts:varchar`, `due_date:timestamp`, `effective_at:timestamp`, `ending_balance:bigint`, `footer:varchar`, `next_payment_attempt:timestamp`, `number:varchar`, `on_behalf_of_id:varchar`, `paid:boolean`, `paid_out_of_band:boolean`, `parent_id:varchar`, `parent_type:varchar [billing_cadence|subscription|quote|schedule]`, `period_end:timestamp`, `period_start:timestamp`, `post_payment_credit_notes_amount:bigint`, `pre_payment_credit_notes_amount:bigint`, `quote_id:varchar`, `receipt_number:varchar`, `shipping_cost_amount_subtotal:bigint`, `shipping_cost_amount_tax:bigint`, `shipping_cost_amount_total:bigint`, `shipping_cost_shipping_rate_id:varchar`, `shipping_details_address_city:varchar`, `shipping_details_address_country:varchar`, `shipping_details_address_line1:varchar`, `shipping_details_address_line2:varchar`, `shipping_details_address_postal_code:varchar`, `shipping_details_address_state:varchar`, `shipping_details_name:varchar`, `shipping_details_phone:varchar`, `starting_balance:bigint`, `statement_descriptor:varchar`, `status:varchar [draft|open|paid|uncollectible|void]`, `status_transitions_finalized_at:timestamp`, `status_transitions_marked_uncollectible_at:timestamp`, `status_transitions_paid_at:timestamp`, `status_transitions_voided_at:timestamp`, `subscription_id:varchar`, `subscription_proration_date:timestamp`, `subtotal:bigint`, `tax:bigint`, `tax_percent:double`, `total:bigint`, `transfer_data_amount:bigint`, `transfer_data_destination_id:varchar`, `webhooks_delivered_at:timestamp`

Joins: customer_id → customers.id; subscription_id → subscriptions.id; charge_id → charges.id; quote_id → quotes.id

- ⚠ period_start/period_end describe the service period, which often differs from created. Use the right one for revenue reporting.

### invoice_line_items
_One row per invoice line item._

`invoice_id:varchar`, `amount:bigint`, `batch_timestamp:timestamp`, `currency:varchar`, `description:varchar`, `discountable:boolean`, `id:varchar`, `invoice_item_id:varchar`, `line_item_parent_id:varchar`, `line_item_parent_type:varchar`, `period_end:timestamp`, `period_start:timestamp`, `plan_id:varchar`, `price_id:varchar`, `proration:boolean`, `proration_details_credited_items_invoice:varchar`, `proration_details_credited_items_invoice_line_items:varchar`, `quantity:bigint`, `quantity_decimal:varchar`, `source_id:varchar`, `source_type:varchar [subscription|invoice_item]`, `subscription:varchar`, `subscription_item_id:varchar`, `total_discount:bigint`, `total_exclusive_tax:bigint`

Joins: invoice_id → invoices.id; invoice_item_id → invoice_items.id; plan_id → plans.id; price_id → prices.id; source_id → sources.id; subscription_item_id → subscription_items.id

- ⚠ source_id is polymorphic — always filter on source_type before joining it to subscriptions or invoice_items.

### subscriptions
_One row per subscription, including canceled ones._

`id:varchar`, `application_fee_percent:double`, `application_id:varchar`, `automatic_tax_enabled:boolean`, `batch_timestamp:timestamp`, `billing:varchar [charge_automatically|send_invoice]`, `billing_cycle_anchor:timestamp`, `billing_mode_type:varchar`, `billing_mode_updated_at:timestamp`, `billing_thresholds_amount_gte:bigint`, `billing_thresholds_reset_billing_cycle_anchor:boolean`, `cancel_at:timestamp`, `cancel_at_period_end:boolean`, `canceled_at:timestamp`, `cancellation_details_comment:varchar`, `cancellation_details_feedback:varchar`, `cancellation_details_reason:varchar`, `cancellation_reason:varchar`, `cancellation_reason_text:varchar`, `created:timestamp`, `current_period_end:timestamp`, `current_period_start:timestamp`, `customer_id:varchar`, `days_until_due:bigint`, `default_payment_method_id:varchar`, `default_source_id:varchar`, `description:varchar`, `discount_checkout_session:varchar`, `discount_coupon_id:varchar`, `discount_customer_id:varchar`, `discount_end:timestamp`, `discount_invoice:varchar`, `discount_invoice_item:varchar`, `discount_promotion_code_id:varchar`, `discount_schedule_id:varchar`, `discount_start:timestamp`, `discount_subscription:varchar`, `discount_subscription_item:varchar`, `discounts:varchar`, `ended_at:timestamp`, `latest_invoice_id:varchar`, `managed_payments_enabled:boolean`, `next_pending_invoice_item_invoice:timestamp`, `on_behalf_of_id:varchar`, `pause_collection_behavior:varchar`, `pause_collection_resumes_at:timestamp`, `payment_settings_payment_method_options_acss_debit_mandate_options_transaction_type:varchar`, `payment_settings_payment_method_options_acss_debit_verification_method:varchar`, `payment_settings_payment_method_options_bancontact_preferred_language:varchar`, `payment_settings_payment_method_options_card_mandate_options_amount:bigint`, `payment_settings_payment_method_options_card_mandate_options_amount_type:varchar [fixed|maximum]`, `payment_settings_payment_method_options_card_mandate_options_description:varchar`, `payment_settings_payment_method_options_card_network:varchar`, `payment_settings_payment_method_options_card_request_three_d_secure:varchar`, `payment_settings_payment_method_options_customer_balance_bank_transfer_eu_bank_transfer_country:varchar`, `payment_settings_payment_method_options_customer_balance_bank_transfer_id_bank_transfer_bank:varchar`, `payment_settings_payment_method_options_customer_balance_bank_transfer_type:varchar`, `payment_settings_payment_method_options_customer_balance_funding_type:varchar`, `payment_settings_payment_method_options_us_bank_account_verification_method:varchar`, `payment_settings_save_default_payment_method:varchar`, `pending_invoice_item_interval:varchar [day|week|month|year]`, `pending_invoice_item_interval_count:bigint`, `pending_setup_intent_id:varchar`, `pending_update_billing_cycle_anchor:timestamp`, `pending_update_discount_checkout_session:varchar`, `pending_update_discount_coupon_id:varchar`, `pending_update_discount_customer_id:varchar`, `pending_update_discount_end:timestamp`, `pending_update_discount_invoice:varchar`, `pending_update_discount_invoice_item:varchar`, `pending_update_discount_promotion_code_id:varchar`, `pending_update_discount_schedule_id:varchar`, `pending_update_discount_start:timestamp`, `pending_update_discount_subscription:varchar`, `pending_update_discount_subscription_item:varchar`, `pending_update_expires_at:timestamp`, `pending_update_trial_end:timestamp`, `pending_update_trial_from_plan:boolean`, `plan_id:varchar`, `price_id:varchar`, `proration_discounts:varchar`, `quantity:bigint`, `schedule_id:varchar`, `start:timestamp`, `start_date:timestamp`, `status:varchar [incomplete|incomplete_expired|trialing|active|past_due|canceled|unpaid|paused]`, `status_details:varchar`, `tax_percent:double`, `transfer_data_amount_percent:double`, `transfer_data_destination_id:varchar`, `trial_end:timestamp`, `trial_settings_end_behavior_missing_payment_method:varchar`, `trial_start:timestamp`

Joins: customer_id → customers.id; price_id → prices.id; plan_id → plans.id

- ⚠ discounts is a comma-separated string, not an array. Unnest it: cross join unnest(split(discounts, ',')) as t(discount_id).
- ⚠ For MRR and churn, use subscription_item_change_events rather than deriving from status transitions.

### subscription_items
_One row per subscription item._

`id:varchar`, `subscription_id:varchar`, `batch_timestamp:timestamp`, `billing_thresholds_usage_gte:bigint`, `created:bigint`, `discounts:varchar`, `item_current_period_end:timestamp`, `item_current_period_start:timestamp`, `plan_amount:bigint`, `plan_created:timestamp`, `plan_currency:varchar`, `plan_id:varchar`, `plan_interval:varchar [day|week|month|year]`, `plan_interval_count:bigint`, `plan_nickname:varchar`, `plan_product_id:varchar`, `plan_trial_period_days:bigint`, `price_created:timestamp`, `price_currency:varchar`, `price_id:varchar`, `price_nickname:varchar`, `price_product_id:varchar`, `price_recurring_interval:varchar [day|week|month|year]`, `price_recurring_interval_count:bigint`, `price_recurring_trial_period_days:bigint`, `price_unit_amount:bigint`, `quantity:bigint`, `subscription:varchar`

Joins: subscription_id → subscriptions.id; price_id → prices.id; price_product_id → products.id

- ⚠ price_product_id lets you join straight to products — you don't need to hop through prices.

### products
_One row per product._

`id:varchar`, `active:boolean`, `batch_timestamp:timestamp`, `caption:varchar`, `created:timestamp`, `deactivate_on:varchar`, `description:varchar`, `name:varchar`, `shippable:boolean`, `statement_descriptor:varchar`, `type:varchar`, `unit_label:varchar`, `url:varchar`

### prices
_One row per price._

`id:varchar`, `active:boolean`, `batch_timestamp:timestamp`, `billing_scheme:varchar [per_unit|tiered]`, `created:timestamp`, `currency:varchar`, `custom_unit_amount_default:bigint`, `custom_unit_amount_maximum:bigint`, `custom_unit_amount_minimum:bigint`, `lookup_key:varchar`, `nickname:varchar`, `product_id:varchar`, `recurring_aggregate_usage:varchar`, `recurring_interval:varchar [day|week|month|year]`, `recurring_interval_count:bigint`, `recurring_meter_id:varchar`, `recurring_trial_period_days:bigint`, `recurring_usage_type:varchar [licensed|metered]`, `tax_behavior:varchar [inclusive|exclusive|unspecified]`, `tiers_mode:varchar [graduated|volume]`, `transform_quantity_divide_by:bigint`, `transform_quantity_round:varchar`, `type:varchar [one_time|recurring]`, `unit_amount:bigint`, `unit_amount_decimal:varchar`

Joins: product_id → products.id

- ⚠ When billing_scheme is 'tiered', unit_amount is null and the real pricing lives in price_tiers.

### subscription_item_change_events
_One row per change to a subscription item that moves MRR._

`event_timestamp:varchar`, `event_type:varchar [ACTIVE_START|ACTIVE_END|ACTIVE_UPGRADE|ACTIVE_DOWNGRADE|ACTIVE_QUANTITY_INCREASE|ACTIVE_QUANTITY_DECREASE]`, `subscription_item_id:varchar`, `currency:varchar`, `customer_id:varchar`, `local_event_timestamp:timestamp`, `mrr_change:bigint`, `price_id:varchar`, `product_id:varchar`, `quantity_change:bigint`, `subscription_id:varchar`

Joins: subscription_item_id → subscription_items.id; customer_id → customers.id; price_id → prices.id; product_id → products.id; subscription_id → subscriptions.id

- ⚠ event_type's enum values were confirmed by `SELECT event_type, COUNT(*) FROM subscription_item_change_events GROUP BY event_type` against a live Sigma account — aggregate value/count only, no customer data, ids or amounts.
- ⚠ event_type's observed values follow an ACTIVE_<VERB> pattern (start, end, upgrade, downgrade, quantity increase/decrease). Other subscription lifecycle states (e.g. trialing, canceled) may use analogous TRIAL_*/CANCELED_* prefixes not yet seen in any verified account — unconfirmed, flagged for further verification rather than assumed.
- ⚠ Cumulatively sum mrr_change per customer ordered by local_event_timestamp to reconstruct MRR at any point in time.
- ⚠ subscription_item_change_events_v2_beta has the same columns with 3-hour freshness instead of 24-hour.
- ⚠ Values are per-currency. Convert with exchange_rates_from_usd before summing across currencies.

### itemized_fees
_One row per individual fee._

`activity_end_time:timestamp`, `activity_start_time:timestamp`, `amount:double`, `balance_transaction_created:timestamp`, `balance_transaction_description:varchar`, `balance_transaction_id:varchar`, `connected_account_id:varchar`, `credit_note_number:varchar`, `currency:varchar`, `feature_description:varchar`, `feature_name:varchar`, `fee_category:varchar`, `fee_description:varchar`, `fee_transaction_created:timestamp`, `fee_transaction_id:varchar`, `incurred_at:timestamp`, `incurred_by:varchar`, `incurred_by_type:varchar`, `invoice_number:varchar`, `platform_id:varchar`, `pricing_tier:bigint`, `product:varchar`, `product_feature_description:varchar`, `settled_at:timestamp`, `settled_via:varchar [credit|balance|v2_balance|invoice|multiple]`, `suite:varchar`, `tax:double`

Joins: balance_transaction_id → balance_transactions.id; connected_account_id → connected_accounts.id

- ⚠ amount and tax are in MAJOR currency units here, unlike almost every other Sigma table. Do not divide by 100.
- ⚠ Column list is complete as published by Stripe.

### connected_accounts
_One row per connected account._

`id:varchar`, `business_name:varchar`, `country:varchar`, `email:varchar`, `future_requirements_currently_due:varchar`, `future_requirements_eventually_due:varchar?`, `future_requirements_past_due:varchar?`, `future_requirements_pending_verification:varchar?`, `legal_entity_address_city:varchar`, `legal_entity_address_line1:varchar`, `legal_entity_address_postal_code:varchar`, `legal_entity_address_state:varchar`, `legal_entity_dob_day:bigint`, `legal_entity_dob_month:bigint`, `legal_entity_dob_year:bigint`, `legal_entity_first_name:varchar`, `legal_entity_last_name:varchar`, `legal_entity_personal_id_number_provided:boolean`, `legal_entity_ssn_last_4_provided:boolean`, `legal_entity_type:varchar [individual|company]`, `legal_entity_verification_document_id:varchar`, `payouts_enabled:boolean`, `requirements_currently_due:varchar`, `requirements_eventually_due:varchar?`, `requirements_past_due:varchar?`, `requirements_pending_verification:varchar?`, `tos_acceptance_date:timestamp`, `tos_acceptance_ip:varchar`

- ⚠ Requirements columns are comma-separated strings, not arrays. Split them with split(col, ',') to unnest.
- ⚠ This table contains personal data. Handle exports according to your privacy obligations.

### checkout_sessions
_One row per Checkout session._

`id:varchar`, `batch_timestamp:timestamp`, `client_reference_id:varchar`, `consent_promotions:varchar`, `consent_terms_of_service:varchar`, `created:timestamp`, `currency:varchar`, `customer_id:varchar`, `invoice_id:varchar`, `managed_payments_enabled:boolean`, `mode:varchar [payment|setup|subscription]`, `payment_intent_id:varchar`, `payment_link_id:varchar`, `shipping_cost_amount_subtotal:bigint`, `shipping_cost_amount_tax:bigint`, `shipping_cost_amount_total:bigint`, `status:varchar [complete|expired]`, `subscription_id:varchar`

Joins: customer_id → customers.id; payment_intent_id → payment_intents.id; payment_link_id → payment_links.id; invoice_id → invoices.id; subscription_id → subscriptions.id

- ⚠ status = 'expired' identifies abandoned checkouts — the denominator for conversion rate.

### tax_transactions
_One row per tax transaction, one-to-one with its source object._

`id:varchar`, `created:timestamp`, `customer_details_address_city:varchar`, `customer_details_address_country:varchar`, `customer_details_address_line1:varchar`, `customer_details_address_line2:varchar`, `customer_details_address_postal_code:varchar`, `customer_details_address_source:varchar [billing|shipping]`, `customer_details_address_state:varchar`, `customer_details_ip_address:varchar`, `customer_details_taxability_override:varchar [customer_exempt|reverse_charge]`, `customer_id:varchar`, `posted_at:timestamp`, `provider:varchar`, `reference:varchar`, `reversal_original_tax_transaction_id:varchar`, `source_id:varchar`, `source_type:varchar [checkout|credit_note|external|invoice|payment_intent|refund]`, `tax_date:timestamp`, `type:varchar [transaction|reversal]`

Joins: customer_id → customers.id; source_id → sources.id

- ⚠ Join to invoices or checkout_sessions on source_id, filtering by source_type first.

### tax_transaction_line_items
_One row per tax line item._

`id:varchar`, `amount:bigint`, `amount_tax:bigint`, `currency:varchar`, `determined_destination_address_city:varchar`, `determined_destination_address_country:varchar`, `determined_destination_address_line1:varchar`, `determined_destination_address_line2:varchar`, `determined_destination_address_postal_code:varchar`, `determined_destination_address_state:varchar`, `determined_origin_address_city:varchar`, `determined_origin_address_country:varchar`, `determined_origin_address_line1:varchar`, `determined_origin_address_line2:varchar`, `determined_origin_address_postal_code:varchar`, `determined_origin_address_state:varchar`, `determined_tax_location_address_city:varchar`, `determined_tax_location_address_country:varchar`, `determined_tax_location_address_line1:varchar`, `determined_tax_location_address_line2:varchar`, `determined_tax_location_address_postal_code:varchar`, `determined_tax_location_address_state:varchar`, `product_id:varchar`, `quantity_decimal:varchar`, `reference:varchar`, `reversal_original_tax_transaction_line_item_id:varchar`, `source_line_item_id:varchar`, `tax_behavior:varchar [inclusive|exclusive]`, `tax_code:varchar`, `tax_transaction_id:varchar`

Joins: tax_transaction_id → tax_transactions.id; tax_code → tax_codes.id; product_id → products.id

- ⚠ Net sales excluding tax = case when tax_behavior = 'inclusive' then amount - amount_tax else amount end.

### exchange_rates_from_usd
_One row per date._

`date:varchar`, `buy_currency_exchange_rates:varchar`, `sell_currency:varchar`

- ⚠ This is a JSON string column, not a map. Parse it before use.
- ⚠ To convert an amount from currency A to currency B: amount / rate[A] * rate[B].

## All other tables

**analytics**: `aggregate_optimization_details`, `analytics_acceptance_itemized`, `authentication_report_attempts`, `charge_optimization_details`

**billing**: `billing_meter_event_summaries`, `billing_meter_invalid_events`, `billing_meter_invalid_events_payload`, `billing_meters`, `coupons`, `coupons_currency_options`, `coupons_metadata`, `credit_note_discount_amounts`, `credit_note_line_item_discount_amounts`, `credit_note_line_item_tax_amounts`, `credit_note_line_items`, `credit_note_tax_amounts`, `credit_notes`, `credit_notes_metadata`, `discounts`, `invoice_custom_fields`, `invoice_customer_tax_ids`, `invoice_items`, `invoice_items_metadata`, `invoice_line_item_discount_amounts`, `invoice_line_item_tax_amounts`, `invoice_payments`, `invoice_shipping_cost_taxes`, `invoices_metadata`, `plans`, `plans_metadata`, `price_tiers`, `prices_currency_options`, `prices_metadata`, `products_metadata`, `promotion_codes`, `quotes`, `recoveries`, `subscription_item_change_events_testmode`, `subscription_item_change_events_v2_beta`, `subscription_items_metadata`, `subscription_schedule_phase_add_invoice_items`, `subscription_schedule_phase_configuration_items`, `subscription_schedule_phases`, `subscription_schedule_phases_metadata`, `subscription_schedules`, `subscription_schedules_metadata`, `subscriptions_metadata`, `tax_rates`, `tax_rates_metadata`, `usage_records`

**capital**: `financing_balances`, `financing_offers`, `financing_transactions`

**checkout**: `checkout_custom_fields`, `checkout_line_items`, `payment_links`

**connect**: `accounts`, `accounts_metadata`

**connect-fees**: `application_fee_refunds`, `application_fee_refunds_metadata`, `application_fees`

**connect-issuing**: `connected_account_issuing_authorizations`

**connect-payments**: `connected_account_balance_transactions`, `connected_account_charges`

**cost**: `network_cost_insights_report`

**crypto**: `crypto_onramp_sessions`

**customers**: `customer_balance_transactions`, `customer_balance_transactions_metadata`, `customer_cash_balance_transactions`, `customer_tax_ids`, `customers_metadata`

**issuing**: `issuing_authorizations`, `issuing_authorizations_metadata`, `issuing_cardholders`, `issuing_cardholders_metadata`, `issuing_cards`, `issuing_cards_metadata`, `issuing_disputes`, `issuing_network_tokens`, `issuing_transactions`, `issuing_transactions_metadata`

**other**: `acceptance_reporting_v3_itemized`, `activity_report_itemized`, `cau_fees`, `charge_groups`, `connected_account_activity_report_itemized`, `connected_account_itemized_fees`, `connected_account_itemized_fees_beta`, `connected_account_summarized_balance_transactions`, `icplus_fees`, `itemized_fees_beta`, `revenue_recognition_debits_and_credits`, `summarized_balance_transactions`

**payments**: `charges_metadata`, `connected_account_payment_records`, `connected_account_payment_records_metadata`, `disputes_enhanced_eligibility`, `disputes_metadata`, `payment_intents_metadata`, `payment_methods`, `payment_methods_metadata`, `payment_records`, `payment_records_metadata`, `payment_reviews`, `refunds_metadata`, `rule_decisions`, `setup_attempts`, `setup_intents`, `setup_intents_metadata`, `sources`, `sources_metadata`

**radar**: `card_testing`, `early_fraud_warnings`, `radar_data_integration`, `radar_rule_attributes`, `radar_rules`

**tax**: `tax_codes`, `tax_transaction_jurisdiction_details`, `tax_transaction_line_items_metadata`, `tax_transaction_shipping_costs`, `tax_transactions_metadata`

**tax-reporting**: `tax_forms`

**terminal**: `terminal_hardware_order_items`, `terminal_hardware_order_metadata`, `terminal_hardware_order_shipment_tracking`, `terminal_hardware_order_tax_amounts`, `terminal_hardware_orders`, `terminal_locations`, `terminal_readers`

**transfers**: `transfer_reversals`, `transfer_reversals_metadata`, `transfers_metadata`

**treasury**: `treasury_financial_accounts`, `treasury_financial_accounts_metadata`, `treasury_inbound_transfers`, `treasury_inbound_transfers_metadata`, `treasury_outbound_payments`, `treasury_outbound_payments_metadata`, `treasury_outbound_transfers`, `treasury_outbound_transfers_metadata`, `treasury_transaction_entries`, `treasury_transactions`

**unclassified**: `acceptance_reporting_preaggregated_deduplicated_v2`, `acceptance_reporting_preaggregated_deduplicated_v3`, `acceptance_reporting_preaggregated_v2`, `acceptance_reporting_preaggregated_v3`, `account_capabilities_v2`, `analytics_acceptance_summarized`, `balance_transactions_product_enrichment`, `billing_credit_balance_transactions`, `billing_credit_grant_metadata`, `billing_credit_grants`, `billing_meter_dimensions`, `billing_meter_event_summary_segments`, `billing_schedule_applies_tos`, `billing_schedules`, `captures`, `cardsauth_eight_digit_bins`, `checkout_sessions_metadata`, `connected_account_money_management_adjustments`, `connected_account_money_management_financial_accounts`, `connected_account_money_management_financial_accounts_metadata`, `connected_account_money_management_financial_addresses`, `connected_account_money_management_inbound_transfers`, `connected_account_money_management_inbound_transfers_history`, `connected_account_money_management_outbound_payments`, `connected_account_money_management_outbound_payments_metadata`, `connected_account_money_management_outbound_transfers`, `connected_account_money_management_outbound_transfers_metadata`, `connected_account_money_management_received_credits`, `connected_account_money_management_received_debits`, `connected_account_money_management_transaction_entries`, `connected_account_money_management_transactions`, `customer_change_events`, `disputes_reporting_v1_itemized`, `draft_tax_forms`, `external_account_bank_accounts`, `external_account_cards`, `fee_credits_activities`, `iins`, `invoice_item_discount_amounts`, `issuing_authorizations_request_history`, `issuing_credit_ledger_adjustments`, `issuing_credit_ledger_entries`, `issuing_credit_policies`, `issuing_credit_policy_archive`, `issuing_credit_repayments`, `issuing_credit_underwriting_records`, `issuing_credit_underwriting_records_metadata`, `issuing_disputes_metadata`, `issuing_funding_obligations`, `issuing_funding_obligations_metadata`, `issuing_personalization_designs`, `issuing_personalization_designs_metadata`, `issuing_programs`, `issuing_programs_metadata`, `issuing_transaction_amount_details_tax`, `mandates`, `metered_items_beta`, `money_management_adjustments`, `money_management_financial_accounts`, `money_management_financial_accounts_metadata`, `money_management_financial_addresses`, `money_management_inbound_transfers`, `money_management_inbound_transfers_history`, `money_management_outbound_payments`, `money_management_outbound_payments_metadata`, `money_management_outbound_transfers`, `money_management_outbound_transfers_metadata`, `money_management_received_credits`, `money_management_received_debits`, `money_management_transaction_entries`, `money_management_transactions`, `payins_insights_lightning_astro_deduped_aggregated_with_attempts_v2`, `payins_insights_lightning_astro_raw_aggregated_with_attempts_v2`, `payment_evaluations`, `payment_intent_line_items`, `payout_minimum_balance_settings`, `platform_tax_settings`, `purchase_details_receipts`, `quote_metadata`, `rate_card_rates_beta`, `revenue_recognition_exclusions`, `revenue_recognition_manual_journal_entries`, `revenue_recognition_month_summary`, `subscription_schedule_phase_add_invoice_items_metadata`, `subscription_schedule_phase_configuration_items_metadata`, `subscriptions_paid_usage_beta`, `tax_form_filing_statuses`, `tax_transaction_customer_tax_ids`, `topups`, `topups_metadata`, `treasury_credit_reversals`, `treasury_credit_reversals_metadata`, `treasury_debit_reversals`, `treasury_debit_reversals_metadata`, `treasury_received_credits`, `treasury_received_debits`, `verification_reports`, `verification_sessions`

Full column detail for these is in `sigma_schema.json` / `SCHEMA.md`.

## Traps that cause wrong answers

1. Use `balance_transactions` for accounting, not `charges` — it is the only table that nets fees consistently across charges, refunds, disputes and payouts.
2. Exclude `refunds.reason = 'partial_capture'` from refund metrics; those are auth-and-capture artifacts, not customer refunds.
3. Exclude `disputes.status = 'prevented'` from chargeback ratios.
4. `charges.card_brand` is display-cased (`Visa`, `MasterCard`), not the API's lowercase.
5. `subscriptions.discounts` and `connected_accounts.requirements_*` are comma-separated strings, not arrays — `split()` and `unnest()` them.
6. `exchange_rates_from_usd.buy_currency_exchange_rates` is a JSON string — `cast(json_parse(...) as map(varchar, double))` before use.
7. Summing `tax_transaction_jurisdiction_details.amount_taxable` across jurisdictions does not equal the item amount; only `amount_tax` sums correctly.
8. Recent-period dispute and fraud data undercounts — those events arrive weeks late.
9. Sort by a unique id alongside your ordering key; Trino top-N and window functions are otherwise non-deterministic on ties.
10. `end`, `interval`, `type`, `value`, `key`, `date` are reserved words — quote them.

