While on Stripe, they had several more events and no cancellation event.
payment failed on 2/1. This matches with revcat
payment failed again on 2/8. Not found in revcat
payment succeeded on 2/12. Not found in revcat
No cancellation event is found in Stripe.
Can you clarify if there was an error on Revcat’s side, or if this is intended behavior? If it’s intended, what’s the recommended way to handle this scenario?
Page 1 / 1
Hi @Peter ,
When we detect that the user has unsubscribed and the subscription is set to not auto-renew we will send out a cancellation webhook. This doesn’t mean that the subscription has expired. It just means that we detected a cancellation/ an unsubscribe.
When the subscription is actually expired you will see a EXPIRATION webhook come through.
Additionally if the user changes their status , let’s say they uncancel or re-subscribe. This won’t trigger an event until a renewal occurs.
So since this customer doesn’t have an expiration in our timeline this user will still have access and the as you see in Stripe the payment succeeded. So on the next renewal you’ll see an event.
@jazmine thanks for replying. Our subscriptions are set to auto-renew, so I don’t think it’s the same situation you’re describing.
Is there anything I can do to recover from this scenario?
@jazmine I have the same issue. Many of my users have billing issues (bank declined, insufficient funds, etc.) on Stripe. I send them an email to let them know so they can correct their payment information. Stripe automatically retries the charge and succeeds, but RevenueCat is sending a cancellation webhook, even though the Stripe subscription never entered a canceled state.
This is an issue for me because I send cancellation confirmation emails based on RevenueCat webhooks. So currently, users will receive the “billing error - action required” and the inaccurate “your subscription has been cancelled” emails at the same time.
In the meantime, I’ll have to change my backend to use Stripe’s webhooks directly instead of RevenueCat’s webhooks, but this is inconvenient for me because now I have two separate systems to manage webhooks for web vs. iOS/Android. I’d like to depend entirely on RevenueCat here but sending a “cancellation” event during a temporary billing issue is a bug.
Hi @jazmine we are having the same issue. If a User has a billing issue on Stripe which almost always then succeeds on the next attempt. RevenueCat sends a cancellation Webhook even though the Stripe subscription is valid.
It would make sense from my point of view not to send the cancelled event until the Subscription in Stripe has ended, or send a new event type that there is a billing issue.
Is this a known issue by the RevenueCat team? Or do you believe this is an issue with Stripe or our implementation.
Please let us know what we can do.
Hey @byson @peter did either of you come to a solution you would be happy to share?
Plus +1 I dont think a stripe bllling error should send a cancellation webhook this is causing issues for us
Hey @Dave
RC confirmed to us this was fixed 25th Aug 2021. We have not had issues since.
We have just started experiencing this again so reopened by original ticket.
We are also experiencing this issue.
Update for those following, I’ve been talking to Developer Support and they have raised this to the next level. Hopefully we hear more soon
Any solution on this? Our auto renewing subscriptions are seem “cancelled due to a billing error” even though they are fine on Stripe.
@Lee Kennedy@ajw@jazmine
We are experiencing the same issue, ‘cancelled due to a billing error’. Stripe is indeed sending this event to the webhook, but it is not picking up the next webhook updates. This seems to be causing issue in the "metadata": {uid} field which is not picked up by Rev. Cat.
Any solutions? Maybe @jazmine
Hey all,
It is expected that any billing issue regardless of platform will trigger two events: `BILLING_ISSUE` and `CANCELLATION` with the reason of `BILLING_ERROR`. This doesn’t mean that the subscription is expired if you have a grace period or billing retry period set up, just that auto-renew has been set to false. If the billing error isn’t fixed, we’ll send an `EXPIRATION` event. This is all expected behavior and is not a bug: https://www.revenuecat.com/docs/subscription-guidance/how-grace-periods-work#dashboard
At this time, we don’t have a dedicated event that is sent when the billing issue is fixed, but we will send out an updated `RENEWAL` event.
Let me know if I seem to be misunderstanding the issue.