---
title: "List Checkout Sessions"
method: GET
path: "/v1/checkout/sessions"
tags: ["Checkout Sessions"]
---

# List Checkout Sessions

`GET /v1/checkout/sessions`

Returns a list of your Checkout Sessions, most recent first.

## Query parameters

- `limit` integer, nullable — A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.
- `offset` integer, nullable — Number of objects to skip before returning results.
- `interval` integer, nullable — Filter by time interval in days (e.g., 30 for last 30 days).
- `payment_intent` string, nullable — Filter by payment intent ID.
- `status` 'open' | 'paid' | 'complete' | 'canceled' | 'expired' — The status of the checkout session.
- `customer` string, nullable — Filter by customer ID.
- `email` string, email, nullable — Filter results by customer email address.
- `subscription` string, nullable — Filter by subscription ID.
- `client_reference_id` string, nullable — Filter by the client reference ID you provided when creating the checkout session.
- `expand_customer` boolean, nullable — If true, expands the customer object in the response.
- `expand_payment_intent` boolean, nullable — If true, expands the payment intent object in the response.
- `expand` string — Comma-separated list of related objects to expand in the response.
- `created[gt]` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
- `created[gte]` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
- `created[lt]` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
- `created[lte]` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
- `starting_after` string, nullable — A cursor for use in pagination. `starting_after` is a checkout session ID that defines your place in the list. For instance, if you make a list request and receive 20 checkout sessions, ending with `fcs_xyz`, your subsequent call can include `starting_after=fcs_xyz` to fetch the next page.
- `ending_before` string, nullable — A cursor for use in pagination. `ending_before` is a checkout session ID that defines your place in the list. For instance, if you make a list request and receive 20 checkout sessions, starting with `fcs_abc`, your subsequent call can include `ending_before=fcs_abc` to fetch the previous page.
- `has_disputes` boolean, nullable — Return only checkout sessions with any associated dispute

## Response `200`

An envelope wrapping a list of checkout session objects.

