#reletreby-billing-modeling
1 messages · Page 1 of 1 (latest)
Hello, there are quite a few questions here but let's tackle them one by one. Do you know what you want to do when your customers change their plan?
Like ideally, how many coins (if any) do you give on an upgrade and how many on a downgrade?
Thanks for the prompt response! I think there are two options. Option A is to basically inform customers that any change of plans means terminating their current one and starting a new one from scratch (new billing anchor). This way, each plan could have a specific number of coins and upon changing from plan A to plan B the customer starts a brand new subscription to plan B, gets all the coin quota, and completely cancel plan A. Doing it this way requires special parameters to be sent in the update subscription request which would unfortunately prevent us from allowing customers to change subscription on Stripe customer dashboard and we would have to host our own change subscription page. Also, this approach is labeled in Stripe documentation as ‘overpayment’ because the customer won’t get any credit for their remaining time on Plan A so not sure if Stripe would be Okay with us doing it this way. Option (2) would be to follow default proration approach (perhaps with ‘bill_immediately’) but then things will be tricky. If somebody consumes all their coins on an expensive plan (say $50 a month) in the first 10 days then they switch to a cheaper plan on the 10 day (say this is a $20 plan that gives 20 coins), now for Stripe, this person has a lot of time left still and they have paid for it already so downgrading to $20 plan would trigger the new plan active but the customer won’t be billed at all. In fact, they will even get some credit for next month bill. In this case, if a webhook on payment success is what I use to issue coins I will be issuing the customer coins (20 since they have a payment success on the $20 plan) even though they actually paid nothing more this month and already exhausted the coins of the $50 plan. I could maybe check that invoice amount is non-zero, but that complicates another thing. I have a referral credit system and someone might have a legitimate invoice with $0 just because they have a bunch of referral credit
👋 Pompey needed to step away
Give me a moment to catch up
Okay so there is a lot going on here
My recommendation would be to track your "coins" outside of Stripe
You can use a metered Price to track usage over the course of the billing period
Have you looked at metered Pricing yet?
Metered pricing are good for this use case actually and would remove a lot of headache. The only problem is that Stripe doesn’t support a usage cap on the metered pricing so customers could potentially be shocked at billing time. I was hoping Stripe would support a cap after consuming $x or something
Well mostly you would track this yourself
Since you submit the usage records and keep track of that
Otherwise you could use like a tiered system
And after a certain amount of usage all usage submitted above that amount is free (or reduced cost)
But yeah you are going to have to figure out some logic for that
Got it. So you think for my use case this usage based metered pricing would be the best, right?
Yep
Got it. Thanks!
👍