The Problem
When customers try to cancel their subscription via the Stripe Customer Portal, Stripe’s retention offer (a discount/coupon shown as an alternative to cancellation) does not appear, even though it’s fully configured in Stripe. Stripe support confirmed that this is because certain retention-related parameters are not being passed from Memberstack when generating the Customer Portal session.
Why It’s Important
This impacts our ability to reduce churn and keep customers subscribed. Retention offers are a key part of our billing strategy, and not being able to use them within the Customer Portal means we’re missing opportunities to save subscriptions and maintain predictable revenue.
What Have I Tried?
-
Set up coupons and retention offers directly in Stripe (confirmed working by Stripe support).
-
Enabled “Offer discount as an alternative to cancellation” in the Stripe Customer Portal settings.
-
Confirmed with Stripe support that the issue is not with Stripe, but with the data being sent from Memberstack.
Workarounds like building custom cancellation flows on my site are possible, but they’re more complex, harder to maintain, and don’t use Stripe’s built-in, optimised retention UI.
Suggested Solutions
-
Update the Memberstack–Stripe integration so that when creating a Stripe Customer Portal session, Memberstack sends the necessary retention-related parameters (per Stripe’s
flow_data.subscription_cancel.retention.coupon_offerdocs). -
Optionally, add a simple toggle or configuration option in Memberstack’s dashboard to enable/disable retention coupon support for the Customer Portal.
Enabling this would let Memberstack users fully leverage Stripe’s retention tools without custom engineering, and would directly support better retention and lower churn.
1 comment
For future readers,
This use-case should now be possible with this memberscript where you can setup a retention flow for users who cancel by applying a coupon for the next billing cycle as per your settings in Stripe.
Hope this helps.
Please sign in to leave a comment.