Subscription
Storefront Subscription API endpoints
- GET/subscriptions
- GET/subscriptions/{subscription_id}
- PATCH/subscriptions/{subscription_id}
- PATCH/subscriptions/{subscription_id}/preferences
- PATCH/subscriptions/{subscription_id}/bundle
- POST/subscriptions/{subscription_id}/cancel
- DELETE/subscriptions/{subscription_id}/undo_cancellation
- PATCH/subscriptions/{subscription_id}/payment_method
- GET/subscriptions/{subscription_id}/shipping_methods
- GET/subscriptions/{subscription_id}/local_pickups
- POST/subscriptions/{subscription_id}/items
- GET/subscriptions/{subscription_id}/items/{item_id}
- PATCH/subscriptions/{subscription_id}/items/{item_id}
- DELETE/subscriptions/{subscription_id}/items/{item_id}
- PATCH/subscriptions/{subscription_id}/items/{item_id}/preferences
- PATCH/subscriptions/{subscription_id}/items/{item_id}/bundle
An API endpoint to get list of subscriptions.
Query parameters
pageoptionalintegerPage
per_pageoptionalintegerEntities per page
statusesoptionalstring[]Filter by subscription status
Returnsobject
Subscriptions list response
An api call to show the subscription.
Path parameters
subscription_idRequiredintegerSubscription ID
ReturnsSubscription
Subscription object response
An api call to update the subscription.
Path parameters
subscription_idRequiredintegerSubscription ID
Request body
Update subscription
quantityoptionalintegerDeprecatedSubscription-level quantity. Rejected for subscriptions with multiple subscription items — update the quantity per item via PATCH /subscriptions/{subscription_id}/items/{item_id}.
metadataoptionalobject[] | nullList of metadata and their values
ReturnsSubscription
Subscription object response
Update subscription survey preferences by Subscription ID
Deprecated. Do not use it in new integrations.
Update the subscription survey preferences.
Deprecated. This endpoint operates on the subscription as a whole and is not available for subscriptions that have multiple subscription items — for those it responds with 410 Gone (error code endpoint_deprecated). Use PATCH /subscriptions/{subscription_id}/items/{item_id}/preferences instead.
Path parameters
subscription_idRequiredintegerSubscription ID
Request body
Update subscription survey preferences
preferencesRequiredobject[]update_ordersoptionalbooleanUpdate order preferences in the awaiting_delivery and future_shipment status. Allowed when the survey appearance type is after checkout, or when the sync_orders_preferences_on_subscription_update shop setting is enabled.
ReturnsSubscription
Subscription object response
Error responses
410objectEndpoint deprecated for this subscription. Returned when the subscription has multiple subscription items — use the per-item preferences endpoint.
Update the subscription bundle data for a single-item subscription. Only applicable when the subscription has exactly one subscription item; for subscriptions with multiple subscription items update each item's bundle via PATCH /subscriptions/{subscription_id}/items/{item_id}/bundle.
Path parameters
subscription_idRequiredintegerSubscription ID
Request body
Update subscription bundle data for a single-item subscription. Only applicable when the subscription has exactly one subscription item.
bundleRequiredSubscriptionBundleBodyBundle payload for the subscription's single subscription item. Rejected for subscriptions that have multiple subscription items — update each item's bundle via PATCH /subscriptions/{subscription_id}/items/{item_id}/bundle.
quantityoptionalinteger | nullSubscription item quantity. Rejected for subscriptions with multiple subscription items — set the quantity per item instead.
product_idoptionalinteger | nullTarget subscription product (a product change). Must share the current product's bundle or belong to its change-product collection.
ReturnsSubscription
Subscription object response
Cancels a subscription for a given reason.
Path parameters
subscription_idRequiredintegerThe ID of the subscription to cancel
Request body
Cancellation Reasons Body
reason_idoptionalinteger | nullThe ID of the cancellation reason (available if cancellation reasons are enabled)
extra_feedbackoptionalstring | nullAdditional feedback from the customer
typeoptionalstring | nullOptional cancellation type. Only 'end_of_period' is accepted. When omitted, committed subscriptions default to cancel at end of commitment; non-committed subscriptions cancel immediately.
Possible values: end_of_period.
ReturnsSubscription
Subscription object response
Undo the cancellation of a subscription.
Path parameters
subscription_idRequiredintegerThe ID of the subscription
ReturnsSubscription
Subscription object response
An api call to change the payment method the subscription is billed with. Only active subscriptions can be updated.
Path parameters
subscription_idRequiredintegerSubscription ID
Request body
Update subscription payment method
payment_method_idRequiredintegerID of one of the customer payment methods. It has to belong to a gateway matching the live mode of the subscription.
currency_codeRequiredstringCurrency ISO code.
ReturnsSubscription
Subscription object response
Available shipping methods for the subscription when shipped to the given address. Dynamic carrier-rated methods are not returned, so service, carrier_id and carrier are always empty here and customs_fee and future_customs_fee are always 0. shipping_fee is priced from the subscription's current items, while future_shipping_fee is priced with no chargeable items, because the items of an existing subscription are billed by its renewal invoice.
Path parameters
subscription_idRequiredintegerSubscription ID
Query parameters
address_idRequiredintegerID of one of the customer addresses the subscription would ship to. Returns an empty array when a pickup info ID is passed.
expand[]optionalstring[]Expandable relations (e.g. carrier)
ReturnsCartShippingMethod[]
Array of shipping methods objects
Available local pickups for the subscription. As on shipping_methods, service, carrier_id and carrier are always empty and customs_fee and future_customs_fee are always 0.
Path parameters
subscription_idRequiredintegerSubscription ID
Query parameters
expand[]optionalstring[]Expandable relations (e.g. carrier)
ReturnsCartShippingMethod[]
Array of local pickup objects
Add a new item to a subscription. For subscription items the product must share the subscription's billing plan. The item is not charged immediately — it is billed on the next renewal.
Path parameters
subscription_idRequiredintegerSubscription ID
Query parameters
expand[]optionalstring[]List of relations to expand (e.g. product, bundle, bundle.items, discounts, metadata)
Request body
Create a subscription item
typeRequiredstringThe item type. subscription adds another concurrent subscription line; one_time adds a one-time add-on product.
Possible values: one_time, subscription.
product_idRequiredintegerThe item's product id. For one_time items any valid one-time product is accepted. For subscription items the product must share the subscription's billing plan.
durationoptionalinteger | nullOptional add-on duration. Only valid when type is one_time; prohibited when type is subscription.
Possible values: 1.
quantityoptionalintegerItem quantity. Defaults to 1. The maximum depends on the shop's subscription quantity-selector setting.
bundleoptionalSubscriptionBundleBodyBundle configuration. Required when type is subscription and the item's product is a configurable bundle; must be omitted otherwise.
metadataoptionalobject[] | nullList of metadata and their values
ReturnsSubscriptionItem
Subscription item object response
Show a single subscription item.
Path parameters
subscription_idRequiredintegerSubscription ID
item_idRequiredintegerSubscription item ID
Query parameters
expand[]optionalstring[]List of relations to expand (e.g. product, bundle, bundle.items, discounts, metadata)
ReturnsSubscriptionItem
Subscription item object response
Update a subscription item's quantity, duration, product and/or metadata. duration only applies to one_time items. product_id switches the item's product: for one_time items any one-time product is accepted; for subscription items the product must share the subscription's billing plan and must not be a configurable bundle (use the item bundle endpoint for configurable bundles).
Path parameters
subscription_idRequiredintegerSubscription ID
item_idRequiredintegerSubscription item ID
Query parameters
expand[]optionalstring[]List of relations to expand (e.g. product, bundle, bundle.items, discounts, metadata)
Request body
Update a subscription item
quantityoptionalinteger | nullItem quantity. When omitted the current quantity is kept.
durationoptionalinteger | nullAdd-on duration. Only valid for one_time items; prohibited for subscription items. Set to 1 for a single shipment, or null to recur.
Possible values: 1.
product_idoptionalintegerSwitch the item's product. For one_time items any valid one-time product is accepted. For subscription items the product must share the subscription's billing plan and must not be a configurable bundle.
metadataoptionalobject[] | nullList of metadata and their values
ReturnsSubscriptionItem
Subscription item object response
Remove a subscription item. The last remaining subscription item cannot be removed — the request responds with 400 (error code last_subscription_item); cancel the subscription instead.
This endpoint is concurrency limited to a single in-flight request per customer. Overlapping requests respond with 429 (error code too_many_requests) instead of queueing.
Path parameters
subscription_idRequiredintegerSubscription ID
item_idRequiredintegerSubscription item ID
Query parameters
expand[]optionalstring[]List of relations to expand (e.g. product, items, discounts, metadata)
ReturnsSubscription
Subscription object response
Error responses
400objectThe last remaining subscription item cannot be removed. Cancel the subscription instead.
429objectToo many concurrent requests. Only one removal may be in flight per customer at a time; retry once the previous request has completed.
Update a subscription item's preferences
Update the survey preferences (answers) for a single subscription item.
Path parameters
subscription_idRequiredintegerSubscription ID
item_idRequiredintegerSubscription item ID
Query parameters
expand[]optionalstring[]List of relations to expand (e.g. product, bundle, bundle.items, discounts, metadata)
Request body
Update a subscription item's survey preferences
preferencesRequiredobject[] | nullupdate_ordersoptionalbooleanUpdate order preferences in the awaiting_delivery and future_shipment status. Allowed when the survey appearance type is after checkout, or when the sync_orders_preferences_on_subscription_update shop setting is enabled.
ReturnsSubscriptionItem
Subscription item object response
Update the configurable-bundle configuration (preferences, items, quantity and optionally the product) of a single subscription item. The item's product must be a configurable bundle. Works for subscriptions with any number of subscription items.
Path parameters
subscription_idRequiredintegerSubscription ID
item_idRequiredintegerSubscription item ID
Query parameters
expand[]optionalstring[]List of relations to expand (e.g. product, bundle, bundle.items, discounts, metadata)
Request body
Update a single subscription item's configurable bundle. The item's product must be a configurable bundle.
bundleRequiredSubscriptionBundleBodyBundle payload (preferences + items) for this subscription item.
quantityoptionalintegerItem quantity. When omitted the current quantity is kept.
product_idoptionalinteger | nullOptional target product for this item. Must be one of the item's available products — i.e. share the subscription's plan (same billing cadence) and be a configurable bundle. When omitted the item keeps its current product.
ReturnsSubscriptionItem
Subscription item object response