- MultipleCheckoutSessionBodyForCheckoutSession — An envelope wrapping a list of checkout session objects.
  - `checkout_sessions` CheckoutSession[], required — The list of checkout sessions.
    - `allow_promotion_codes` boolean, required — Whether promotion codes can be applied to the checkout session.
    - `amount_total` integer, required — The total amount of the checkout session.
    - `amount_subtotal` integer, required — The subtotal amount of the checkout session.
    - `amount_received` integer, nullable — The amount actually received from payment intents.
    - `amount_refunded` integer, nullable — The total amount refunded for this checkout session.
    - `amount_disputed` integer, nullable — The total amount currently in dispute for this checkout session. Includes all dispute statuses except Won and Prevented.
    - `cancel_url` string, nullable — If set, Checkout displays a back button and customers will be directed to this URL if they decide to cancel payment and return to your website.
    - `captures` ExpandableForV1Capture[], required — A list of captures associated with the checkout session.
      - union — An expandable field — either a string ID or an expanded V1Capture object.
        - string
        - V1Capture — A capture represents a charge that has been captured from a customer's account. You can capture a charge in full or in part.
          - `amount_captured` integer, required — The total amount captured from the capture request
          - `amount_shipping_captured` integer, nullable — The shipping amount captured
          - `amount_discount_captured` integer, nullable — The discount amount captured
          - `amount_tax_captured` integer, nullable — The tax amount captured
          - `capture_id` string, required — The unique identifier for the capture.
          - `created_at` string, required — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
          - `items` V1CaptureItem[], required — The items associated with the capture
            - `amount_captured` integer, required — The amount captured that is associated with this specific capture item
            - `capture_item_id` string, required — The unique identifier for the capture item.
            - `created_at` string, required — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
            - `price` union — An expandable field — either a string ID or an expanded Price object.
              - …
            - `payment_intent` string, nullable — ID of the PaymentIntent that this capture item was settled against. `null` if no payment intent is associated with the item.
            - `test_mode` boolean, required — Whether the capture item is in test mode
          - `metadata` object, nullable — Metadata associated with the capture
          - `test_mode` boolean, required — Whether the capture is in test mode
    - `disputes` ExpandableForDispute[] — Disputes associated with this checkout session's payment intents.
      - union — An expandable field — either a string ID or an expanded Dispute object.
        - string
        - Dispute — A Dispute object represents a customer's challenge to a payment, raised through their card issuer or bank (also known as a chargeback). Use it to track the dispute's status, review the reason it was filed, and submit evidence to contest it.
          - `dispute_id` string, required — Unique identifier for the dispute, prefixed with `fdp_`.
          - `payment_intent_id` string, required — ID of the PaymentIntent that was disputed.
          - `checkout_session_id` string, nullable — ID of the Checkout Session associated with the disputed payment. `null` if the payment was not created via a checkout session.
          - `amount` integer, required — Disputed amount, in the smallest currency unit (e.g., `2500` = $25.00 USD). Usually the full amount of the disputed payment.
          - `currency` string, required — Three-letter ISO currency code, in lowercase (e.g., `usd`).
          - `charge_id` string, nullable — ID of the Charge that was disputed. `null` if the originating charge could not be resolved.
          - `metadata` object, required — Set of key-value pairs attached to the dispute for storing additional structured information.
          - `created_at` string, required — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
          - `status` union, required — The current status of a dispute.
            - 'lost' | 'needs_response' | 'under_review' | 'warning_closed' | 'warning_needs_response' | 'warning_under_review' | 'won'
            - 'prevented' — The dispute was prevented before reaching the card network.
          - `reason` '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', required — The reason for the dispute, as reported by the card network.
          - `is_charge_refundable` boolean, required — Whether the disputed charge can still be refunded. Once a payment is disputed, refunding it is typically no longer possible.
          - `evidence` DisputeEvidenceResponse — Evidence collected to respond to a dispute, with file references resolved to Flex file IDs.
            - `access_activity_log` string, nullable — A description of the activity on the customer's account or the order, showing that they accessed or used the product or service.
            - `customer_name` string, nullable — The name of the customer.
            - `customer_email_address` string, nullable — The email address of the customer.
            - `customer_purchase_ip` string, nullable — The IP address from which the customer made the purchase.
            - `billing_address` string, nullable — The billing address provided by the customer.
            - `shipping_address` string, nullable — The address to which a physical product was shipped.
            - `shipping_tracking_number` string, nullable — The tracking number for a physical product shipped to the customer.
            - `shipping_carrier` string, nullable — The delivery service that shipped a physical product (e.g., `usps`, `fedex`).
            - `shipping_date` string, nullable — The date on which a physical product was shipped to the customer.
            - `service_date` string, nullable — The date on which the service was provided to the customer.
            - `product_description` string, nullable — A description of the product or service purchased and an explanation of why the customer's claim is unwarranted.
            - `refund_policy_disclosure` string, nullable — Your refund policy as shown to the customer.
            - `refund_refusal_explanation` string, nullable — An explanation of why the customer is not entitled to a refund.
            - `cancellation_policy_disclosure` string, nullable — Your cancellation policy as shown to the customer.
            - `cancellation_rebuttal` string, nullable — An explanation of how the customer was shown that the subscription or service was not canceled.
            - `duplicate_charge_explanation` string, nullable — An explanation of the difference between the disputed payment and the charge the customer believes is a duplicate.
            - `duplicate_charge_id` string, nullable — The ID of the charge the customer claims is a duplicate of the disputed charge.
            - `uncategorized_text` string, nullable — Any additional evidence as free-form text.
            - `customer_communication` EvidenceFileInfo — A reference to a file attached as dispute evidence.
              - …
            - `customer_signature` EvidenceFileInfo — A reference to a file attached as dispute evidence.
              - …
            - `shipping_documentation` EvidenceFileInfo — A reference to a file attached as dispute evidence.
              - …
            - `receipt` EvidenceFileInfo — A reference to a file attached as dispute evidence.
              - …
            - `duplicate_charge_documentation` EvidenceFileInfo — A reference to a file attached as dispute evidence.
              - …
            - `service_documentation` EvidenceFileInfo — A reference to a file attached as dispute evidence.
              - …
            - `uncategorized_file` EvidenceFileInfo — A reference to a file attached as dispute evidence.
              - …
            - `cancellation_policy` EvidenceFileInfo — A reference to a file attached as dispute evidence.
              - …
            - `refund_policy` EvidenceFileInfo — A reference to a file attached as dispute evidence.
              - …
          - `evidence_details` EvidenceDetails — Details about the evidence submission deadline and status.
            - `due_by` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
            - `has_evidence` boolean, required — Whether evidence has been submitted
            - `past_due` boolean, required — Whether the evidence deadline has passed
            - `submission_count` integer, required — Number of times evidence has been submitted
          - `balance_transactions` DisputeBalanceTransactionInfo[], nullable — Balance transactions that record the funds withdrawn and returned as the dispute progresses (e.g., the initial debit and any reversal). An empty array when there are none.
            - `balance_transaction_id` string, required — ID of the balance transaction, prefixed with `fbtxn_`.
            - `amount` integer, required — Gross amount of the transaction, in the smallest currency unit (e.g., `2500` = $25.00 USD). Negative when funds are withdrawn from your balance.
            - `fee` integer, required — Fee applied to the transaction, in the smallest currency unit (e.g., `1500` = $15.00 USD). For a dispute, this is typically the dispute (chargeback) fee.
            - `net` integer, required — Net amount applied to your balance after fees, in the smallest currency unit (`net = amount - fee`).
            - `status` 'available' | 'pending', required — Availability status of the funds in a balance transaction. - `available`: Funds have settled and are available to be paid out. - `pending`: Funds are not yet available.
            - `type` string, nullable — The type of balance transaction (e.g., `adjustment`). `null` when not classified.
            - `reporting_category` string, nullable — The reporting category used to group the transaction in financial reports.
            - `category` string, nullable — The role this transaction plays within the dispute (e.g., the initial debit or a reversal). `null` when not categorized.
            - `created_at` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
          - `payment_method_details` DisputePaymentMethodDetails — Details of the payment method that was disputed.
            - `type` string, required — The type of payment method that was disputed (e.g., `card`).
            - `card` DisputePaymentMethodCard — Card-specific details for a disputed payment made with a card.
              - …
          - `test_mode` boolean, required — Whether the dispute was created in test mode. `true` for disputes created with test API keys.
          - `client_reference_id` string, nullable — Your own identifier for the customer or payment this dispute relates to, copied from the originating payment.
    - `capture_method` 'automatic' | 'automatic_async' | 'manual', required — Controls when funds are captured: automatically once the payment is confirmed, or manually at a later time.
    - `checkout_session_id` string, required — The ID of the Checkout Session.
    - `client_reference_id` string, nullable — A unique string to reference the Checkout Session. This can be a customer ID, a cart ID, or similar, and can be used to reconcile the session with your internal systems.
    - `created_at` integer, required — Time at which the Checkout Session was created, as a Unix timestamp in seconds.
    - `customer` union — An expandable field — either a string ID or an expanded Customer object.
      - string
      - Customer — A Customer object represents a customer of your business. Use it to track payments, store reusable payment methods, and reference the customer on checkout sessions, invoices, and subscriptions.
        - `customer_id` string, required — The unique identifier for the customer.
        - `owner_partner_id` string, nullable — The partner that owns this customer. When a customer is shared with you by another partner in your organization, this is that sibling partner; otherwise it is your own partner id.
        - `first_name` string, required — The customer's first name.
        - `last_name` string, required — The customer's last name.
        - `email` string, email, required — The customer's email address.
        - `phone` string, phone, nullable — The customer's phone number.
        - `employer` string, nullable — The customer's employer.
        - `shipping` ShippingAddress — A ShippingAddress represents the postal address a physical order is delivered to. It is referenced by checkout sessions and customers.
          - `shipping_address_id` string, required — Unique identifier for the shipping address.
          - `line1` string, nullable — The first line of the street address (e.g., street number and name).
          - `line2` string, nullable — The second line of the street address (e.g., apartment, suite, or unit).
          - `city` string, nullable — City, district, suburb, town, or village.
          - `state` string, nullable — State, county, province, or region.
          - `postal_code` string, nullable — ZIP or postal code.
          - `country` string, nullable — Two-letter country code (ISO 3166-1 alpha-2, e.g., `US`).
        - `metadata` object, nullable — Metadata associated with the customer.
        - `created_at` string, required — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
        - `test_mode` boolean, required — Whether the customer was created in test mode.
    - `defaults` CustomerDefaults — Customer values used to prefill the customer details on the hosted checkout page.
      - `customer_id` string, nullable — ID of an existing Customer to associate with the session. When set, the customer's saved details are used instead of the other fields.
      - `email` string, nullable — The customer's email address, prefilled on the checkout page.
      - `first_name` string, nullable — The customer's first name, prefilled on the checkout page.
      - `last_name` string, nullable — The customer's last name, prefilled on the checkout page.
      - `phone` string, nullable — The customer's phone number in E.164 format, prefilled on the checkout page.
    - `expires_at` integer, required — The time at which the Checkout Session will expire.
    - `invoice` string, nullable — The ID of the invoice this Checkout Session is for, if any.
    - `hsa_fsa_eligible` boolean, required — Whether the Checkout Session is HSA/FSA eligible.
    - `letter_of_medical_necessity_required` boolean, required — Whether a letter of medical necessity is required for this Checkout Session.
    - `metadata` object, nullable — Metadata to attach to the Checkout Session.
    - `mode` 'payment' | 'subscription' | 'off_session' | 'setup', required — The mode of the checkout session, which determines what happens on completion: a one-time payment, starting a subscription, charging a saved payment method off-session, or saving a payment method for future use.
    - `origin` 'shopify' | 'shopline' | 'prepurchase' | 'postpurchase' — Origin of where the checkout session was generated
    - `payment_intent` union — An expandable field — either a string ID or an expanded PaymentIntent object.
      - string
      - PaymentIntent — A PaymentIntent tracks Flex's process of collecting a payment from a customer: the amount to collect, its lifecycle status, and references to the customer, payment method, and resulting charge. A single PaymentIntent may produce several charges over its lifetime (for example after a retry); the most recent is referenced by `latest_charge`.
        - `payment_intent_id` string, required — The unique identifier for the payment intent.
        - `amount` integer, required — The amount of the payment intent in cents.
        - `amount_capturable` integer, nullable — The amount that can be captured from this PaymentIntent.
        - `amount_received` integer, nullable — The amount that was received in cents.
        - `application_fee_amount` integer, nullable — The amount of the Flex application fee.
        - `customer` union — An expandable field — either a string ID or an expanded Customer object.
          - string
          - Customer — A Customer object represents a customer of your business. Use it to track payments, store reusable payment methods, and reference the customer on checkout sessions, invoices, and subscriptions.
            - `customer_id` string, required — The unique identifier for the customer.
            - `owner_partner_id` string, nullable — The partner that owns this customer. When a customer is shared with you by another partner in your organization, this is that sibling partner; otherwise it is your own partner id.
            - `first_name` string, required — The customer's first name.
            - `last_name` string, required — The customer's last name.
            - `email` string, email, required — The customer's email address.
            - `phone` string, phone, nullable — The customer's phone number.
            - `employer` string, nullable — The customer's employer.
            - `shipping` ShippingAddress — A ShippingAddress represents the postal address a physical order is delivered to. It is referenced by checkout sessions and customers.
              - …
            - `metadata` object, nullable — Metadata associated with the customer.
            - `created_at` string, required — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
            - `test_mode` boolean, required — Whether the customer was created in test mode.
        - `transfer_data` TransferData — Describes how funds collected by a PaymentIntent are routed to your account. Present only when the payment carries an application fee or an explicit transfer amount.
          - `amount` integer, nullable — The amount to transfer, in cents.
          - `destination` string, required — The destination account of the transfer.
        - `status` 'canceled' | 'processing' | 'requires_action' | 'requires_capture' | 'requires_confirmation' | 'requires_payment_method' | 'succeeded', required — The current lifecycle status of the payment intent.
        - `latest_charge` union — An expandable field — either a string ID or an expanded Charge object.
          - string
          - Charge — A Charge represents a single attempt to move funds for a payment, including its outcome and any 3D Secure, decline, and risk details. A PaymentIntent can have multiple charges over its lifetime (for example after a retry); the most recent is referenced by the PaymentIntent's `latest_charge`.
            - `charge_id` string, required — Unique identifier for the charge.
            - `amount` integer, required — Amount intended to be collected by this payment.
            - `amount_captured` integer, required — Amount in cents captured (can be less than the amount attribute on the charge if a partial capture was made).
            - `amount_refunded` integer, required — Amount in cents refunded (can be less than the amount attribute on the charge if a partial refund was made).
            - `application_fee_amount` integer, nullable — The Flex application fee for the charge
            - `captured` boolean, required — If the charge was created without capturing, this Boolean represents whether it is still uncaptured or has since been captured.
            - `created_at` string, required — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
            - `customer` union — An expandable field — either a string ID or an expanded Customer object.
              - …
            - `invoice` union — An expandable field — either a string ID or an expanded Invoice object.
              - …
            - `failure_message` string, nullable — Message to user further explaining reason for charge failure if available.
            - `disputed` boolean, required — Whether the charge has been disputed.
            - `paid` boolean, required — true if the charge succeeded, or was successfully authorized for later capture.
            - `refunded` boolean, required — Whether the charge has been fully refunded. If the charge is only partially refunded, this attribute will still be false.
            - `refunds` ExpandableForRefund[], nullable — A list of refunds that have been applied to the charge.
              - …
            - `payment_intent` ExpandableForPaymentIntent, required — recursive
            - `status` 'succeeded' | 'pending' | 'failed', required — The outcome of the charge.
            - `test_mode` boolean, required — Whether the charge was created in test mode.
            - `transfer_group` string, nullable — A string that identifies the resulting payment as part of a group
            - `payment_method_id` string, nullable — The ID of the PaymentMethod.
            - `three_d_secure` ThreeDSecureOutcome — 3D Secure authentication outcome for the charge.
              - …
            - `decline_details` DeclineDetails — Decline and risk details captured at the time of a failed or blocked charge. Absent for successful, non-declined charges.
              - …
            - `balance_transaction` union — An expandable field — either a string ID or an expanded BalanceTransaction object.
              - …
            - `failure_balance_transaction` union — An expandable field — either a string ID or an expanded BalanceTransaction object.
              - …
        - `created_at` string, required — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
        - `invoice` union — An expandable field — either a string ID or an expanded Invoice object.
          - string
          - Invoice — An Invoice is a statement of the amounts owed by a customer, generated when a subscription advances through its billing cycle. It tracks the total, amount due, and amount paid, along with the payment intent, charge, and billing period that produced it, and its current lifecycle status as it is finalized and collected.
            - `invoice_id` string, required — The id of the invoice.
            - `total` integer, required — The total amount of the invoice in cents.
            - `amount_due` integer, required — The amount due in cents.
            - `amount_paid` integer, required — The amount paid in cents.
            - `payment_intent` ExpandableForPaymentIntent — recursive
            - `charge` string, nullable — The id of the latest charge for this invoice.
            - `customer` union — An expandable field — either a string ID or an expanded Customer object.
              - …
            - `period_end` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
            - `period_start` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
            - `subscription` union — An expandable field — either a string ID or an expanded Subscription object.
              - …
            - `paid_at` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
            - `status` 'draft' | 'open' | 'void' | 'paid' | 'uncollectible', required — The lifecycle status of the invoice.
            - `collection_method` 'charge_automatically' | 'send_invoice', required — How payment for the invoice is collected: automatically from the customer's saved payment method, or by emailing them an invoice to pay.
            - `test_mode` boolean, required — Whether or not the invoice was created in test mode.
            - `metadata` object, nullable — Metadata associated with the invoice.
            - `created_at` string, required — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
        - `capture_method` 'automatic' | 'automatic_async' | 'manual', required — Controls when funds are captured: automatically once the payment is confirmed, or manually at a later time.
        - `client_secret` string, nullable — The client secret of the payment intent.
        - `metadata` object, nullable — The metadata associated with the payment intent.
        - `payment_method` union — An expandable field — either a string ID or an expanded PaymentMethod object.
          - string
          - PaymentMethod — A PaymentMethod object represents a customer's payment instrument (such as a card) that can be used to collect payments. Attach it to a Customer to reuse it across checkout sessions, invoices, and subscriptions.
            - `payment_method_id` string, required — The ID of the PaymentMethod.
            - `billing_details` BillingDetails, required — Billing information associated with a PaymentMethod, such as the cardholder's billing address, email, name, and phone number.
              - …
            - `customer` union, required — An expandable field — either a string ID or an expanded Customer object.
              - …
            - `metadata` object, nullable — Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
            - `card` Card, required — A Card object describes the card backing a PaymentMethod, including its brand, funding type, expiration, and the last four digits.
              - …
            - `created_at` string, required — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
            - `test_mode` boolean, required — Whether this PaymentMethod is in test mode.
            - `off_session` boolean, required — Whether this PaymentMethod is valid for off_session (customer not present) purchase flows.
        - `test_mode` boolean, required — Whether the payment intent is in test mode.
        - `transfer_group` string, nullable — A string that identifies the resulting payment as part of a group
        - `payment_card_type` 'primary' | 'secondary' — - `primary`: In a split cart, `Primary` refers to the HSA/FSA eligible card. In a single cart (whether it's HSA/FSA or a fully ineligible cart), `Primary` refers to the only payment card used. - `secondary`: In a split cart and partial authorization payment, `Secondary` refers to the non-eligible or backup credit card used for ineligible items.
        - `letter_fee_amount` integer, nullable — Letter fee portion of application_fee_amount (waterfall allocation to HSA/FSA)
        - `transaction_fee` integer, nullable — Transaction fee portion of application_fee_amount (percentage + fixed fee)
        - `last_payment_error` LastPaymentError — Structured error details from the most recent failed payment attempt on a payment intent.
          - `type` string, required — The type of error (card, invalid_request, api, etc.)
          - `code` string, nullable — Machine-readable error code (card_declined, expired_card, etc.)
          - `decline_code` string, nullable — Card-specific decline code (insufficient_funds, lost_card, etc.)
          - `message` string, nullable — Human-readable error description.
          - `payment_method` string, nullable — The Flex payment method ID that failed.
    - `payment_intents` ExpandableForPaymentIntent[], nullable — All payment intents that belong to this Checkout Session. Each is expandable if expand_payment_intent is set.
      - union — An expandable field — either a string ID or an expanded PaymentIntent object.
        - string
        - PaymentIntent — A PaymentIntent tracks Flex's process of collecting a payment from a customer: the amount to collect, its lifecycle status, and references to the customer, payment method, and resulting charge. A single PaymentIntent may produce several charges over its lifetime (for example after a retry); the most recent is referenced by `latest_charge`.
          - `payment_intent_id` string, required — The unique identifier for the payment intent.
          - `amount` integer, required — The amount of the payment intent in cents.
          - `amount_capturable` integer, nullable — The amount that can be captured from this PaymentIntent.
          - `amount_received` integer, nullable — The amount that was received in cents.
          - `application_fee_amount` integer, nullable — The amount of the Flex application fee.
          - `customer` union — An expandable field — either a string ID or an expanded Customer object.
            - string
            - Customer — A Customer object represents a customer of your business. Use it to track payments, store reusable payment methods, and reference the customer on checkout sessions, invoices, and subscriptions.
              - …
          - `transfer_data` TransferData — Describes how funds collected by a PaymentIntent are routed to your account. Present only when the payment carries an application fee or an explicit transfer amount.
            - `amount` integer, nullable — The amount to transfer, in cents.
            - `destination` string, required — The destination account of the transfer.
          - `status` 'canceled' | 'processing' | 'requires_action' | 'requires_capture' | 'requires_confirmation' | 'requires_payment_method' | 'succeeded', required — The current lifecycle status of the payment intent.
          - `latest_charge` union — An expandable field — either a string ID or an expanded Charge object.
            - string
            - Charge — A Charge represents a single attempt to move funds for a payment, including its outcome and any 3D Secure, decline, and risk details. A PaymentIntent can have multiple charges over its lifetime (for example after a retry); the most recent is referenced by the PaymentIntent's `latest_charge`.
              - …
          - `created_at` string, required — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
          - `invoice` union — An expandable field — either a string ID or an expanded Invoice object.
            - string
            - Invoice — An Invoice is a statement of the amounts owed by a customer, generated when a subscription advances through its billing cycle. It tracks the total, amount due, and amount paid, along with the payment intent, charge, and billing period that produced it, and its current lifecycle status as it is finalized and collected.
              - …
          - `capture_method` 'automatic' | 'automatic_async' | 'manual', required — Controls when funds are captured: automatically once the payment is confirmed, or manually at a later time.
          - `client_secret` string, nullable — The client secret of the payment intent.
          - `metadata` object, nullable — The metadata associated with the payment intent.
          - `payment_method` union — An expandable field — either a string ID or an expanded PaymentMethod object.
            - string
            - PaymentMethod — A PaymentMethod object represents a customer's payment instrument (such as a card) that can be used to collect payments. Attach it to a Customer to reuse it across checkout sessions, invoices, and subscriptions.
              - …
          - `test_mode` boolean, required — Whether the payment intent is in test mode.
          - `transfer_group` string, nullable — A string that identifies the resulting payment as part of a group
          - `payment_card_type` 'primary' | 'secondary' — - `primary`: In a split cart, `Primary` refers to the HSA/FSA eligible card. In a single cart (whether it's HSA/FSA or a fully ineligible cart), `Primary` refers to the only payment card used. - `secondary`: In a split cart and partial authorization payment, `Secondary` refers to the non-eligible or backup credit card used for ineligible items.
          - `letter_fee_amount` integer, nullable — Letter fee portion of application_fee_amount (waterfall allocation to HSA/FSA)
          - `transaction_fee` integer, nullable — Transaction fee portion of application_fee_amount (percentage + fixed fee)
          - `last_payment_error` LastPaymentError — Structured error details from the most recent failed payment attempt on a payment intent.
            - `type` string, required — The type of error (card, invalid_request, api, etc.)
            - `code` string, nullable — Machine-readable error code (card_declined, expired_card, etc.)
            - `decline_code` string, nullable — Card-specific decline code (insufficient_funds, lost_card, etc.)
            - `message` string, nullable — Human-readable error description.
            - `payment_method` string, nullable — The Flex payment method ID that failed.
    - `redirect_url` string, uri, required — The URL to redirect to access the checkout session.
    - `refunds` ExpandableForRefund[], required — The refunds associated with this Checkout Session.
      - union — An expandable field — either a string ID or an expanded Refund object.
        - string
        - Refund — A Refund object represents the return of funds for a previously succeeded payment, in whole or in part. Issuing a refund reverses the corresponding charge(s) on the customer's HSA/FSA and/or credit card payment methods.
          - `refund_id` string, required — The ID of the refund
          - `payment_intent_id` string, nullable — The ID of the payment intent that the refund is associated with
          - `amount` integer, required — The amount of the refund in cents
          - `created_at` string, required — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
          - `reason` 'duplicate' | 'fraudulent' | 'requested_by_customer' | 'expired_uncaptured_charge' — The reason the refund was issued.
          - `status` 'pending' | 'requires_action' | 'succeeded' | 'failed' | 'canceled', required — The current status of the refund.
          - `test_mode` boolean, required — Whether the refund was created in test mode
          - `metadata` object, nullable — Metadata attached to the refund
          - `reference_id` string, nullable — Reference number that the customer can use to trace this refund with their bank or card issuer.
          - `reference_type` 'acquirer_reference_number' | 'system_trace_audit_number' | 'retrieval_reference_number' — The kind of reference number associated with the refund.
          - `reference_status` 'available' | 'pending' | 'unavailable' — The status of the refund's acquirer reference.
          - `items` RefundItem[] — List of refund items (charges that were refunded)
            - `amount_refunded` integer, required — The amount refunded from this charge in cents
            - `payment_intent` string, nullable — The ID of the payment intent that the refund is associated with
            - `payment_method_id` string, nullable — The ID of the payment method used for this refund
            - `reference_id` string, nullable — Reference number that the customer can use to trace this refund with their bank or card issuer.
            - `reference_type` 'acquirer_reference_number' | 'system_trace_audit_number' | 'retrieval_reference_number' — The kind of reference number associated with the refund.
            - `reference_status` 'available' | 'pending' | 'unavailable' — The status of the refund's acquirer reference.
          - `subscription_id` string, nullable — The subscription this refund is associated with (for subscription cancellation refunds)
          - `invoice_id` string, nullable — The invoice this refund is associated with (for subscription billing period refunds)
          - `balance_transaction` union — An expandable field — either a string ID or an expanded BalanceTransaction object.
            - string
            - BalanceTransaction — A BalanceTransaction represents a single change to your Flex account balance — for example, a charge, refund, dispute, fee, or payout. Each transaction records how much was added or removed, the processing fee, and the resulting net effect on your balance, and links back to the Flex object that caused it.
              - …
          - `failure_balance_transaction` union — An expandable field — either a string ID or an expanded BalanceTransaction object.
            - string
            - BalanceTransaction — A BalanceTransaction represents a single change to your Flex account balance — for example, a charge, refund, dispute, fee, or payout. Each transaction records how much was added or removed, the processing fee, and the resulting net effect on your balance, and links back to the Flex object that caused it.
              - …
    - `setup_intent` string, nullable — The ID of the SetupIntent for this Checkout Session, if any.
    - `shipping_options` ShippingRateOptions — A resolved shipping option attached to a checkout session or payment link, capturing the applied shipping rate and its cost.
      - `shipping_rate_id` string, required — ID of the applied shipping rate.
      - `shipping_amount` integer, required — The shipping cost, in the smallest currency unit (e.g., `500` = $5.00 USD). Charged in USD.
      - `display_name` string, nullable — The display name of the shipping rate (e.g., "Standard Shipping", "Express").
    - `shipping_address_collection` boolean, required — When set, present options for shipping address collection from a customer.
    - `shipping_details` ShippingAddress — A ShippingAddress represents the postal address a physical order is delivered to. It is referenced by checkout sessions and customers.
      - `shipping_address_id` string, required — Unique identifier for the shipping address.
      - `line1` string, nullable — The first line of the street address (e.g., street number and name).
      - `line2` string, nullable — The second line of the street address (e.g., apartment, suite, or unit).
      - `city` string, nullable — City, district, suburb, town, or village.
      - `state` string, nullable — State, county, province, or region.
      - `postal_code` string, nullable — ZIP or postal code.
      - `country` string, nullable — Two-letter country code (ISO 3166-1 alpha-2, e.g., `US`).
    - `split_cart` union — An expandable field — either a string ID or an expanded SplitCart object.
      - string
      - SplitCart — A SplitCart represents a checkout session whose items are divided into two separate payments: one for HSA/FSA-eligible items and one for non-eligible items. It is created automatically when a session mixes eligible and ineligible products, so the customer can pay for the eligible portion with their HSA/FSA card.
        - `split_cart_id` string, required — Unique identifier for the split cart.
        - `eligible_cart` Cart, required — One half of a SplitCart: the totals and payment intent for either the HSA/FSA-eligible or the non-eligible items in a split checkout.
          - `amount_total` integer, required — Total amount for this cart after tax, shipping, and discounts, in the smallest currency unit (e.g., `2500` = $25.00 USD).
          - `amount_subtotal` integer, required — Sum of the line item amounts before tax, shipping, and discounts, in the smallest currency unit (e.g., `2000` = $20.00 USD).
          - `amount_tax` integer, required — Total tax applied to this cart, in the smallest currency unit (e.g., `150` = $1.50 USD).
          - `amount_discount` integer, required — Total discount applied to this cart, in the smallest currency unit (e.g., `500` = $5.00 USD).
          - `payment_intent` union — An expandable field — either a string ID or an expanded PaymentIntent object.
            - string
            - PaymentIntent — A PaymentIntent tracks Flex's process of collecting a payment from a customer: the amount to collect, its lifecycle status, and references to the customer, payment method, and resulting charge. A single PaymentIntent may produce several charges over its lifetime (for example after a retry); the most recent is referenced by `latest_charge`.
              - …
          - `amount_shipping` integer, nullable — Total shipping charged to this cart, in the smallest currency unit (e.g., `599` = $5.99 USD). `null` when no shipping applies.
        - `non_eligible_cart` Cart, required — One half of a SplitCart: the totals and payment intent for either the HSA/FSA-eligible or the non-eligible items in a split checkout.
          - `amount_total` integer, required — Total amount for this cart after tax, shipping, and discounts, in the smallest currency unit (e.g., `2500` = $25.00 USD).
          - `amount_subtotal` integer, required — Sum of the line item amounts before tax, shipping, and discounts, in the smallest currency unit (e.g., `2000` = $20.00 USD).
          - `amount_tax` integer, required — Total tax applied to this cart, in the smallest currency unit (e.g., `150` = $1.50 USD).
          - `amount_discount` integer, required — Total discount applied to this cart, in the smallest currency unit (e.g., `500` = $5.00 USD).
          - `payment_intent` union — An expandable field — either a string ID or an expanded PaymentIntent object.
            - string
            - PaymentIntent — A PaymentIntent tracks Flex's process of collecting a payment from a customer: the amount to collect, its lifecycle status, and references to the customer, payment method, and resulting charge. A single PaymentIntent may produce several charges over its lifetime (for example after a retry); the most recent is referenced by `latest_charge`.
              - …
          - `amount_shipping` integer, nullable — Total shipping charged to this cart, in the smallest currency unit (e.g., `599` = $5.99 USD). `null` when no shipping applies.
        - `checkout_session_id` string, nullable — ID of the Checkout Session this split cart belongs to. `null` until the split cart has been associated with a session.
    - `status` 'open' | 'paid' | 'complete' | 'canceled' | 'expired', required — The status of the checkout session.
    - `success_url` string, required — The URL the customer will be directed to after the payment or subscription creation is successful.
    - `fees` V1Fee[] — The fees associated with this Checkout Session.
      - `fee_id` string, required — Unique identifier for the fee.
      - `amount` integer, required — The amount of the fee in cents.
      - `name` string, nullable — The name of the fee.
      - `description` string, nullable — The description of the fee.
      - `fee_type` 'lmn_consultation' | 'custom', required — The kind of fee applied to a checkout session: a Letter of Medical Necessity consultation fee, or a custom fee you define.
      - `applied` boolean, nullable — Whether the fee was applied to the checkout session.
    - `custom_text` CustomText — Custom text displayed to customers in checkout UI
      - `after_submit` CustomTextMessage — Individual message field matching Stripe's structure
        - `message` string, required — The actual text message (plain text only, 1-1200 characters)
      - `shipping_address` CustomTextMessage — Individual message field matching Stripe's structure
        - `message` string, required — The actual text message (plain text only, 1-1200 characters)
      - `submit` CustomTextMessage — Individual message field matching Stripe's structure
        - `message` string, required — The actual text message (plain text only, 1-1200 characters)
      - `terms_of_service_acceptance` CustomTextMessage — Individual message field matching Stripe's structure
        - `message` string, required — The actual text message (plain text only, 1-1200 characters)
      - `terms_of_service_checkbox_required` boolean, nullable — Whether the terms of service acceptance checkbox must be shown and checked
      - `payment` CustomTextMessage — Individual message field matching Stripe's structure
        - `message` string, required — The actual text message (plain text only, 1-1200 characters)
    - `subscription` union — An expandable field — either a string ID or an expanded Subscription object.
      - string
      - Subscription — A Subscription represents a recurring billing arrangement that charges a customer at a fixed interval. It tracks the items being billed, the current billing period, its lifecycle status, and the invoices it generates each cycle.
        - `subscription_id` string, required — Unique identifier for the object.
        - `created_at` string, required — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
        - `items` V1SubscriptionItem[], required — The items the customer is subscribed to.
          - `subscription_item_id` string, required — Unique identifier for the subscription item.
          - `price` union, required — An expandable field — either a string ID or an expanded Price object.
            - string
            - Price — Prices define the unit cost and (optional) billing cycle for both recurring and one-time purchases of products. Prices belong to a given product. Different physical goods or levels of service should be represented by products, and pricing options should be represented by prices.
              - …
          - `quantity` integer, required — The number of units of the price the customer is subscribed to.
          - `created_at` string, required — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
          - `updated_at` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
          - `test_mode` boolean, required — Whether the subscription item exists in test mode.
        - `latest_invoice` union — An expandable field — either a string ID or an expanded Invoice object.
          - string
          - Invoice — An Invoice is a statement of the amounts owed by a customer, generated when a subscription advances through its billing cycle. It tracks the total, amount due, and amount paid, along with the payment intent, charge, and billing period that produced it, and its current lifecycle status as it is finalized and collected.
            - `invoice_id` string, required — The id of the invoice.
            - `total` integer, required — The total amount of the invoice in cents.
            - `amount_due` integer, required — The amount due in cents.
            - `amount_paid` integer, required — The amount paid in cents.
            - `payment_intent` union — An expandable field — either a string ID or an expanded PaymentIntent object.
              - …
            - `charge` string, nullable — The id of the latest charge for this invoice.
            - `customer` union — An expandable field — either a string ID or an expanded Customer object.
              - …
            - `period_end` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
            - `period_start` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
            - `subscription` ExpandableForSubscription — recursive
            - `paid_at` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
            - `status` 'draft' | 'open' | 'void' | 'paid' | 'uncollectible', required — The lifecycle status of the invoice.
            - `collection_method` 'charge_automatically' | 'send_invoice', required — How payment for the invoice is collected: automatically from the customer's saved payment method, or by emailing them an invoice to pay.
            - `test_mode` boolean, required — Whether or not the invoice was created in test mode.
            - `metadata` object, nullable — Metadata associated with the invoice.
            - `created_at` string, required — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
        - `customer` union — An expandable field — either a string ID or an expanded Customer object.
          - string
          - Customer — A Customer object represents a customer of your business. Use it to track payments, store reusable payment methods, and reference the customer on checkout sessions, invoices, and subscriptions.
            - `customer_id` string, required — The unique identifier for the customer.
            - `owner_partner_id` string, nullable — The partner that owns this customer. When a customer is shared with you by another partner in your organization, this is that sibling partner; otherwise it is your own partner id.
            - `first_name` string, required — The customer's first name.
            - `last_name` string, required — The customer's last name.
            - `email` string, email, required — The customer's email address.
            - `phone` string, phone, nullable — The customer's phone number.
            - `employer` string, nullable — The customer's employer.
            - `shipping` ShippingAddress — A ShippingAddress represents the postal address a physical order is delivered to. It is referenced by checkout sessions and customers.
              - …
            - `metadata` object, nullable — Metadata associated with the customer.
            - `created_at` string, required — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
            - `test_mode` boolean, required — Whether the customer was created in test mode.
        - `status` 'incomplete' | 'incomplete_expired' | 'trialing' | 'active' | 'past_due' | 'canceled' | 'unpaid' | 'paused', required — The current lifecycle status of the subscription.
        - `cancel_at_period_end` boolean, required — If the subscription has been canceled with the at_period_end flag set to true, cancel_at_period_end on the subscription will be true. You can use this attribute to determine whether a subscription that has a status of active is scheduled to be canceled at the end of the current period.
        - `current_period_end` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
        - `current_period_start` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
        - `metadata` object, nullable — A set of key/value pairs that you can attach to a subscription object.
        - `test_mode` boolean, required — Whether the subscription is in test mode.
        - `client_secret` SubscriptionClientSecret — Client secrets used to confirm the subscription's first payment or payment-method setup from your frontend. Present only while the subscription is being activated.
          - `setup_secret` string, nullable — Client secret of the SetupIntent used to collect and save a payment method for the subscription (for example, during a trial with no immediate charge). `null` when no setup is required. Do not log or store it; expose only to the customer over TLS.
          - `payment_secret` string, nullable — Client secret of the PaymentIntent used to confirm the subscription's first payment from your frontend. `null` when no immediate payment is required. Do not log or store it; expose only to the customer over TLS.
        - `proration_behavior` 'always_invoice' | 'create_prorations' | 'none' — How proration is handled when the subscription changes mid-billing-cycle.
        - `trial_start` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
        - `trial_end` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
        - `cancel_at` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
        - `canceled_at` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
        - `default_payment_method` union — An expandable field — either a string ID or an expanded PaymentMethod object.
          - string
          - PaymentMethod — A PaymentMethod object represents a customer's payment instrument (such as a card) that can be used to collect payments. Attach it to a Customer to reuse it across checkout sessions, invoices, and subscriptions.
            - `payment_method_id` string, required — The ID of the PaymentMethod.
            - `billing_details` BillingDetails, required — Billing information associated with a PaymentMethod, such as the cardholder's billing address, email, name, and phone number.
              - …
            - `customer` union, required — An expandable field — either a string ID or an expanded Customer object.
              - …
            - `metadata` object, nullable — Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
            - `card` Card, required — A Card object describes the card backing a PaymentMethod, including its brand, funding type, expiration, and the last four digits.
              - …
            - `created_at` string, required — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
            - `test_mode` boolean, required — Whether this PaymentMethod is in test mode.
            - `off_session` boolean, required — Whether this PaymentMethod is valid for off_session (customer not present) purchase flows.
        - `discounts` Discount[], nullable — The discounts applied to the subscription. Only present when `expand=discounts` is requested; omitted from the response otherwise. Usually 0–1 elements (Flex applies at most one coupon per subscription today), but modeled as an array for Stripe parity and future multi-discount support. Full `Discount` objects rather than `Expandable`: unlike the other expandable fields, `discounts` is populated only on `expand=discounts` and is always hydrated, so it never serializes as a bare ID. (The nested `source.coupon` inside each discount is still an `Expandable`, honoring `expand=discounts,coupons`.)
          - `discount_id` string, required — The ID of the discount.
          - `checkout_session` string, nullable — The checkout session that the discount was applied to.
          - `customer` string, nullable — The customer that the discount was applied to.
          - `subscription` string, nullable — The subscription that the discount was applied to.
          - `invoice` string, nullable — The invoice that the discount was applied to.
          - `source` DiscountSource, required — The source of a discount (coupon or promotion code).
            - `coupon` union, required — An expandable field — either a string ID or an expanded V1Coupon object.
              - …
            - `type` 'coupon' | 'promotion_code', required — The type of discount source.
          - `promo_code` string, nullable — The promo code applied to create the discount.
          - `test_mode` boolean, required — Whether the discount was applied in test mode
          - `end` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
          - `start` string, required — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
    - `subscription_data` V1SubscriptionData — Subscription Data holds the trial and cancellation settings to apply to the subscription that a checkout session creates once payment completes.
      - `cancel_at` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
      - `trial_end` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
      - `cancel_at_period_end` boolean, nullable — Whether the created subscription will cancel at the end of its current billing period rather than renewing.
      - `trial_period_days` integer, nullable — Length of the trial period, in days, for the created subscription. `null` if no day-based trial was set on the checkout session.
    - `tax_rate` TaxRate — A fixed tax amount to apply to a Checkout Session or line item. Use this to pass a tax figure you have calculated yourself, rather than having Flex compute it.
      - `amount` integer, required — The tax amount to apply, in the smallest currency unit (e.g., `175` = $1.75 USD).
    - `tax_calculation_mode` 'exclusive' | 'inclusive' — Whether tax should be calculated exclusive or inclusive of the provided total
    - `test_mode` boolean, required — Whether the Checkout Session is in test mode.
    - `total_details` TotalDetails, required — Tax and discount details for the computed total amount.
      - `amount_discount` integer, nullable — This is the sum of all the discount amounts.
      - `amount_tax` integer, nullable — This is the sum of all the tax amounts.
      - `amount_shipping` integer, nullable — This is the sum of all the shipping amounts.
      - `amount_iias` integer, nullable — This is the sum of all the iias line items.
      - `amount_vision` integer, nullable — Sum of the line item amounts classified as vision care, in the smallest currency unit (e.g., `2500` = $25.00 USD). `null` when no vision items are present.
      - `amount_prescription` integer, nullable — Sum of the line item amounts classified as prescription, in the smallest currency unit (e.g., `3000` = $30.00 USD). `null` when no prescription items are present.
      - `amount_service` integer, nullable — Sum of the line item amounts classified as a medical service, in the smallest currency unit (e.g., `5000` = $50.00 USD). `null` when no service items are present.
      - `amount_fee` integer, nullable — This is the sum of all the fee amounts.
      - `breakdown` Breakdown — Breakdown of the components that make up the total details. Matches Stripe's structure. See OpenAPI spec: https://github.com/stripe/openapi - schemas: payment_pages_checkout_session_total_details_resource_breakdown
        - `discounts` DiscountAmount[] — The aggregated discounts.
          - `discount` Discount, required — A Discount object represents the application of a coupon or promotion code to a checkout session, customer, subscription, or invoice. It records which coupon was redeemed, what the discount was applied to, and the time window over which it applies.
            - `discount_id` string, required — The ID of the discount.
            - `checkout_session` string, nullable — The checkout session that the discount was applied to.
            - `customer` string, nullable — The customer that the discount was applied to.
            - `subscription` string, nullable — The subscription that the discount was applied to.
            - `invoice` string, nullable — The invoice that the discount was applied to.
            - `source` DiscountSource, required — The source of a discount (coupon or promotion code).
              - …
            - `promo_code` string, nullable — The promo code applied to create the discount.
            - `test_mode` boolean, required — Whether the discount was applied in test mode
            - `end` string — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
            - `start` string, required — A timestamp encoded as an RFC 3339 / ISO 8601 string (e.g. `2026-06-15T14:30:00Z`).
    - `visit_type` 'cbtSleep' | 'notApplicable' | 'metabolomics' | 'tinnitus' | 'gym' | 'exerciseDiet' | 'orthopedic' | 'alcohol' | 'airPurification' | 'vaginalHealth' | 'menstrual' | 'canopy' | 'alopecia' | 'genate' | 'weightBlanket' | 'bedJet' | 'siderAl' | 'sunwinkPowder' | 'wavWatch' | 'bodyComplete' | 'ageRate' | 'nitrousOxide' | 'happyV' | 'groupChat' | 'icalmAnxiety' | 'redBloom' | 'foodom' | 'branchErgonomicFurniture' | 'curalife' | 'eloraInfantWellness' | 'nutriHealth' | 'olipop' | 'goldIntimate' | 'touchStoneEssentials' | 'utiva' | 'sleepGeekz' | 'figBrew' | 'auBabyBlanket' | 'babySleepSack' | 'oshWellness' | 'currentBodyRedLight' | 'mito' | 'circularRing' | 'lymaRedLight' | 'goodAirRx' | 'tastermonial' | 'karunaHome' | 'ergoStandingChair' | 'jbaGlucoseControl' | 'bloomNutrition' | 'buoyDrops' | 'luxeWonderWig' | 'saunaMarketplace' | 'amrioreEyewear' | 'pivotOrthoShoe' | 'lumenCynergy' | 'roga' | 'pulsetto' | 'mitoRedLight' | 'gutPersonal' | 'goFlaus' | 'myHixel' | 'calmigo' | 'dotFit' | 'stripesBeauty' | 'mixHers' | 'pmd' | 'positivityWithPurpose' | 'techRing' | 'popVeneers' | 'vertaClean' | 'lumen' | 'medicalMeal' | 'emnHealth' | 'detergentAllergy' | 'lowImpactExercise' | 'mediumImpactExercise' | 'highImpactExercise' | 'gardening' | 'babyCarrier' | 'smartGlasses' | 'coolingBed' | 'posture' | 'supplements' | 'sleep' | 'redLightTherapy' | 'fitness' | 'smartRing' | 'womensVaginalHealth' | 'fertilitySupport' | 'femaleReproduction' | 'femaleReproductionFood' | 'pregnancyLiterature' | 'iceBath' | 'orthopedicShoes' | 'sexualHealth' | 'glucose' | 'metabolicTest' | 'skinCare' | 'oralHealth' | 'oralAnxiety' | 'blueLightGlasses' | 'anxiety' | 'brainHealth' | 'babyMonitor' | 'compressionSocks' | 'compressionShorts' | 'waterPurification' | 'medSpa' | 'essentialOils' | 'sleepBuds' | 'latchLight' | 'nutritionist' | 'rairflow' | 'enduranceTraining' | 'hydration' | 'hairGrowth' | 'eD' | 'postureFitness' | 'childDevelopment' | 'adaptiveClothing' | 'adaptiveShoes' | 'sleepConsulting' | 'hairRemoval' | 'menopause' | 'maleFertility' | 'anxietyHealth' | 'bidets' | 'speechHealth' | 'artOfLiving' | 'breastMilk' | 'breathWork' | 'petSupport' | 'diapers' | 'gutSupplements' | 'smartWatch' | 'medicalBotox' | 'biomechanicalAssessment' | 'erectileReset' | 'femaleOrgasm' | 'pornAddiction' | 'memorySupport' | 'oralHealthMasticGum' | 'orthopedicSandals' | 'childDevelopmentAnxietySleep' | 'childDevelopmentAdjustment' | 'childDevelopmentBehavior' | 'childDevelopmentIdentity' | 'emnHealthMobility' — The name of the telehealth visit type.
    - `setup_future_use` 'on_session' | 'off_session' — - `on_session`: Standard payments requiring customer auth - `off_session`: Allows payments without the customer present in the flow
    - `payment_method_options` PaymentMethodOptions — Payment method-specific options applied to a Checkout Session.
      - `card` CardPaymentMethodOptions — Card-specific payment options for a Checkout Session.
        - `request_three_d_secure` 'automatic' | 'any' | 'challenge', required — Whether to request 3D Secure authentication on card payments.
    - `next_action` NextAction — Represents an action required to complete the checkout. The `type` field indicates which action is needed, and the corresponding nested object contains the action-specific data.
      - `type` 'collect_letter_of_medical_necessity' | 'payment_failed' | 'provide_second_payment_method' | 'provide_alternative_payment_method', required
      - `collect_letter_of_medical_necessity` CollectLetterOfMedicalNecessityAction — Data for the collect_letter_of_medical_necessity next action.
        - `url` string, required — The URL where the customer should be redirected to provide the letter.
      - `payment_failed` PaymentFailedAction — Data for the payment_failed next action.
        - `message` string, required — A human-readable message describing the payment failure.
        - `url` string, required — The URL where the customer should be redirected to retry payment.
        - `decline_code` string, nullable — The decline code from the payment processor, if available.
        - `error_code` string, nullable — The error code from the payment processor, if available.
      - `provide_second_payment_method` ProvideSecondPaymentMethodAction — Data for the provide_second_payment_method next action.
        - `message` string, required — A human-readable message explaining that a second payment method is needed.
        - `url` string, required — The URL where the customer should be redirected to provide both payment methods.
        - `eligible_amount` integer, required — The amount in cents for HSA/FSA-eligible items.
        - `ineligible_amount` integer, required — The amount in cents for non-eligible items.
      - `provide_alternative_payment_method` ProvideAlternativePaymentMethodAction — Data for the provide_alternative_payment_method next action.
        - `message` string, required — A human-readable message explaining why an alternative payment method is needed.
        - `url` string, required — The URL where the customer should be redirected to provide a different payment method.
    - `partner` union — An expandable field — either a string ID or an expanded PartnerMetadata object.
      - string
      - PartnerMetadata — The public summary of your account, exposed as the expandable `partner` object embedded on other Flex objects such as checkout sessions, subscriptions, and receipts.
        - `partner_id` string, required — Unique identifier of the account, prefixed with `facct_`.
        - `name` string, required — Your display name, as shown to customers during checkout.
        - `website_url` string, required — Your public website URL.
        - `description` string, nullable — A short description of your business.
    - `platform_fees` PlatformFees — Platform fees charged on a checkout session. Present only when you are on the deferred-collection feature and the checkout has completed.
      - `letter_fee` LetterFee, required — Letter-fee details surfaced on the checkout session response.
        - `amount` integer, required — Amount charged for the letter, in cents. `0` when waived (disqualified, pre-existing, OTP-verified, existing consultation, etc.).
        - `type` string, nullable — Billing classification. Only present when `amount > 0`. - `"new"` — any new consultation in the checkout (takes precedence when mixed with expired). - `"expired"` — only expired consultation(s) are being re-billed.
        - `status` 'pending' | 'waived' | 'collected' | 'deferred' | 'settled', required — Lifecycle state of a [`CheckoutSessionLetterFee`] row. Stored as a lowercase string in the `status` TEXT column (matches the DB default `'pending'` set by migration `20260416001655`). - `pending`: Fee determined but not yet collected — transient in-flight state. - `waived`: No fee applies (disqualified, pre-existing, OTP-verified, etc.). Always paired with `letter_fee_amount = 0` and `billing_type = NULL`. - `collected`: Fee captured as part of the checkout transaction. - `deferred`: Fee deferred to end-of-month batch settlement. - `settled`: Deferred fee charged via the monthly batch.

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `409` — Conflict
- `422` — Validation Error
- `429` — Too Many Requests

---

[API](https://skmtc.dev/withflex/apis/flex-api.md) · [All operations](https://skmtc.dev/withflex/apis/flex-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/withflex/flex-api/revisions/b1560fc2f199/schema)
