0
votes

Use case is as follows:

  • A customer comes in an signs up for our application as a monthly subscription.
  • They select one or more features to subscribe to and click "Buy", which gets them all the features.
  • Each feature has a different price and duration (term). For example, the customer may sign up for 3 months of feature A and 1 month of feature B.
  • Features can be added and removed from the subscription at any time. If they've signed up for feature A for 3 months, then "canceling" a feature this way shouldn't actually change the subscription until 3 months have gone by.
  • Subscription and features auto-renew until canceled.
  • Everything is billed monthly with a single invoice.

As far as I can see, Stripe doesn't have good support for this use case. We can map each feature to a Stripe plan object, and a subscription can reference multiple plans, but Stripe plans don't have durations. Multi-plan subscriptions only support items with the same billing cycle.

So we would have to manage this ourselves. We would model features as products with one plan each, and we would update the Stripe subscription object with the list of subscription items. We'd have to keep track of the lifecycle of the features, independently of the Stripe state. For example, if a user has signed up for 3 months of feature A, then "cancels" the feature after 1 month, we can't update to the subscription until 2 more months have passed, to reflect the current selection of features. That seems complicated and brittle.

Are there any other options? Or competitors to Stripe that can manage this? I see Chargebee has a concept called "add-ons" that sort of maps to our use case, but they have a limitation to billing cycles that doesn't work for us.

1

1 Answers

0
votes

Stripe has a feature in beta called Subscription Schedules that lets you do what you're describing. It lets you define "phases" of your Subscription and plan in advance what changes you want to make.

For example you could say that you want to start a Subscription to a monthly plan for 3 months, then move to a different one for 6 months and then cancel the subscription automatically.

You can contact their support team here to get access.