Skip to main content
Before a customer can subscribe, your product detail page needs to know which subscription frequencies are available, what discounts apply, and whether subscriptions are offered at all for that product or variant. The subscription offer endpoint gives you all of this in a single read, resolved against the plans and offers you have configured in Admin.

Fetching a subscription offer

Call GET /store/products/:id/subscription-offer to retrieve the effective offer for a product. Pass an optional variant_id query parameter to resolve the offer for a specific variant instead.
When variant_id is provided and that variant has its own offer configured, the variant-level offer takes precedence over the product-level offer. If no offer is found at either level, or if the offer is disabled, the response returns is_subscription_available: false.

Response shape

Response fields

Frequency items

Each object in allowed_frequencies describes one selectable cadence:

Powering a PDP subscription selector

Use this endpoint to drive the subscription UI on your product detail page. A typical implementation fetches the offer on page load and uses the response to:
  1. Show or hide the subscription option — render the subscription selector only when is_subscription_available is true.
  2. Populate the frequency selector — render one option per item in allowed_frequencies, using label as the display text.
  3. Display the discount — show the savings for each frequency using discount.type and discount.value.
  4. Set checkout metadata — when the customer confirms a frequency, use the selected frequency_interval and frequency_value to set the line item metadata before calling the subscribe endpoint.
The allowed_frequencies array only contains cadences that are active in your Plans & Offers configuration. Use this list to validate which cadences a customer can select — do not allow customers to submit cadences that are not present in the response.