How it works
Configure trial duration
Choose a free trial duration (7, 14, or 30 days) on a tier in your dashboard. The trial applies to all recurring prices (monthly and yearly) in that
tier. One-time (lifetime) prices are not affected.
User starts a trial
An eligible authenticated user sees a Start X-day trial button on qualifying recurring prices. Clicking it creates a Stripe Checkout session that
starts a subscription trial without collecting a payment method.
Trial is active
During the trial, the user has full paid access. The library’s
getUser() returns paid: true with status: 'trialing' and trial_end on the plan
entry. trial_available is false.Eligibility
Each end-user gets one free trial per extension. Once a trial has been started — even if canceled early — the user cannot start another trial for the same extension.| Condition | Trial offered? |
|---|---|
| Tier has a trial duration configured | Yes |
| User has not used a trial for this extension | Yes |
| User already used a trial for this extension | No |
| User has an active or past_due plan | No (Switch UI) |
| Price is one-time (lifetime) | No |
Switching during a trial
If a user with a trialing subscription switches to a different recurring plan:- They see a warning that switching ends the current trial immediately.
- After confirming, the trial subscription is canceled and a fresh paid checkout is created for the target plan.
- Remaining trial time does not carry over to the new plan.
- If the user abandons the paid checkout, the trial remains canceled — there is no way to restore it.
Trial reminder emails
crxbase does not send trial reminder or expiry emails. These depend on the Stripe Billing settings of each developer’s connected Stripe account. To configure trial reminders, go to Stripe Dashboard → Settings → Billing → Subscriptions and emails on your Stripe account and enable the relevant customer email settings.API and library
getUser()
For a trialing user, the response includes:paid: truetrial_available: false- A plan entry with
status: 'trialing'andtrial_end(ISO timestamp)
getTiers()
For a trial-enabled tier, the response includestrial_days on the tier object.
What you need to do
- Choose a free trial duration (7, 14, or 30 days) on the tier(s) you want to offer trials for in your Tiers settings.
- Optionally configure trial reminder emails in your Stripe dashboard.
- The pricing page, checkout, and library automatically handle trial eligibility and lifecycle.

