Lifecycle guide

Turn subscription changes into product feature access.

A subscription is not a permanent yes or no. Its plan, status, dates, and overrides change over time. Subscrio gives your feature checks one current answer while billing remains a separate responsibility.

By Jasen Fici · Updated August 22, 2026

Subscription state and access

Subscription feature gating uses the current plan, status, and dates.

Billing records what happened commercially. Subscrio stores the resulting subscription state so your application can check feature access without consulting the billing provider every time a customer uses the product.

Lifecycle rules

Decide when each subscription change should affect product access.

The event tells you what changed. Your product policy determines when the customer gains or loses features. The examples below are common choices, not rules imposed by Subscrio.

Subscription changeCommon feature-access behaviorState to keep current
ActivationGrant the selected plan at the subscription start time.Plan, billing cycle, start date, and trial dates
Paid upgradeGrant the new features after the upgrade succeeds.New plan and effective time
Scheduled downgradeKeep current access until the paid period ends.Current plan and subscription end date until the change takes effect
CancellationEnd access immediately or at the paid-period boundary.Cancellation state and expiration date
ExpirationStop subscription-based access and use the inactive fallback.Inactive status and expiration date
Failed paymentContinue, limit, or end access according to the grace-period policy.Current subscription state plus any product-specific grace rule
Payment recoveryRestore the active plan when the subscription becomes current again.Active status and current lifecycle dates

Stripe automation

Stripe users do not need event-specific subscription handlers.

When your application receives Stripe webhooks, verify the signature and pass the event to processStripeEvent. Subscrio reads supported events and maintains the customer subscription. Your code does not need a switch statement, Stripe payload parsing, or subscription update queries.

The Web Admin removes the application webhook route too.

Point Stripe at the Subscrio Web Admin and it can verify and process supported events directly.

TypeScript · verified Stripe event
app.post('/webhooks/stripe', express.raw({ type: 'application/json' }),
  async (req, res) => {
    try {
      const event = stripe.webhooks.constructEvent(
        req.body,
        req.get('stripe-signature')!,
        process.env.STRIPE_WEBHOOK_SECRET!
      );

      await subscrio.stripe.processStripeEvent(event);
      return res.sendStatus(200);
    } catch {
      return res.sendStatus(400);
    }
  }
);

One lifecycle model

Use the same subscription rules with any source of commercial data.

Stripe is one input. Another billing provider, a license sale, an internal operations tool, or a manual agreement can update the same Subscrio subscription. Your application continues to ask for the current feature value.

Decisions your product makes

  • When paid upgrades become available.
  • Whether downgrades wait until the period ends.
  • What remains available during a payment grace period.
  • How cancellation and expiration affect access.
  • What happens when no active subscription exists.

Ways Subscrio receives updates

  • The built-in Stripe integration processes a verified event.
  • The Web Admin receives Stripe webhooks directly.
  • Another billing integration updates the subscription through the library.
  • An internal tool or support workflow records a manual change.

Review the feature entitlement model, then use the .NET or TypeScript implementation guide.

Common questions

Questions about subscription feature access

What is subscription feature gating?

Subscription feature gating uses the customer's current plan, status, dates, and overrides to decide which product features and limits are available. Billing remains responsible for payments and commercial records.

Should a paid upgrade grant feature access immediately?

That is a product policy. Many teams grant paid upgrades after the change succeeds. Others use a future effective date. Store the subscription state that matches the timing shown to the customer.

When should a downgrade, cancellation, or expiration remove access?

Many products keep the current plan active through the paid period, then apply the change at the period boundary. Immediate removal is also possible when the commercial policy requires it.

What should happen after a failed payment?

Decide whether subscription feature access continues during a grace period, becomes limited, or ends. Subscrio resolves the state you record instead of imposing one failed-payment policy on every product.

How do subscription plan feature limits work?

Store the numeric limit as a feature value on the plan. Subscrio resolves that value for the customer's current subscription, while a subscription override can supply a customer-specific limit.

Do I need separate Stripe webhook handlers for every subscription event?

No. When using the library directly, verify the Stripe event and pass it to processStripeEvent. Subscrio handles supported events and maintains the customer subscription. The Web Admin can receive and process Stripe webhooks directly instead.

Next step

Make subscription changes produce predictable feature access.

Define the timing rules for each lifecycle change, then connect billing or operational updates to Subscrio.

Review the Stripe integration path

Screenshot preview