#xlsra-q
1 messages · Page 1 of 1 (latest)
Yeess thanks for answering
My comapny has multiple saas service some of are metered some none.
We want to have plan based subscriptions
Trying to figure out best practice for this kind of billing
These are the debatable solutions
- Subscription per Plan (Stripe Product) - means cancelling previous plan subscription and starting new one
- Provide a Stripe Product as single SaaS service - collect products into single plan for subscription
At this moment we use Price objects to determine what SaaS Service the customer has.
Do not know how to upgrade from Plan with different Prices
you can combine multiple products in one subscription, that seems to make most sense for your use case.
Should we use new Subscription for each new Plan? or update SubscriptionItems and delete previous plans?
hard to say! Do you want the customer to have one invoice or multiple ones? That's the main distinction.
1 invoice
then you want https://stripe.com/docs/billing/subscriptions/multiple-products and you want to not create new Subscriptions for each plan/price.
multiple subscriptions for customer doesnt create 1 single invoice?
a subscription is basically an object saying "create an invoice on a given schedule for the items in the subscription" (like charge $100 every month). If you have multiple subscriptions for the same customer, they generate and issue invoices separately
In multiple products: what is the best way to swap between 2 different products on subscription.
https://stripe.com/docs/billing/subscriptions/upgrade-downgrade#changing you make an update call, passing the IDs of the subscription items, and the new Price IDs
The upgrade-downgrade page doesn't inform about if my price types are different for example:
One Time > Recurring
Non metered > Metered (already check and doesn't work)
Price Model 1 > Price Model 2
yeah, you can't make every possible change
it's not really documented so I can't link you anywhere specific
but basically you'd test it, and the workaround for things like your second example is that you delete the existing item(by passing {id:si_xxx, deleted:true},{price:price_xxx} to delete one item and add a new one in the update call
If my SubscriptionItem is metered and already reported some usages
How can I retain my usage count upon Price change?
as far as I know you can't, it's a limitation of the API
the only option is to delete the item and clear all the usage unfortunately
Summary
Solution 1:
My Plan > Stripe Product
SaaS Service > Product Price
Subscription > contains all [My Plan] prices
On plan change:
- delete previous SubscriptionItems
- add new Prices as new SubscriptionItems
Solution 2:
My Plan > local entity
SaaS Service > Stripe Product
My Plan > Mapped to specific Stripe Prices each of from different Stripe Product
Subscription > contains all Products and their specific prices
on Plan change:
- Change prices mapped to [My Plan] to [My Second Plan] prices
- Swap Prices upon same (SaaS Service)
- Delete Prices that are not in [My Second Plan]
Hey, let me know if there's a specific question I can answer! Either solution seems viable, just depends on what fits your integration best
Awesome thanks for the help!