Subscription items allow you to create customer subscriptions with more than one plan, making it easy to represent complex billing relationships.
Attributes
- idstring
Unique identifier for the object.
- metadataobject
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.
- priceobject
The price the customer is subscribed to.
- quantitynullable integer
The quantity of the plan to which the customer should be subscribed.
- subscriptionstring
The
subscriptionthissubscription_belongs to.item
More attributes
- objectstring
- billed_
untilnullable timestampPreview featureExpandable - billing_
thresholdsnullable object - createdinteger
- current_
period_ endtimestamp - current_
period_ starttimestamp - discountsarray of stringsExpandable
- tax_
ratesnullable array of objects
{ "id": "si_NcLYdDxLHxlFo7", "object": "subscription_item", "created": 1680126546, "metadata": {}, "price": { "id": "price_1Mr6rdLkdIwHu7ixwPmiybbR", "object": "price", "active": true, "billing_scheme": "per_unit", "created": 1680126545, "currency": "usd", "custom_unit_amount": null, "discounts": null, "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "product": "prod_NcLYGKH0eY5b8s", "recurring": { "interval": "month", "interval_count": 1, "trial_period_days": null, "usage_type": "licensed" }, "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "recurring", "unit_amount": 1000, "unit_amount_decimal": "1000" }, "quantity": 2, "subscription": "sub_1Mr6rbLkdIwHu7ix4Xm9Ahtd", "tax_rates": []}Adds a new item to an existing subscription. No existing items will be changed or replaced.
Parameters
- subscriptionstringRequired
The identifier of the subscription to modify.
- metadataobject
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. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to
metadata. - payment_
behaviorenum Controls how Stripe handles payment when a subscription update requires payment and
collection_.method=charge_ automatically Possible enum valuesallow_incomplete This is the default behavior since 2019-03-14. Transition the subscription to
status=past_if payment fails. If you have payment retries configured, Stripe automatically retries the payment. If the payment requires action, you receive andue invoice.webhook and must manage additional user actions. For example, SCA regulations might require 3DS authentication to complete payment. See the SCA Migration Guide for Billing to learn more.payment_ action_ required default_incomplete When payment is required, transition the subscription to
status=past_without attempting payment. You must request explicit confirmation of the Invoice’s PaymentIntent. The resulting Invoice has auto_advance=false, so Stripe doesn’t automatically attempt payment, retry payment, or finalize the subscription.due error_if_ incomplete If payment fails, return an HTTP
402status code and don’t update the subscription. This behavior doesn’t support payments that require user action, such as 3DS authentication, because it returns an error instead of creating a PaymentIntent withstatus=requires_. This behavior was the default for API versions before 2019-03-14.action pending_if_ incomplete If payment fails, Stripe creates a pending update, which applies only if the payment eventually succeeds. This behavior doesn’t support all attributes and payment methods. This option is the simplest way to ensure the customer completes payment before Stripe applies the update.
- pricestring
The ID of the price object.
- proration_
behaviorenum Determines how to handle prorations when the billing cycle changes (e.g., when switching plans, resetting
billing_, or starting a trial), or if an item’scycle_ anchor=now quantitychanges. The default value iscreate_.prorations Possible enum valuesalways_invoice Always invoice immediately for prorations.
create_prorations Will cause proration invoice items to be created when applicable. These proration items will only be invoiced immediately under certain conditions.
noneDisable creating prorations in this request.
- quantityinteger
The quantity you’d like to apply to the subscription item you’re creating.
More parameters
- billing_
thresholdsobject - discountsarray of objects
- price_
dataobject - proration_
datetimestamp - tax_
ratesarray of strings
Returns
Returns the created Subscription Item object, if successful. Otherwise, this call raises an error.
curl https://api.stripe.com/v1/subscription_items \ -u "sk_test_BQokikJ...2HlWgH4olfQ2sk_test_BQokikJOvBiI2HlWgH4olfQ2:" \ -d subscription={{SUBSCRIPTION_ID}} \ -d price={{PRICE_ID}} \ -d quantity=2{ "id": "si_NcLYdDxLHxlFo7", "object": "subscription_item", "created": 1680126546, "metadata": {}, "price": { "id": "price_1Mr6rdLkdIwHu7ixwPmiybbR", "object": "price", "active": true, "billing_scheme": "per_unit", "created": 1680126545, "currency": "usd", "custom_unit_amount": null, "discounts": null, "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "product": "prod_NcLYGKH0eY5b8s", "recurring": { "interval": "month", "interval_count": 1, "trial_period_days": null, "usage_type": "licensed" }, "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "recurring", "unit_amount": 1000, "unit_amount_decimal": "1000" }, "quantity": 2, "subscription": "sub_1Mr6rbLkdIwHu7ix4Xm9Ahtd", "tax_rates": []}Updates the plan or quantity of an item on a current subscription.
Parameters
- metadataobject
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. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to
metadata. - payment_
behaviorenum Controls how Stripe handles payment when a subscription update requires payment and
collection_.method=charge_ automatically Possible enum valuesallow_incomplete This is the default behavior since 2019-03-14. Transition the subscription to
status=past_if payment fails. If you have payment retries configured, Stripe automatically retries the payment. If the payment requires action, you receive andue invoice.webhook and must manage additional user actions. For example, SCA regulations might require 3DS authentication to complete payment. See the SCA Migration Guide for Billing to learn more.payment_ action_ required default_incomplete When payment is required, transition the subscription to
status=past_without attempting payment. You must request explicit confirmation of the Invoice’s PaymentIntent. The resulting Invoice has auto_advance=false, so Stripe doesn’t automatically attempt payment, retry payment, or finalize the subscription.due error_if_ incomplete If payment fails, return an HTTP
402status code and don’t update the subscription. This behavior doesn’t support payments that require user action, such as 3DS authentication, because it returns an error instead of creating a PaymentIntent withstatus=requires_. This behavior was the default for API versions before 2019-03-14.action pending_if_ incomplete If payment fails, Stripe creates a pending update, which applies only if the payment eventually succeeds. This behavior doesn’t support all attributes and payment methods. This option is the simplest way to ensure the customer completes payment before Stripe applies the update.
- pricestring
The ID of the price object. One of
priceorprice_is required. When changing a subscription item’s price,data quantityis set to 1 unless aquantityparameter is provided. - proration_
behaviorenum Determines how to handle prorations when the billing cycle changes (e.g., when switching plans, resetting
billing_, or starting a trial), or if an item’scycle_ anchor=now quantitychanges. The default value iscreate_.prorations Possible enum valuesalways_invoice Always invoice immediately for prorations.
create_prorations Will cause proration invoice items to be created when applicable. These proration items will only be invoiced immediately under certain conditions.
noneDisable creating prorations in this request.
- quantityinteger
The quantity you’d like to apply to the subscription item you’re creating.
More parameters
- billing_
thresholdsobject - discountsarray of objects
- off_
sessionboolean - price_
dataobject - proration_
datetimestamp - tax_
ratesarray of strings
Returns
curl https://api.stripe.com/v1/subscription_items/{{SUBSCRIPTION_ITEM_ID}} \ -u "sk_test_BQokikJ...2HlWgH4olfQ2sk_test_BQokikJOvBiI2HlWgH4olfQ2:" \ -d "metadata[order_id]=6735"{ "id": "si_NcLYdDxLHxlFo7", "object": "subscription_item", "created": 1680126546, "metadata": { "order_id": "6735" }, "price": { "id": "price_1Mr6rdLkdIwHu7ixwPmiybbR", "object": "price", "active": true, "billing_scheme": "per_unit", "created": 1680126545, "currency": "usd", "custom_unit_amount": null, "discounts": null, "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "product": "prod_NcLYGKH0eY5b8s", "recurring": { "interval": "month", "interval_count": 1, "trial_period_days": null, "usage_type": "licensed" }, "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "recurring", "unit_amount": 1000, "unit_amount_decimal": "1000" }, "quantity": 2, "subscription": "sub_1Mr6rbLkdIwHu7ix4Xm9Ahtd", "tax_rates": []}Retrieves the subscription item with the given ID.
Parameters
No parameters.
Returns
Returns a subscription item if a valid subscription item ID was provided. Raises an error otherwise.
curl https://api.stripe.com/v1/subscription_items/{{SUBSCRIPTION_ITEM_ID}} \ -u "sk_test_BQokikJ...2HlWgH4olfQ2sk_test_BQokikJOvBiI2HlWgH4olfQ2:"{ "id": "si_NcLYdDxLHxlFo7", "object": "subscription_item", "created": 1680126546, "metadata": {}, "price": { "id": "price_1Mr6rdLkdIwHu7ixwPmiybbR", "object": "price", "active": true, "billing_scheme": "per_unit", "created": 1680126545, "currency": "usd", "custom_unit_amount": null, "discounts": null, "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "product": "prod_NcLYGKH0eY5b8s", "recurring": { "interval": "month", "interval_count": 1, "trial_period_days": null, "usage_type": "licensed" }, "tax_behavior": "unspecified", "tiers_mode": null, "transform_quantity": null, "type": "recurring", "unit_amount": 1000, "unit_amount_decimal": "1000" }, "quantity": 2, "subscription": "sub_1Mr6rbLkdIwHu7ix4Xm9Ahtd", "tax_rates": []}