Access comes from Stripe, not from the browser:
A member is granted their level when Stripe's webhook confirms the payment, never because they reached a particular page. Closing the tab the second after paying cannot lose somebody the membership they just bought.
A failed renewal does not lock anybody out:
This is the one that matters most. When a renewal payment fails:
- The order is flagged Card Failing, Access Kept on the Payments tab
- The member gets an email with a link to their own Stripe billing page to update the card
- Stripe keeps retrying for days
- Access is not touched, and ends only if the subscription is genuinely cancelled
Cards expire and get replaced constantly. Locking somebody out over one failed attempt costs you a member you had already won, for a reason that fixes itself most of the time.
The member's own billing page:
Subscribers get a signed link to Stripe's billing portal, where they can update a card, read their invoices or cancel. It is on their receipt after paying and in the card failed email, so a card change never has to become a support ticket for you.
Cancelling:
When a subscription is actually cancelled, in Stripe or by the member, the level is removed. Cancelling on your own Members tab pauses access and keeps the history, and Reactivate puts it back.
Refunds:
Refund in Stripe as you always would and it arrives here on its own, written as its own row and shown in red.
A full refund revokes the level. A partial refund does not, because a partial refund is nearly always goodwill rather than an undoing of the sale.
Deleting a member:
Deleting their WordPress user cancels their Stripe subscription too, so nobody keeps being charged for an account that no longer exists. If it cannot reach Stripe to do that, it says so loudly on the Payments tab so you can cancel it by hand.