#thatcantberight-double-billing
1 messages ยท Page 1 of 1 (latest)
๐ sure thing!
Scenario: We have two Products: Free ($0.00/m) and Basic ($100.00/m). Each Product corresponds to a set of features on our site. When a Customer downgrades from Basic to Free, we're not going to immediately downgrade them and issue refunds/credits. We're going to keep the Customer on Basic until the end of the billing cycle. What I'm trying to figure out is: how to handle if a Customer downgrades and then re-upgrades within the same billing cycle. afaict, with proration_behavior='none', Stripe would reset billing_cycle_anchor and charge the Customer the full cost of Basic. Is there some internal mechanism to avoid that? To just quietly re-enroll the Customer in Basic and issue them an invoice at the end of the billing cycle, as though they'd never downgraded?
One thing I've considered is using metadata. Something like: when a Customer downgrades a Subscription, add a metadata record to indicate when that Subscription will actually "expire". Basically, structure our API call such that, any time a Customer attempts to upgrade a Subscription, we first check the Subscription's metadata to make sure that this is a true upgrade and not just a reversion of a recent downgrade. I just wanted to make sure that there wasn't a more readily available mechanism to handle the above scenario.
definitely interesting
let me think
One option I can think of (definitely haven't tested it) is you can cancel the current subscription and then put them on trial which is set to expire on your desired date. Most definitely thinking out loud at this point.
I think that approach is subject to the same pitfall of: if the Customer tried to re-enable Basic, they'd get charged for it in full, without any regard for how much time is left on their already-paid for Subscription
Yeah I feel like this is something that'd need to be handled on an application level.
You could just keep the subscription active on stripe's end and mark the subscription for cancellation on your end
- if customer tries to re-upgrade, stripe subscription would still be active so it'd not work
- if they don't try to re-upgrade then you can cancel it at the end of the current cycle
does that help?
It does, yea. I think we'll need to weigh this and the metadata option. Both require us storing additional data, so it's a matter of where we'll want to keep it.
I think metadata would be preferable because if our end-of-month cancelation task fails, we'd incorrectly bill and then have to refund the Customer.
But we'll see. Thanks for the suggestions!