Skip to main content
When you offer multiple tiers with recurring prices, your users can switch between them — including across tiers. crxbase handles the switch automatically, including proration through Stripe.

How it works

When a user with an active subscription views your pricing page, recurring prices on other tiers show a Switch button instead of Subscribe.
1

User clicks Switch

The user is taken to a confirmation page showing their current plan label + price and the target plan label + price side by side.
2

Proration is calculated

  • Upgrading (moving to a higher tier or a more expensive price in the same tier): the user is charged a prorated amount for the remainder of the billing period. - Downgrading (moving to a lower tier or a less expensive price): the user receives a credit toward their next invoice.
3

User confirms

The subscription is updated on Stripe immediately. The user is redirected back to the pricing page with their new tier price active.

Rules

RuleBehavior
One active subscriptionUsers can only have one active recurring subscription (monthly or yearly) per extension at a time
Lifetime blocks lower subscriptionsIf a user has a lifetime purchase, they cannot switch to a subscription in the same tier or a lower tier
Same priceIf a user tries to switch to their current price, they see an error

What you need to do

Nothing — plan switching works automatically. As long as you have multiple tiers with recurring prices configured, the pricing page handles the UX. The library’s getUser() reflects the updated plan after a switch. If you set a custom price display name, crxbase uses it on the pricing and switch screens. Stripe checkout and billing still use the parent tier name.
Use developer testing on the pricing page to force recurring and lifetime states while you validate switching behavior.