object plan
{
  "type": "object",
  "title": "Plan",
  "required": [
    "active",
    "billing_scheme",
    "created",
    "currency",
    "id",
    "interval",
    "interval_count",
    "livemode",
    "object",
    "usage_type"
  ],
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 5000,
      "description": "Unique identifier for the object."
    },
    "meter": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "The meter tracking the usage of a metered price"
    },
    "tiers": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/plan_tier"
      },
      "description": "Each element represents a pricing tier. This parameter requires `billing_scheme` to be set to `tiered`. See also the documentation for `billing_scheme`."
    },
    "active": {
      "type": "boolean",
      "description": "Whether the plan can be used for new purchases."
    },
    "amount": {
      "type": "integer",
      "nullable": true,
      "description": "The unit amount in cents (or local equivalent) to be charged, represented as a whole integer if possible. Only set if `billing_scheme=per_unit`."
    },
    "object": {
      "enum": [
        "plan"
      ],
      "type": "string",
      "description": "String representing the object's type. Objects of the same type share the same value."
    },
    "created": {
      "type": "integer",
      "format": "unix-time",
      "description": "Time at which the object was created. Measured in seconds since the Unix epoch."
    },
    "product": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 5000
        },
        {
          "$ref": "#/components/schemas/product"
        },
        {
          "$ref": "#/components/schemas/deleted_product"
        }
      ],
      "nullable": true,
      "description": "The product whose pricing this plan determines.",
      "x-expansionResources": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/product"
          },
          {
            "$ref": "#/components/schemas/deleted_product"
          }
        ]
      }
    },
    "currency": {
      "type": "string",
      "format": "currency",
      "description": "Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies)."
    },
    "interval": {
      "enum": [
        "day",
        "month",
        "week",
        "year"
      ],
      "type": "string",
      "description": "The frequency at which a subscription is billed. One of `day`, `week`, `month` or `year`."
    },
    "livemode": {
      "type": "boolean",
      "description": "If the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`."
    },
    "metadata": {
      "type": "object",
      "nullable": true,
      "description": "Set of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.",
      "additionalProperties": {
        "type": "string",
        "maxLength": 500
      }
    },
    "nickname": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "A brief description of the plan, hidden from customers."
    },
    "tiers_mode": {
      "enum": [
        "graduated",
        "volume"
      ],
      "type": "string",
      "nullable": true,
      "description": "Defines if the tiering price should be `graduated` or `volume` based. In `volume`-based tiering, the maximum quantity within a period determines the per unit price. In `graduated` tiering, pricing can change as the quantity grows."
    },
    "usage_type": {
      "enum": [
        "licensed",
        "metered"
      ],
      "type": "string",
      "description": "Configures how the quantity per period should be determined. Can be either `metered` or `licensed`. `licensed` automatically bills the `quantity` set when adding it to a subscription. `metered` aggregates the total usage based on usage records. Defaults to `licensed`."
    },
    "amount_decimal": {
      "type": "string",
      "format": "decimal",
      "nullable": true,
      "description": "The unit amount in cents (or local equivalent) to be charged, represented as a decimal string with at most 12 decimal places. Only set if `billing_scheme=per_unit`."
    },
    "billing_scheme": {
      "enum": [
        "per_unit",
        "tiered"
      ],
      "type": "string",
      "description": "Describes how to compute the price per period. Either `per_unit` or `tiered`. `per_unit` indicates that the fixed amount (specified in `amount`) will be charged per unit in `quantity` (for plans with `usage_type=licensed`), or per unit of total usage (for plans with `usage_type=metered`). `tiered` indicates that the unit pricing will be computed using a tiering strategy as defined using the `tiers` and `tiers_mode` attributes."
    },
    "interval_count": {
      "type": "integer",
      "description": "The number of intervals (specified in the `interval` attribute) between subscription billings. For example, `interval=month` and `interval_count=3` bills every 3 months."
    },
    "transform_usage": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/transform_usage"
        }
      ],
      "nullable": true,
      "description": "Apply a transformation to the reported usage or set quantity before computing the amount billed. Cannot be combined with `tiers`."
    },
    "trial_period_days": {
      "type": "integer",
      "nullable": true,
      "description": "Default number of trial days when subscribing a customer to this plan using [`trial_from_plan=true`](https://docs.stripe.com/api#create_subscription-trial_from_plan)."
    }
  },
  "description": "You can now model subscriptions more flexibly using the [Prices API](https://api.stripe.com#prices). It replaces the Plans API and is backwards compatible to simplify your migration.\n\nPlans define the base price, currency, and billing cycle for recurring purchases of products.\n[Products](https://api.stripe.com#products) help you track inventory or provisioning, and plans help you track pricing. Different physical goods or levels of service should be represented by products, and pricing options should be represented by plans. This approach lets you change prices without having to change your provisioning scheme.\n\nFor example, you might have a single \"gold\" product that has plans for $10/month, $100/year, €9/month, and €90/year.\n\nRelated guides: [Set up a subscription](https://docs.stripe.com/billing/subscriptions/set-up-subscription) and more about [products and prices](https://docs.stripe.com/products-prices/overview).",
  "x-resourceId": "plan",
  "x-expandableFields": [
    "product",
    "tiers",
    "transform_usage"
  ]
}
object plan_tier
{
  "type": "object",
  "title": "PlanTier",
  "properties": {
    "up_to": {
      "type": "integer",
      "nullable": true,
      "description": "Up to and including to this quantity will be contained in the tier."
    },
    "flat_amount": {
      "type": "integer",
      "nullable": true,
      "description": "Price for the entire tier."
    },
    "unit_amount": {
      "type": "integer",
      "nullable": true,
      "description": "Per unit price for units relevant to the tier."
    },
    "flat_amount_decimal": {
      "type": "string",
      "format": "decimal",
      "nullable": true,
      "description": "Same as `flat_amount`, but contains a decimal value with at most 12 decimal places."
    },
    "unit_amount_decimal": {
      "type": "string",
      "format": "decimal",
      "nullable": true,
      "description": "Same as `unit_amount`, but contains a decimal value with at most 12 decimal places."
    }
  },
  "description": "",
  "x-expandableFields": []
}
object platform_earning_fee_source
{
  "type": "object",
  "title": "PlatformEarningFeeSource",
  "required": [
    "type"
  ],
  "properties": {
    "type": {
      "enum": [
        "charge",
        "payout"
      ],
      "type": "string",
      "description": "Type of object that created the application fee.",
      "x-stripeBypassValidation": true
    },
    "charge": {
      "type": "string",
      "maxLength": 5000,
      "description": "Charge ID that created this application fee."
    },
    "payout": {
      "type": "string",
      "maxLength": 5000,
      "description": "Payout ID that created this application fee."
    }
  },
  "description": "",
  "x-expandableFields": []
}
object portal_business_profile
{
  "type": "object",
  "title": "PortalBusinessProfile",
  "properties": {
    "headline": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "The messaging shown to customers in the portal."
    },
    "privacy_policy_url": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "A link to the business’s publicly available privacy policy."
    },
    "terms_of_service_url": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "A link to the business’s publicly available terms of service."
    }
  },
  "description": "",
  "x-expandableFields": []
}
object portal_customer_update
{
  "type": "object",
  "title": "PortalCustomerUpdate",
  "required": [
    "allowed_updates",
    "enabled"
  ],
  "properties": {
    "enabled": {
      "type": "boolean",
      "description": "Whether the feature is enabled."
    },
    "allowed_updates": {
      "type": "array",
      "items": {
        "enum": [
          "address",
          "email",
          "name",
          "phone",
          "shipping",
          "tax_id"
        ],
        "type": "string"
      },
      "description": "The types of customer updates that are supported. When empty, customers are not updateable."
    }
  },
  "description": "",
  "x-expandableFields": []
}
object portal_features
{
  "type": "object",
  "title": "PortalFeatures",
  "required": [
    "customer_update",
    "invoice_history",
    "payment_method_update",
    "subscription_cancel",
    "subscription_update"
  ],
  "properties": {
    "customer_update": {
      "$ref": "#/components/schemas/portal_customer_update"
    },
    "invoice_history": {
      "$ref": "#/components/schemas/portal_invoice_list"
    },
    "subscription_cancel": {
      "$ref": "#/components/schemas/portal_subscription_cancel"
    },
    "subscription_update": {
      "$ref": "#/components/schemas/portal_subscription_update"
    },
    "payment_method_update": {
      "$ref": "#/components/schemas/portal_payment_method_update"
    }
  },
  "description": "",
  "x-expandableFields": [
    "customer_update",
    "invoice_history",
    "payment_method_update",
    "subscription_cancel",
    "subscription_update"
  ]
}
object portal_flows_after_completion_hosted_confirmation
{
  "type": "object",
  "title": "PortalFlowsAfterCompletionHostedConfirmation",
  "properties": {
    "custom_message": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "A custom message to display to the customer after the flow is completed."
    }
  },
  "description": "",
  "x-expandableFields": []
}
object portal_flows_after_completion_redirect
{
  "type": "object",
  "title": "PortalFlowsAfterCompletionRedirect",
  "required": [
    "return_url"
  ],
  "properties": {
    "return_url": {
      "type": "string",
      "maxLength": 5000,
      "description": "The URL the customer will be redirected to after the flow is completed."
    }
  },
  "description": "",
  "x-expandableFields": []
}
object portal_flows_coupon_offer
{
  "type": "object",
  "title": "PortalFlowsCouponOffer",
  "required": [
    "coupon"
  ],
  "properties": {
    "coupon": {
      "type": "string",
      "maxLength": 5000,
      "description": "The ID of the coupon to be offered."
    }
  },
  "description": "",
  "x-expandableFields": []
}
object portal_flows_flow
{
  "type": "object",
  "title": "PortalFlowsFlow",
  "required": [
    "after_completion",
    "type"
  ],
  "properties": {
    "type": {
      "enum": [
        "payment_method_update",
        "subscription_cancel",
        "subscription_update",
        "subscription_update_confirm"
      ],
      "type": "string",
      "description": "Type of flow that the customer will go through."
    },
    "after_completion": {
      "$ref": "#/components/schemas/portal_flows_flow_after_completion"
    },
    "subscription_cancel": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/portal_flows_flow_subscription_cancel"
        }
      ],
      "nullable": true,
      "description": "Configuration when `flow.type=subscription_cancel`."
    },
    "subscription_update": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/portal_flows_flow_subscription_update"
        }
      ],
      "nullable": true,
      "description": "Configuration when `flow.type=subscription_update`."
    },
    "subscription_update_confirm": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/portal_flows_flow_subscription_update_confirm"
        }
      ],
      "nullable": true,
      "description": "Configuration when `flow.type=subscription_update_confirm`."
    }
  },
  "description": "",
  "x-expandableFields": [
    "after_completion",
    "subscription_cancel",
    "subscription_update",
    "subscription_update_confirm"
  ]
}
object portal_flows_flow_after_completion
{
  "type": "object",
  "title": "PortalFlowsFlowAfterCompletion",
  "required": [
    "type"
  ],
  "properties": {
    "type": {
      "enum": [
        "hosted_confirmation",
        "portal_homepage",
        "redirect"
      ],
      "type": "string",
      "description": "The specified type of behavior after the flow is completed."
    },
    "redirect": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/portal_flows_after_completion_redirect"
        }
      ],
      "nullable": true,
      "description": "Configuration when `after_completion.type=redirect`."
    },
    "hosted_confirmation": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/portal_flows_after_completion_hosted_confirmation"
        }
      ],
      "nullable": true,
      "description": "Configuration when `after_completion.type=hosted_confirmation`."
    }
  },
  "description": "",
  "x-expandableFields": [
    "hosted_confirmation",
    "redirect"
  ]
}
object portal_flows_flow_subscription_cancel
{
  "type": "object",
  "title": "PortalFlowsFlowSubscriptionCancel",
  "required": [
    "subscription"
  ],
  "properties": {
    "retention": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/portal_flows_retention"
        }
      ],
      "nullable": true,
      "description": "Specify a retention strategy to be used in the cancellation flow."
    },
    "subscription": {
      "type": "string",
      "maxLength": 5000,
      "description": "The ID of the subscription to be canceled."
    }
  },
  "description": "",
  "x-expandableFields": [
    "retention"
  ]
}
object portal_flows_flow_subscription_update
{
  "type": "object",
  "title": "PortalFlowsFlowSubscriptionUpdate",
  "required": [
    "subscription"
  ],
  "properties": {
    "subscription": {
      "type": "string",
      "maxLength": 5000,
      "description": "The ID of the subscription to be updated."
    }
  },
  "description": "",
  "x-expandableFields": []
}
object portal_flows_flow_subscription_update_confirm
{
  "type": "object",
  "title": "PortalFlowsFlowSubscriptionUpdateConfirm",
  "required": [
    "items",
    "subscription"
  ],
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/portal_flows_subscription_update_confirm_item"
      },
      "description": "The [subscription item](https://docs.stripe.com/api/subscription_items) to be updated through this flow. Currently, only up to one may be specified and subscriptions with multiple items are not updatable."
    },
    "discounts": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/portal_flows_subscription_update_confirm_discount"
      },
      "nullable": true,
      "description": "The coupon or promotion code to apply to this subscription update."
    },
    "subscription": {
      "type": "string",
      "maxLength": 5000,
      "description": "The ID of the subscription to be updated."
    }
  },
  "description": "",
  "x-expandableFields": [
    "discounts",
    "items"
  ]
}
object portal_flows_retention
{
  "type": "object",
  "title": "PortalFlowsRetention",
  "required": [
    "type"
  ],
  "properties": {
    "type": {
      "enum": [
        "coupon_offer"
      ],
      "type": "string",
      "description": "Type of retention strategy that will be used."
    },
    "coupon_offer": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/portal_flows_coupon_offer"
        }
      ],
      "nullable": true,
      "description": "Configuration when `retention.type=coupon_offer`."
    }
  },
  "description": "",
  "x-expandableFields": [
    "coupon_offer"
  ]
}
object portal_flows_subscription_update_confirm_discount
{
  "type": "object",
  "title": "PortalFlowsSubscriptionUpdateConfirmDiscount",
  "properties": {
    "coupon": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "The ID of the coupon to apply to this subscription update."
    },
    "promotion_code": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "The ID of a promotion code to apply to this subscription update."
    }
  },
  "description": "",
  "x-expandableFields": []
}
object portal_flows_subscription_update_confirm_item
{
  "type": "object",
  "title": "PortalFlowsSubscriptionUpdateConfirmItem",
  "properties": {
    "id": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "The ID of the [subscription item](https://docs.stripe.com/api/subscriptions/object#subscription_object-items-data-id) to be updated."
    },
    "price": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "The price the customer should subscribe to through this flow. The price must also be included in the configuration's [`features.subscription_update.products`](https://docs.stripe.com/api/customer_portal/configuration#portal_configuration_object-features-subscription_update-products)."
    },
    "quantity": {
      "type": "integer",
      "description": "[Quantity](https://docs.stripe.com/subscriptions/quantities) for this item that the customer should subscribe to through this flow."
    }
  },
  "description": "",
  "x-expandableFields": []
}
object portal_invoice_list
{
  "type": "object",
  "title": "PortalInvoiceList",
  "required": [
    "enabled"
  ],
  "properties": {
    "enabled": {
      "type": "boolean",
      "description": "Whether the feature is enabled."
    }
  },
  "description": "",
  "x-expandableFields": []
}
object portal_login_page
{
  "type": "object",
  "title": "PortalLoginPage",
  "required": [
    "enabled"
  ],
  "properties": {
    "url": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "A shareable URL to the hosted portal login page. Your customers will be able to log in with their [email](https://docs.stripe.com/api/customers/object#customer_object-email) and receive a link to their customer portal."
    },
    "enabled": {
      "type": "boolean",
      "description": "If `true`, a shareable `url` will be generated that will take your customers to a hosted login page for the customer portal.\n\nIf `false`, the previously generated `url`, if any, will be deactivated."
    }
  },
  "description": "",
  "x-expandableFields": []
}
object portal_payment_method_update
{
  "type": "object",
  "title": "PortalPaymentMethodUpdate",
  "required": [
    "enabled"
  ],
  "properties": {
    "enabled": {
      "type": "boolean",
      "description": "Whether the feature is enabled."
    },
    "payment_method_configuration": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "The [Payment Method Configuration](/api/payment_method_configurations) to use for this portal session. When specified, customers will be able to update their payment method to one of the options specified by the payment method configuration. If not set, the default payment method configuration is used."
    }
  },
  "description": "",
  "x-expandableFields": []
}
object portal_resource_schedule_update_at_period_end
{
  "type": "object",
  "title": "PortalResourceScheduleUpdateAtPeriodEnd",
  "required": [
    "conditions"
  ],
  "properties": {
    "conditions": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/portal_resource_schedule_update_at_period_end_condition"
      },
      "description": "List of conditions. When any condition is true, an update will be scheduled at the end of the current period."
    }
  },
  "description": "",
  "x-expandableFields": [
    "conditions"
  ]
}
object portal_resource_schedule_update_at_period_end_condition
{
  "type": "object",
  "title": "PortalResourceScheduleUpdateAtPeriodEndCondition",
  "required": [
    "type"
  ],
  "properties": {
    "type": {
      "enum": [
        "decreasing_item_amount",
        "shortening_interval"
      ],
      "type": "string",
      "description": "The type of condition."
    }
  },
  "description": "",
  "x-expandableFields": []
}
object portal_subscription_cancel
{
  "type": "object",
  "title": "PortalSubscriptionCancel",
  "required": [
    "cancellation_reason",
    "enabled",
    "mode",
    "proration_behavior"
  ],
  "properties": {
    "mode": {
      "enum": [
        "at_period_end",
        "immediately"
      ],
      "type": "string",
      "description": "Whether to cancel subscriptions immediately or at the end of the billing period."
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the feature is enabled."
    },
    "proration_behavior": {
      "enum": [
        "always_invoice",
        "create_prorations",
        "none"
      ],
      "type": "string",
      "description": "Whether to create prorations when canceling subscriptions. Possible values are `none` and `create_prorations`."
    },
    "cancellation_reason": {
      "$ref": "#/components/schemas/portal_subscription_cancellation_reason"
    }
  },
  "description": "",
  "x-expandableFields": [
    "cancellation_reason"
  ]
}
object portal_subscription_cancellation_reason
{
  "type": "object",
  "title": "PortalSubscriptionCancellationReason",
  "required": [
    "enabled",
    "options"
  ],
  "properties": {
    "enabled": {
      "type": "boolean",
      "description": "Whether the feature is enabled."
    },
    "options": {
      "type": "array",
      "items": {
        "enum": [
          "customer_service",
          "low_quality",
          "missing_features",
          "other",
          "switched_service",
          "too_complex",
          "too_expensive",
          "unused"
        ],
        "type": "string"
      },
      "description": "Which cancellation reasons will be given as options to the customer."
    }
  },
  "description": "",
  "x-expandableFields": []
}
object portal_subscription_update
{
  "type": "object",
  "title": "PortalSubscriptionUpdate",
  "required": [
    "default_allowed_updates",
    "enabled",
    "proration_behavior",
    "schedule_at_period_end",
    "trial_update_behavior"
  ],
  "properties": {
    "enabled": {
      "type": "boolean",
      "description": "Whether the feature is enabled."
    },
    "products": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/portal_subscription_update_product"
      },
      "nullable": true,
      "description": "The list of up to 10 products that support subscription updates."
    },
    "proration_behavior": {
      "enum": [
        "always_invoice",
        "create_prorations",
        "none"
      ],
      "type": "string",
      "description": "Determines how to handle prorations resulting from subscription updates. Valid values are `none`, `create_prorations`, and `always_invoice`. Defaults to a value of `none` if you don't set it during creation."
    },
    "billing_cycle_anchor": {
      "enum": [
        "now",
        "unchanged"
      ],
      "type": "string",
      "nullable": true,
      "description": "Determines the value to use for the billing cycle anchor on subscription updates. Valid values are `now` or `unchanged`, and the default value is `unchanged`. Setting the value to `now` resets the subscription's billing cycle anchor to the current time (in UTC). For more information, see the billing cycle [documentation](https://docs.stripe.com/billing/subscriptions/billing-cycle)."
    },
    "trial_update_behavior": {
      "enum": [
        "continue_trial",
        "end_trial"
      ],
      "type": "string",
      "description": "Determines how handle updates to trialing subscriptions. Valid values are `end_trial` and `continue_trial`. Defaults to a value of `end_trial` if you don't set it during creation."
    },
    "schedule_at_period_end": {
      "$ref": "#/components/schemas/portal_resource_schedule_update_at_period_end"
    },
    "default_allowed_updates": {
      "type": "array",
      "items": {
        "enum": [
          "price",
          "promotion_code",
          "quantity"
        ],
        "type": "string"
      },
      "description": "The types of subscription updates that are supported for items listed in the `products` attribute. When empty, subscriptions are not updateable."
    }
  },
  "description": "",
  "x-expandableFields": [
    "products",
    "schedule_at_period_end"
  ]
}
object portal_subscription_update_product
{
  "type": "object",
  "title": "PortalSubscriptionUpdateProduct",
  "required": [
    "adjustable_quantity",
    "prices",
    "product"
  ],
  "properties": {
    "prices": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 5000
      },
      "description": "The list of price IDs which, when subscribed to, a subscription can be updated."
    },
    "product": {
      "type": "string",
      "maxLength": 5000,
      "description": "The product ID."
    },
    "adjustable_quantity": {
      "$ref": "#/components/schemas/portal_subscription_update_product_adjustable_quantity"
    }
  },
  "description": "",
  "x-expandableFields": [
    "adjustable_quantity"
  ]
}
object portal_subscription_update_product_adjustable_quantity
{
  "type": "object",
  "title": "PortalSubscriptionUpdateProductAdjustableQuantity",
  "required": [
    "enabled",
    "minimum"
  ],
  "properties": {
    "enabled": {
      "type": "boolean",
      "description": "If true, the quantity can be adjusted to any non-negative integer."
    },
    "maximum": {
      "type": "integer",
      "nullable": true,
      "description": "The maximum quantity that can be set for the product."
    },
    "minimum": {
      "type": "integer",
      "description": "The minimum quantity that can be set for the product."
    }
  },
  "description": "",
  "x-expandableFields": []
}
object price
{
  "type": "object",
  "title": "Price",
  "required": [
    "active",
    "billing_scheme",
    "created",
    "currency",
    "id",
    "livemode",
    "metadata",
    "object",
    "product",
    "type"
  ],
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 5000,
      "description": "Unique identifier for the object."
    },
    "type": {
      "enum": [
        "one_time",
        "recurring"
      ],
      "type": "string",
      "description": "One of `one_time` or `recurring` depending on whether the price is for a one-time purchase or a recurring (subscription) purchase."
    },
    "tiers": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/price_tier"
      },
      "description": "Each element represents a pricing tier. This parameter requires `billing_scheme` to be set to `tiered`. See also the documentation for `billing_scheme`."
    },
    "active": {
      "type": "boolean",
      "description": "Whether the price can be used for new purchases."
    },
    "object": {
      "enum": [
        "price"
      ],
      "type": "string",
      "description": "String representing the object's type. Objects of the same type share the same value."
    },
    "created": {
      "type": "integer",
      "format": "unix-time",
      "description": "Time at which the object was created. Measured in seconds since the Unix epoch."
    },
    "product": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 5000
        },
        {
          "$ref": "#/components/schemas/product"
        },
        {
          "$ref": "#/components/schemas/deleted_product"
        }
      ],
      "description": "The ID of the product this price is associated with.",
      "x-expansionResources": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/product"
          },
          {
            "$ref": "#/components/schemas/deleted_product"
          }
        ]
      }
    },
    "currency": {
      "type": "string",
      "format": "currency",
      "description": "Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies)."
    },
    "livemode": {
      "type": "boolean",
      "description": "If the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`."
    },
    "metadata": {
      "type": "object",
      "description": "Set of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.",
      "additionalProperties": {
        "type": "string",
        "maxLength": 500
      }
    },
    "nickname": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "A brief description of the price, hidden from customers."
    },
    "recurring": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/recurring"
        }
      ],
      "nullable": true,
      "description": "The recurring components of a price such as `interval` and `usage_type`."
    },
    "lookup_key": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "A lookup key used to retrieve prices dynamically from a static string. This may be up to 200 characters."
    },
    "tiers_mode": {
      "enum": [
        "graduated",
        "volume"
      ],
      "type": "string",
      "nullable": true,
      "description": "Defines if the tiering price should be `graduated` or `volume` based. In `volume`-based tiering, the maximum quantity within a period determines the per unit price. In `graduated` tiering, pricing can change as the quantity grows."
    },
    "unit_amount": {
      "type": "integer",
      "nullable": true,
      "description": "The unit amount in cents (or local equivalent) to be charged, represented as a whole integer if possible. Only set if `billing_scheme=per_unit`."
    },
    "tax_behavior": {
      "enum": [
        "exclusive",
        "inclusive",
        "unspecified"
      ],
      "type": "string",
      "nullable": true,
      "description": "Only required if a [default tax behavior](https://docs.stripe.com/tax/products-prices-tax-categories-tax-behavior#setting-a-default-tax-behavior-(recommended)) was not provided in the Stripe Tax settings. Specifies whether the price is considered inclusive of taxes or exclusive of taxes. One of `inclusive`, `exclusive`, or `unspecified`. Once specified as either `inclusive` or `exclusive`, it cannot be changed."
    },
    "billing_scheme": {
      "enum": [
        "per_unit",
        "tiered"
      ],
      "type": "string",
      "description": "Describes how to compute the price per period. Either `per_unit` or `tiered`. `per_unit` indicates that the fixed amount (specified in `unit_amount` or `unit_amount_decimal`) will be charged per unit in `quantity` (for prices with `usage_type=licensed`), or per unit of total usage (for prices with `usage_type=metered`). `tiered` indicates that the unit pricing will be computed using a tiering strategy as defined using the `tiers` and `tiers_mode` attributes."
    },
    "currency_options": {
      "type": "object",
      "description": "Prices defined in each available currency option. Each key must be a three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html) and a [supported currency](https://stripe.com/docs/currencies).",
      "additionalProperties": {
        "$ref": "#/components/schemas/currency_option"
      }
    },
    "custom_unit_amount": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/custom_unit_amount"
        }
      ],
      "nullable": true,
      "description": "When set, provides configuration for the amount to be adjusted by the customer during Checkout Sessions and Payment Links."
    },
    "transform_quantity": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/transform_quantity"
        }
      ],
      "nullable": true,
      "description": "Apply a transformation to the reported usage or set quantity before computing the amount billed. Cannot be combined with `tiers`."
    },
    "unit_amount_decimal": {
      "type": "string",
      "format": "decimal",
      "nullable": true,
      "description": "The unit amount in cents (or local equivalent) to be charged, represented as a decimal string with at most 12 decimal places. Only set if `billing_scheme=per_unit`."
    }
  },
  "description": "Prices define the unit cost, currency, and (optional) billing cycle for both recurring and one-time purchases of products.\n[Products](https://api.stripe.com#products) help you track inventory or provisioning, and prices help you track payment terms. Different physical goods or levels of service should be represented by products, and pricing options should be represented by prices. This approach lets you change prices without having to change your provisioning scheme.\n\nFor example, you might have a single \"gold\" product that has prices for $10/month, $100/year, and €9 once.\n\nRelated guides: [Set up a subscription](https://docs.stripe.com/billing/subscriptions/set-up-subscription), [create an invoice](https://docs.stripe.com/billing/invoices/create), and more about [products and prices](https://docs.stripe.com/products-prices/overview).",
  "x-resourceId": "price",
  "x-expandableFields": [
    "currency_options",
    "custom_unit_amount",
    "product",
    "recurring",
    "tiers",
    "transform_quantity"
  ]
}
object price_tier
{
  "type": "object",
  "title": "PriceTier",
  "properties": {
    "up_to": {
      "type": "integer",
      "nullable": true,
      "description": "Up to and including to this quantity will be contained in the tier."
    },
    "flat_amount": {
      "type": "integer",
      "nullable": true,
      "description": "Price for the entire tier."
    },
    "unit_amount": {
      "type": "integer",
      "nullable": true,
      "description": "Per unit price for units relevant to the tier."
    },
    "flat_amount_decimal": {
      "type": "string",
      "format": "decimal",
      "nullable": true,
      "description": "Same as `flat_amount`, but contains a decimal value with at most 12 decimal places."
    },
    "unit_amount_decimal": {
      "type": "string",
      "format": "decimal",
      "nullable": true,
      "description": "Same as `unit_amount`, but contains a decimal value with at most 12 decimal places."
    }
  },
  "description": "",
  "x-expandableFields": []
}
object product
{
  "type": "object",
  "title": "Product",
  "required": [
    "active",
    "created",
    "id",
    "images",
    "livemode",
    "marketing_features",
    "metadata",
    "name",
    "object",
    "updated"
  ],
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 5000,
      "description": "Unique identifier for the object."
    },
    "url": {
      "type": "string",
      "nullable": true,
      "maxLength": 2048,
      "description": "A URL of a publicly-accessible webpage for this product."
    },
    "name": {
      "type": "string",
      "maxLength": 5000,
      "description": "The product's name, meant to be displayable to the customer."
    },
    "active": {
      "type": "boolean",
      "description": "Whether the product is currently available for purchase."
    },
    "images": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 5000
      },
      "description": "A list of up to 8 URLs of images for this product, meant to be displayable to the customer."
    },
    "object": {
      "enum": [
        "product"
      ],
      "type": "string",
      "description": "String representing the object's type. Objects of the same type share the same value."
    },
    "created": {
      "type": "integer",
      "format": "unix-time",
      "description": "Time at which the object was created. Measured in seconds since the Unix epoch."
    },
    "updated": {
      "type": "integer",
      "format": "unix-time",
      "description": "Time at which the object was last updated. Measured in seconds since the Unix epoch."
    },
    "livemode": {
      "type": "boolean",
      "description": "If the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`."
    },
    "metadata": {
      "type": "object",
      "description": "Set of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.",
      "additionalProperties": {
        "type": "string",
        "maxLength": 500
      }
    },
    "tax_code": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 5000
        },
        {
          "$ref": "#/components/schemas/tax_code"
        }
      ],
      "nullable": true,
      "description": "A [tax code](https://docs.stripe.com/tax/tax-categories) ID.",
      "x-expansionResources": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/tax_code"
          }
        ]
      }
    },
    "shippable": {
      "type": "boolean",
      "nullable": true,
      "description": "Whether this product is shipped (i.e., physical goods)."
    },
    "unit_label": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "A label that represents units of this product. When set, this will be included in customers' receipts, invoices, Checkout, and the customer portal."
    },
    "description": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "The product's description, meant to be displayable to the customer. Use this field to optionally store a long form explanation of the product being sold for your own rendering purposes."
    },
    "default_price": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 5000
        },
        {
          "$ref": "#/components/schemas/price"
        }
      ],
      "nullable": true,
      "description": "The ID of the [Price](https://docs.stripe.com/api/prices) object that is the default price for this product.",
      "x-expansionResources": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/price"
          }
        ]
      }
    },
    "marketing_features": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/product_marketing_feature"
      },
      "description": "A list of up to 15 marketing features for this product. These are displayed in [pricing tables](https://docs.stripe.com/payments/checkout/pricing-table)."
    },
    "package_dimensions": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/package_dimensions"
        }
      ],
      "nullable": true,
      "description": "The dimensions of this product for shipping purposes."
    },
    "statement_descriptor": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "Extra information about a product which will appear on your customer's credit card statement. In the case that multiple products are billed at once, the first statement descriptor will be used. Only used for subscription payments."
    }
  },
  "description": "Products describe the specific goods or services you offer to your customers.\nFor example, you might offer a Standard and Premium version of your goods or service; each version would be a separate Product.\nThey can be used in conjunction with [Prices](https://api.stripe.com#prices) to configure pricing in Payment Links, Checkout, and Subscriptions.\n\nRelated guides: [Set up a subscription](https://docs.stripe.com/billing/subscriptions/set-up-subscription),\n[share a Payment Link](https://docs.stripe.com/payment-links),\n[accept payments with Checkout](https://docs.stripe.com/payments/accept-a-payment#create-product-prices-upfront),\nand more about [Products and Prices](https://docs.stripe.com/products-prices/overview)",
  "x-resourceId": "product",
  "x-expandableFields": [
    "default_price",
    "marketing_features",
    "package_dimensions",
    "tax_code"
  ]
}
object product_feature
{
  "type": "object",
  "title": "ProductFeature",
  "required": [
    "entitlement_feature",
    "id",
    "livemode",
    "object"
  ],
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 5000,
      "description": "Unique identifier for the object."
    },
    "object": {
      "enum": [
        "product_feature"
      ],
      "type": "string",
      "description": "String representing the object's type. Objects of the same type share the same value."
    },
    "livemode": {
      "type": "boolean",
      "description": "If the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`."
    },
    "entitlement_feature": {
      "$ref": "#/components/schemas/entitlements.feature"
    }
  },
  "description": "A product_feature represents an attachment between a feature and a product.\nWhen a product is purchased that has a feature attached, Stripe will create an entitlement to the feature for the purchasing customer.",
  "x-resourceId": "product_feature",
  "x-expandableFields": [
    "entitlement_feature"
  ]
}
object product_marketing_feature
{
  "type": "object",
  "title": "ProductMarketingFeature",
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 5000,
      "description": "The marketing feature name. Up to 80 characters long."
    }
  },
  "description": "",
  "x-expandableFields": []
}
object promotion_code
{
  "type": "object",
  "title": "PromotionCode",
  "required": [
    "active",
    "code",
    "created",
    "id",
    "livemode",
    "object",
    "promotion",
    "restrictions",
    "times_redeemed"
  ],
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 5000,
      "description": "Unique identifier for the object."
    },
    "code": {
      "type": "string",
      "maxLength": 5000,
      "description": "The customer-facing code. Regardless of case, this code must be unique across all active promotion codes for each customer. Valid characters are lower case letters (a-z), upper case letters (A-Z), digits (0-9), and dashes (-)."
    },
    "active": {
      "type": "boolean",
      "description": "Whether the promotion code is currently active. A promotion code is only active if the coupon is also valid."
    },
    "object": {
      "enum": [
        "promotion_code"
      ],
      "type": "string",
      "description": "String representing the object's type. Objects of the same type share the same value."
    },
    "created": {
      "type": "integer",
      "format": "unix-time",
      "description": "Time at which the object was created. Measured in seconds since the Unix epoch."
    },
    "customer": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 5000
        },
        {
          "$ref": "#/components/schemas/customer"
        },
        {
          "$ref": "#/components/schemas/deleted_customer"
        }
      ],
      "nullable": true,
      "description": "The customer who can use this promotion code.",
      "x-expansionResources": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/customer"
          },
          {
            "$ref": "#/components/schemas/deleted_customer"
          }
        ]
      }
    },
    "livemode": {
      "type": "boolean",
      "description": "If the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`."
    },
    "metadata": {
      "type": "object",
      "nullable": true,
      "description": "Set of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.",
      "additionalProperties": {
        "type": "string",
        "maxLength": 500
      }
    },
    "promotion": {
      "$ref": "#/components/schemas/promotion_codes_resource_promotion"
    },
    "expires_at": {
      "type": "integer",
      "format": "unix-time",
      "nullable": true,
      "description": "Date at which the promotion code can no longer be redeemed."
    },
    "restrictions": {
      "$ref": "#/components/schemas/promotion_codes_resource_restrictions"
    },
    "times_redeemed": {
      "type": "integer",
      "description": "Number of times this promotion code has been used."
    },
    "max_redemptions": {
      "type": "integer",
      "nullable": true,
      "description": "Maximum number of times this promotion code can be redeemed."
    },
    "customer_account": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "The account representing the customer who can use this promotion code."
    }
  },
  "description": "A Promotion Code represents a customer-redeemable code for an underlying promotion.\nYou can create multiple codes for a single promotion.\n\nIf you enable promotion codes in your [customer portal configuration](https://docs.stripe.com/customer-management/configure-portal), then customers can redeem a code themselves when updating a subscription in the portal.\nCustomers can also view the currently active promotion codes and coupons on each of their subscriptions in the portal.",
  "x-resourceId": "promotion_code",
  "x-expandableFields": [
    "customer",
    "promotion",
    "restrictions"
  ]
}
object promotion_code_currency_option
{
  "type": "object",
  "title": "PromotionCodeCurrencyOption",
  "required": [
    "minimum_amount"
  ],
  "properties": {
    "minimum_amount": {
      "type": "integer",
      "description": "Minimum amount required to redeem this Promotion Code into a Coupon (e.g., a purchase must be $100 or more to work)."
    }
  },
  "description": "",
  "x-expandableFields": []
}
object promotion_codes_resource_promotion
{
  "type": "object",
  "title": "PromotionCodesResourcePromotion",
  "required": [
    "type"
  ],
  "properties": {
    "type": {
      "enum": [
        "coupon"
      ],
      "type": "string",
      "description": "The type of promotion."
    },
    "coupon": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 5000
        },
        {
          "$ref": "#/components/schemas/coupon"
        }
      ],
      "nullable": true,
      "description": "If promotion `type` is `coupon`, the coupon for this promotion.",
      "x-expansionResources": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/coupon"
          }
        ]
      }
    }
  },
  "description": "",
  "x-expandableFields": [
    "coupon"
  ]
}
object promotion_codes_resource_restrictions
{
  "type": "object",
  "title": "PromotionCodesResourceRestrictions",
  "required": [
    "first_time_transaction"
  ],
  "properties": {
    "minimum_amount": {
      "type": "integer",
      "nullable": true,
      "description": "Minimum amount required to redeem this Promotion Code into a Coupon (e.g., a purchase must be $100 or more to work)."
    },
    "currency_options": {
      "type": "object",
      "description": "Promotion code restrictions defined in each available currency option. Each key must be a three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html) and a [supported currency](https://stripe.com/docs/currencies).",
      "additionalProperties": {
        "$ref": "#/components/schemas/promotion_code_currency_option"
      }
    },
    "first_time_transaction": {
      "type": "boolean",
      "description": "A Boolean indicating if the Promotion Code should only be redeemed for Customers without any successful payments or invoices"
    },
    "minimum_amount_currency": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "Three-letter [ISO code](https://stripe.com/docs/currencies) for minimum_amount"
    }
  },
  "description": "",
  "x-expandableFields": [
    "currency_options"
  ]
}
object proration_details
{
  "type": "object",
  "title": "ProrationDetails",
  "required": [
    "discount_amounts"
  ],
  "properties": {
    "discount_amounts": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/discounts_resource_discount_amount"
      },
      "description": "Discount amounts applied when the proration was created."
    }
  },
  "description": "",
  "x-expandableFields": [
    "discount_amounts"
  ]
}
object quote
{
  "type": "object",
  "title": "Quote",
  "required": [
    "amount_subtotal",
    "amount_total",
    "automatic_tax",
    "collection_method",
    "computed",
    "created",
    "discounts",
    "expires_at",
    "id",
    "invoice_settings",
    "livemode",
    "metadata",
    "object",
    "status",
    "status_transitions",
    "subscription_data",
    "total_details"
  ],
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 5000,
      "description": "Unique identifier for the object."
    },
    "footer": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "A footer that will be displayed on the quote PDF."
    },
    "header": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "A header that will be displayed on the quote PDF."
    },
    "number": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "A unique number that identifies this particular quote. This number is assigned once the quote is [finalized](https://docs.stripe.com/quotes/overview#finalize)."
    },
    "object": {
      "enum": [
        "quote"
      ],
      "type": "string",
      "description": "String representing the object's type. Objects of the same type share the same value."
    },
    "status": {
      "enum": [
        "accepted",
        "canceled",
        "draft",
        "open"
      ],
      "type": "string",
      "description": "The status of the quote.",
      "x-stripeBypassValidation": true
    },
    "created": {
      "type": "integer",
      "format": "unix-time",
      "description": "Time at which the object was created. Measured in seconds since the Unix epoch."
    },
    "invoice": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 5000
        },
        {
          "$ref": "#/components/schemas/invoice"
        },
        {
          "$ref": "#/components/schemas/deleted_invoice"
        }
      ],
      "nullable": true,
      "description": "The invoice that was created from this quote.",
      "x-expansionResources": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/invoice"
          },
          {
            "$ref": "#/components/schemas/deleted_invoice"
          }
        ]
      }
    },
    "computed": {
      "$ref": "#/components/schemas/quotes_resource_computed"
    },
    "currency": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://stripe.com/docs/currencies)."
    },
    "customer": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 5000
        },
        {
          "$ref": "#/components/schemas/customer"
        },
        {
          "$ref": "#/components/schemas/deleted_customer"
        }
      ],
      "nullable": true,
      "description": "The customer who received this quote. A customer is required to finalize the quote. Once specified, you can't change it.",
      "x-expansionResources": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/customer"
          },
          {
            "$ref": "#/components/schemas/deleted_customer"
          }
        ]
      }
    },
    "livemode": {
      "type": "boolean",
      "description": "If the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`."
    },
    "metadata": {
      "type": "object",
      "description": "Set of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.",
      "additionalProperties": {
        "type": "string",
        "maxLength": 500
      }
    },
    "discounts": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "string",
            "maxLength": 5000
          },
          {
            "$ref": "#/components/schemas/discount"
          }
        ],
        "x-expansionResources": {
          "oneOf": [
            {
              "$ref": "#/components/schemas/discount"
            }
          ]
        }
      },
      "description": "The discounts applied to this quote."
    },
    "expires_at": {
      "type": "integer",
      "format": "unix-time",
      "description": "The date on which the quote will be canceled if in `open` or `draft` status. Measured in seconds since the Unix epoch."
    },
    "from_quote": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/quotes_resource_from_quote"
        }
      ],
      "nullable": true,
      "description": "Details of the quote that was cloned. See the [cloning documentation](https://docs.stripe.com/quotes/clone) for more details."
    },
    "line_items": {
      "type": "object",
      "title": "QuotesResourceListLineItems",
      "required": [
        "data",
        "has_more",
        "object",
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "maxLength": 5000,
          "description": "The URL where this list can be accessed."
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/item"
          },
          "description": "Details about each object."
        },
        "object": {
          "enum": [
            "list"
          ],
          "type": "string",
          "description": "String representing the object's type. Objects of the same type share the same value. Always has the value `list`."
        },
        "has_more": {
          "type": "boolean",
          "description": "True if this list has another page of items after this one that can be fetched."
        }
      },
      "description": "A list of items the customer is being quoted for.",
      "x-expandableFields": [
        "data"
      ]
    },
    "test_clock": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 5000
        },
        {
          "$ref": "#/components/schemas/test_helpers.test_clock"
        }
      ],
      "nullable": true,
      "description": "ID of the test clock this quote belongs to.",
      "x-expansionResources": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/test_helpers.test_clock"
          }
        ]
      }
    },
    "application": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 5000
        },
        {
          "$ref": "#/components/schemas/application"
        },
        {
          "$ref": "#/components/schemas/deleted_application"
        }
      ],
      "nullable": true,
      "description": "ID of the Connect Application that created the quote.",
      "x-expansionResources": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/application"
          },
          {
            "$ref": "#/components/schemas/deleted_application"
          }
        ]
      }
    },
    "description": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "A description that will be displayed on the quote PDF."
    },
    "amount_total": {
      "type": "integer",
      "description": "Total after discounts and taxes are applied."
    },
    "on_behalf_of": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 5000
        },
        {
          "$ref": "#/components/schemas/account"
        }
      ],
      "nullable": true,
      "description": "The account on behalf of which to charge. See the [Connect documentation](https://support.stripe.com/questions/sending-invoices-on-behalf-of-connected-accounts) for details.",
      "x-expansionResources": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/account"
          }
        ]
      }
    },
    "subscription": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 5000
        },
        {
          "$ref": "#/components/schemas/subscription"
        }
      ],
      "nullable": true,
      "description": "The subscription that was created or updated from this quote.",
      "x-expansionResources": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/subscription"
          }
        ]
      }
    },
    "automatic_tax": {
      "$ref": "#/components/schemas/quotes_resource_automatic_tax"
    },
    "total_details": {
      "$ref": "#/components/schemas/quotes_resource_total_details"
    },
    "transfer_data": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/quotes_resource_transfer_data"
        }
      ],
      "nullable": true,
      "description": "The account (if any) the payments will be attributed to for tax reporting, and where funds from each payment will be transferred to for each of the invoices."
    },
    "amount_subtotal": {
      "type": "integer",
      "description": "Total before any discounts or taxes are applied."
    },
    "customer_account": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "The account representing the customer who received this quote. A customer or account is required to finalize the quote. Once specified, you can't change it."
    },
    "invoice_settings": {
      "$ref": "#/components/schemas/invoice_setting_quote_setting"
    },
    "collection_method": {
      "enum": [
        "charge_automatically",
        "send_invoice"
      ],
      "type": "string",
      "description": "Either `charge_automatically`, or `send_invoice`. When charging automatically, Stripe will attempt to pay invoices at the end of the subscription cycle or on finalization using the default payment method attached to the subscription or customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions and mark the subscription as `active`. Defaults to `charge_automatically`."
    },
    "default_tax_rates": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "string",
            "maxLength": 5000
          },
          {
            "$ref": "#/components/schemas/tax_rate"
          }
        ],
        "x-expansionResources": {
          "oneOf": [
            {
              "$ref": "#/components/schemas/tax_rate"
            }
          ]
        }
      },
      "description": "The tax rates applied to this quote."
    },
    "subscription_data": {
      "$ref": "#/components/schemas/quotes_resource_subscription_data_subscription_data"
    },
    "status_transitions": {
      "$ref": "#/components/schemas/quotes_resource_status_transitions"
    },
    "subscription_schedule": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 5000
        },
        {
          "$ref": "#/components/schemas/subscription_schedule"
        }
      ],
      "nullable": true,
      "description": "The subscription schedule that was created or updated from this quote.",
      "x-expansionResources": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/subscription_schedule"
          }
        ]
      }
    },
    "application_fee_amount": {
      "type": "integer",
      "nullable": true,
      "description": "The amount of the application fee (if any) that will be requested to be applied to the payment and transferred to the application owner's Stripe account. Only applicable if there are no line items with recurring prices on the quote."
    },
    "application_fee_percent": {
      "type": "number",
      "nullable": true,
      "description": "A non-negative decimal between 0 and 100, with at most two decimal places. This represents the percentage of the subscription invoice total that will be transferred to the application owner's Stripe account. Only applicable if there are line items with recurring prices on the quote."
    }
  },
  "description": "A Quote is a way to model prices that you'd like to provide to a customer.\nOnce accepted, it will automatically create an invoice, subscription or subscription schedule.",
  "x-resourceId": "quote",
  "x-expandableFields": [
    "application",
    "automatic_tax",
    "computed",
    "customer",
    "default_tax_rates",
    "discounts",
    "from_quote",
    "invoice",
    "invoice_settings",
    "line_items",
    "on_behalf_of",
    "status_transitions",
    "subscription",
    "subscription_data",
    "subscription_schedule",
    "test_clock",
    "total_details",
    "transfer_data"
  ]
}
object quotes_resource_automatic_tax
{
  "type": "object",
  "title": "QuotesResourceAutomaticTax",
  "required": [
    "enabled"
  ],
  "properties": {
    "status": {
      "enum": [
        "complete",
        "failed",
        "requires_location_inputs"
      ],
      "type": "string",
      "nullable": true,
      "description": "The status of the most recent automated tax calculation for this quote."
    },
    "enabled": {
      "type": "boolean",
      "description": "Automatically calculate taxes"
    },
    "provider": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "The tax provider powering automatic tax."
    },
    "liability": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/connect_account_reference"
        }
      ],
      "nullable": true,
      "description": "The account that's liable for tax. If set, the business address and tax registrations required to perform the tax calculation are loaded from this account. The tax transaction is returned in the report of the connected account."
    }
  },
  "description": "",
  "x-expandableFields": [
    "liability"
  ]
}
object quotes_resource_computed
{
  "type": "object",
  "title": "QuotesResourceComputed",
  "required": [
    "upfront"
  ],
  "properties": {
    "upfront": {
      "$ref": "#/components/schemas/quotes_resource_upfront"
    },
    "recurring": {
      "anyOf": [
        {
          "$ref": "#/components/schemas/quotes_resource_recurring"
        }
      ],
      "nullable": true,
      "description": "The definitive totals and line items the customer will be charged on a recurring basis. Takes into account the line items with recurring prices and discounts with `duration=forever` coupons only. Defaults to `null` if no inputted line items with recurring prices."
    }
  },
  "description": "",
  "x-expandableFields": [
    "recurring",
    "upfront"
  ]
}
object quotes_resource_from_quote
{
  "type": "object",
  "title": "QuotesResourceFromQuote",
  "required": [
    "is_revision",
    "quote"
  ],
  "properties": {
    "quote": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 5000
        },
        {
          "$ref": "#/components/schemas/quote"
        }
      ],
      "description": "The quote that was cloned.",
      "x-expansionResources": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/quote"
          }
        ]
      }
    },
    "is_revision": {
      "type": "boolean",
      "description": "Whether this quote is a revision of a different quote."
    }
  },
  "description": "",
  "x-expandableFields": [
    "quote"
  ]
}
object quotes_resource_recurring
{
  "type": "object",
  "title": "QuotesResourceRecurring",
  "required": [
    "amount_subtotal",
    "amount_total",
    "interval",
    "interval_count",
    "total_details"
  ],
  "properties": {
    "interval": {
      "enum": [
        "day",
        "month",
        "week",
        "year"
      ],
      "type": "string",
      "description": "The frequency at which a subscription is billed. One of `day`, `week`, `month` or `year`."
    },
    "amount_total": {
      "type": "integer",
      "description": "Total after discounts and taxes are applied."
    },
    "total_details": {
      "$ref": "#/components/schemas/quotes_resource_total_details"
    },
    "interval_count": {
      "type": "integer",
      "description": "The number of intervals (specified in the `interval` attribute) between subscription billings. For example, `interval=month` and `interval_count=3` bills every 3 months."
    },
    "amount_subtotal": {
      "type": "integer",
      "description": "Total before any discounts or taxes are applied."
    }
  },
  "description": "",
  "x-expandableFields": [
    "total_details"
  ]
}
object quotes_resource_status_transitions
{
  "type": "object",
  "title": "QuotesResourceStatusTransitions",
  "properties": {
    "accepted_at": {
      "type": "integer",
      "format": "unix-time",
      "nullable": true,
      "description": "The time that the quote was accepted. Measured in seconds since Unix epoch."
    },
    "canceled_at": {
      "type": "integer",
      "format": "unix-time",
      "nullable": true,
      "description": "The time that the quote was canceled. Measured in seconds since Unix epoch."
    },
    "finalized_at": {
      "type": "integer",
      "format": "unix-time",
      "nullable": true,
      "description": "The time that the quote was finalized. Measured in seconds since Unix epoch."
    }
  },
  "description": "",
  "x-expandableFields": []
}
object quotes_resource_subscription_data_billing_mode
{
  "type": "object",
  "title": "QuotesResourceSubscriptionDataBillingMode",
  "required": [
    "type"
  ],
  "properties": {
    "type": {
      "enum": [
        "classic",
        "flexible"
      ],
      "type": "string",
      "description": "Controls how prorations and invoices for subscriptions are calculated and orchestrated."
    },
    "flexible": {
      "$ref": "#/components/schemas/subscriptions_resource_billing_mode_flexible"
    }
  },
  "description": "The billing mode of the quote.",
  "x-expandableFields": [
    "flexible"
  ]
}
object quotes_resource_subscription_data_subscription_data
{
  "type": "object",
  "title": "QuotesResourceSubscriptionDataSubscriptionData",
  "required": [
    "billing_mode"
  ],
  "properties": {
    "metadata": {
      "type": "object",
      "nullable": true,
      "description": "Set of [key-value pairs](https://docs.stripe.com/api/metadata) that will set metadata on the subscription or subscription schedule when the quote is accepted. If a recurring price is included in `line_items`, this field will be passed to the resulting subscription's `metadata` field. If `subscription_data.effective_date` is used, this field will be passed to the resulting subscription schedule's `phases.metadata` field. Unlike object-level metadata, this field is declarative. Updates will clear prior values.",
      "additionalProperties": {
        "type": "string",
        "maxLength": 500
      }
    },
    "description": {
      "type": "string",
      "nullable": true,
      "maxLength": 5000,
      "description": "The subscription's description, meant to be displayable to the customer. Use this field to optionally store an explanation of the subscription for rendering in Stripe surfaces and certain local payment methods UIs."
    },
    "billing_mode": {
      "$ref": "#/components/schemas/quotes_resource_subscription_data_billing_mode"
    },
    "effective_date": {
      "type": "integer",
      "format": "unix-time",
      "nullable": true,
      "description": "When creating a new subscription, the date of which the subscription schedule will start after the quote is accepted. This date is ignored if it is in the past when the quote is accepted. Measured in seconds since the Unix epoch."
    },
    "trial_period_days": {
      "type": "integer",
      "nullable": true,
      "description": "Integer representing the number of trial period days before the customer is charged for the first time."
    }
  },
  "description": "",
  "x-expandableFields": [
    "billing_mode"
  ]
}
object quotes_resource_total_details
{
  "type": "object",
  "title": "QuotesResourceTotalDetails",
  "required": [
    "amount_discount",
    "amount_tax"
  ],
  "properties": {
    "breakdown": {
      "$ref": "#/components/schemas/quotes_resource_total_details_resource_breakdown"
    },
    "amount_tax": {
      "type": "integer",
      "description": "This is the sum of all the tax amounts."
    },
    "amount_discount": {
      "type": "integer",
      "description": "This is the sum of all the discounts."
    },
    "amount_shipping": {
      "type": "integer",
      "nullable": true,
      "description": "This is the sum of all the shipping amounts."
    }
  },
  "description": "",
  "x-expandableFields": [
    "breakdown"
  ]
}
object quotes_resource_total_details_resource_breakdown
{
  "type": "object",
  "title": "QuotesResourceTotalDetailsResourceBreakdown",
  "required": [
    "discounts",
    "taxes"
  ],
  "properties": {
    "taxes": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/line_items_tax_amount"
      },
      "description": "The aggregated tax amounts by rate."
    },
    "discounts": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/line_items_discount_amount"
      },
      "description": "The aggregated discounts."
    }
  },
  "description": "",
  "x-expandableFields": [
    "discounts",
    "taxes"
  ]
}
object quotes_resource_transfer_data
{
  "type": "object",
  "title": "QuotesResourceTransferData",
  "required": [
    "destination"
  ],
  "properties": {
    "amount": {
      "type": "integer",
      "nullable": true,
      "description": "The amount in cents (or local equivalent) that will be transferred to the destination account when the invoice is paid. By default, the entire amount is transferred to the destination."
    },
    "destination": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 5000
        },
        {
          "$ref": "#/components/schemas/account"
        }
      ],
      "description": "The account where funds from the payment will be transferred to upon payment success.",
      "x-expansionResources": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/account"
          }
        ]
      }
    },
    "amount_percent": {
      "type": "number",
      "nullable": true,
      "description": "A non-negative decimal between 0 and 100, with at most two decimal places. This represents the percentage of the subscription invoice total that will be transferred to the destination account. By default, the entire amount will be transferred to the destination."
    }
  },
  "description": "",
  "x-expandableFields": [
    "destination"
  ]
}
object quotes_resource_upfront
{
  "type": "object",
  "title": "QuotesResourceUpfront",
  "required": [
    "amount_subtotal",
    "amount_total",
    "total_details"
  ],
  "properties": {
    "line_items": {
      "type": "object",
      "title": "QuotesResourceListLineItems",
      "required": [
        "data",
        "has_more",
        "object",
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "maxLength": 5000,
          "description": "The URL where this list can be accessed."
        },
        "data": {
          "type": "array",
          "items": {
            "$ref": "#/components/schemas/item"
          },
          "description": "Details about each object."
        },
        "object": {
          "enum": [
            "list"
          ],
          "type": "string",
          "description": "String representing the object's type. Objects of the same type share the same value. Always has the value `list`."
        },
        "has_more": {
          "type": "boolean",
          "description": "True if this list has another page of items after this one that can be fetched."
        }
      },
      "description": "The line items that will appear on the next invoice after this quote is accepted. This does not include pending invoice items that exist on the customer but may still be included in the next invoice.",
      "x-expandableFields": [
        "data"
      ]
    },
    "amount_total": {
      "type": "integer",
      "description": "Total after discounts and taxes are applied."
    },
    "total_details": {
      "$ref": "#/components/schemas/quotes_resource_total_details"
    },
    "amount_subtotal": {
      "type": "integer",
      "description": "Total before any discounts or taxes are applied."
    }
  },
  "description": "",
  "x-expandableFields": [
    "line_items",
    "total_details"
  ]
}
object radar.early_fraud_warning
{
  "type": "object",
  "title": "RadarEarlyFraudWarning",
  "required": [
    "actionable",
    "charge",
    "created",
    "fraud_type",
    "id",
    "livemode",
    "object"
  ],
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 5000,
      "description": "Unique identifier for the object."
    },
    "charge": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 5000
        },
        {
          "$ref": "#/components/schemas/charge"
        }
      ],
      "description": "ID of the charge this early fraud warning is for, optionally expanded.",
      "x-expansionResources": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/charge"
          }
        ]
      }
    },
    "object": {
      "enum": [
        "radar.early_fraud_warning"
      ],
      "type": "string",
      "description": "String representing the object's type. Objects of the same type share the same value."
    },
    "created": {
      "type": "integer",
      "format": "unix-time",
      "description": "Time at which the object was created. Measured in seconds since the Unix epoch."
    },
    "livemode": {
      "type": "boolean",
      "description": "If the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`."
    },
    "actionable": {
      "type": "boolean",
      "description": "An EFW is actionable if it has not received a dispute and has not been fully refunded. You may wish to proactively refund a charge that receives an EFW, in order to avoid receiving a dispute later."
    },
    "fraud_type": {
      "type": "string",
      "maxLength": 5000,
      "description": "The type of fraud labelled by the issuer. One of `card_never_received`, `fraudulent_card_application`, `made_with_counterfeit_card`, `made_with_lost_card`, `made_with_stolen_card`, `misc`, `unauthorized_use_of_card`."
    },
    "payment_intent": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 5000
        },
        {
          "$ref": "#/components/schemas/payment_intent"
        }
      ],
      "description": "ID of the Payment Intent this early fraud warning is for, optionally expanded.",
      "x-expansionResources": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/payment_intent"
          }
        ]
      }
    }
  },
  "description": "An early fraud warning indicates that the card issuer has notified us that a\ncharge may be fraudulent.\n\nRelated guide: [Early fraud warnings](https://docs.stripe.com/disputes/measuring#early-fraud-warnings)",
  "x-resourceId": "radar.early_fraud_warning",
  "x-expandableFields": [
    "charge",
    "payment_intent"
  ]
}
Load more schemas