#gregers-sca-subscription
1 messages · Page 1 of 1 (latest)
@fallow thorn hello! I'm not entirely sure I follow. Why would someone switch to yearly while the subscription is incomplete exactly?
Sorry let me do a better job laying out the scenario
Initial state: User is on active monthly subscription
They decide to upgrade to yearly to access savings. This will result in an invoice for some amount with prorations from the monthly subscription
If that invoice requires SCA the new yearly subscription will be in incomplete status
I'm wondering how you might handle card failure flows in a case like this? Obviously many things you could do but is there a vanilla example that I could reference?
If we cancel the monthly subscription then it could be a bit awkward to revert since now when the yearly subscription times out after 23 hours we have to recreate the monthly subscription and ideally restore its subscription interval / prorations
If we leave the old subscription open then there is chance it could even generate an invoice within that 23 hour interval which could be strange
The fact that we're encountering these types of challenges makes me feel like I'm thinking about this the wrong way fundamentally
https://stripe.com/docs/billing/subscriptions/pending-updates I think you want this flow instead
Ty for this let me read over
So is the idea that I would basically update the subscription rather than create a new one / cancel old one? I would update the subscription item from monthly to yearly?
yes
and it leaves the change "pending" until you get them to pay
and if they don't it reverts back to monthly
I see
ok so I did leave out some complexity in my scenario
so we have multiple products which can be subscribed to independently
this means I might have a subscription with 2 items (2 separate monthly subscriptions)
User might go to upgrade one of these to yearly in which case we are forced to create a new subscription right?
yeah you can't "combine" billing cycles
How might I handle sca in that case I wonder?
Its really this notion of reverting that is challenging
The invoice woudl be associated with the new subscription
In that case you have to do a brand new subscription and if it's paid successfully you remove the price on the old subscription
Maybe a pending update to remove the item on the old subscription? Could that pending update be associated with the invoice on the new subscription?
there isn't really a better way for it to do pending across subscriptions
I see
so the flow would be:
- Update is requested
- Create new subscription -> SCA is triggered
- Wait until SCA is completed... only when it is successfully completed / new subscription is finalized do we remove the old subscription item
If it fails the new subscription times out and we just leave the old item
yeah
Basically we need to model the logic outselfs
only downside is that you don't get "proration credit" for the remaining time already paid on the monthly
Aha good point
The prorations are certainly a challenge here
TBH finding this incomplete status difficult to work with
if it went direct to unpaid it would be really helpful or if we could request it go unpaid instead
The dream would be we basically commit all the changes immediately knowing they cannot time out
then if SCA is not completed our delinquent handling would trigger and cover our bases