Skip to content

Subscription plans

A subscription plan is the template that controls how and when your customers are billed on a recurring basis. Every subscription your customers sign up for is backed by a plan you design. When a renewal fires, bc-subscriptions reads the plan to determine: how much to charge, on what schedule, and whether a trial applies.

Plans live on individual products. One product can carry multiple plans — for example, a monthly option and an annual option. Customers see all active plans on the product page and choose their cadence at checkout.

Editing a plan after subscribers are already on it changes their next renewal, not past charges. If you need to change pricing for new subscribers only, create a new plan and leave the existing one in place.

Prerequisites

Create a plan

1. Open the product in bc-subscriptions

Go to BC admin → bc-subscriptions panel → Products. Find the product and click its name. You land on the product detail view showing any existing plans and an Add plan button.

2. Fill out the plan wizard

The wizard has four sections:

Billing interval

Pick the charge cadence. Supported units:

Unit Example
Daily Every 7 days
Weekly Every 2 weeks
Monthly Every 1 month
Annual Every 1 year

You can add multiple intervals to a single plan (for example, monthly and annual together), letting customers pick at checkout. The maximum value for any interval is N = 24.

Pricing strategy

Pick one strategy. You cannot mix strategies on a single plan.

Strategy How it works
Catalog price + discount % Charges the product's current catalog price minus your discount. If the catalog price changes, the next renewal reflects the new price. Enable Lock price at creation to snapshot the price at signup instead — future catalog increases and decreases won't pass through for that subscriber.
Fixed price Charges a specific amount you set, regardless of catalog changes. The catalog price is ignored.
BC Price List Pulls the renewal price from an existing BC Price List at charge time. Create the price list in BC admin (Settings → Price Lists) before selecting it here. If the price list is deleted or deactivated in BC, the next renewal fails and lands in the Exception Queue — pause the plan before making any BC-side changes to the referenced list.

Trial period

Optional. Set a number of days (0–365) for a free first period.

  • No trial (0 days): the subscriber is charged immediately at signup.
  • Free trial (> 0 days): the first charge fires at signup date + trial days. The subscriber sees the trial end date in their portal.

bc-subscriptions does not natively support a discounted first cycle at a different price on a single plan. For an introductory-price offer, create a separate single-cycle plan at the intro price and use the plan-swap flow to transition subscribers to the full-price plan after the first cycle.

Calendar anchoring

Optional. By default, renewals fire on the same day of the month as signup (sign up on the 15th → renews on the 15th every month). Calendar anchoring lets you force a fixed billing day instead.

  • anchor_day only: bills on the same day every month (for example, always the 1st).
  • anchor_month + anchor_day: bills once a year on a fixed date (for example, December 31 for annual plans).
  • If the anchor day doesn't exist in a given month (anchor_day = 31 in a 30-day month), the charge fires on the last day of that month.
  • The first charge fires at the nearest upcoming anchor date after signup. If a subscriber signs up on the 20th with anchor_day = 1, their first charge is on the 1st of the following month. The first cycle bills the full plan amount — first-cycle proration is on the roadmap.

3. Save and activate

Click Save plan. The plan is created in an inactive state — existing subscribers are unaffected. When you're ready to offer it on the storefront, toggle the plan to Active.

Commitment and minimum cycles

You can configure a minimum number of cycles subscribers must complete before they can cancel (Phase 2 feature). When set, the storefront widget shows the commitment terms at checkout and the subscriber portal enforces the lock window.

The early-cancellation policy controls what happens if a subscriber tries to cancel during the lock window: block the cancellation outright, route them to a merchant-configured support path, or apply an early-termination fee.

Advanced subscription types

These plan types extend the standard recurring model for specific use cases. Not all types are available in every phase — check your admin panel for what's currently enabled.

Prepaid fixed-term

A subscriber pays upfront for a set number of cycles (for example, 3, 6, or 12 months) at a discount. No per-cycle charge occurs during the prepaid window — bc-subscriptions generates BC orders backed by the already-collected payment. When the prepaid period ends, the subscriber is prompted to renew or let the subscription lapse.

Bundle

A fixed-composition plan that delivers a set of related products together each cycle (for example, "Coffee + Creamer + Filters" at a bundle discount). Each cycle generates a single BC order with all bundle SKUs at the configured discount. If a bundle SKU becomes unavailable at renewal time, the subscription is flagged in the Exception Queue.

Gift

A subscriber purchases N cycles of a subscription on behalf of a recipient. The gifter pays upfront for all cycles at checkout. The recipient receives a reveal email with an activation link; once claimed, the subscription is created in the recipient's BC account. The subscription does not auto-renew after the prepaid cycles unless the recipient adds a payment method.

Membership (access-based)

A plan that grants entitlements — discount access, content, or community membership — without shipping physical goods. No shipping address is required. When the charge succeeds, the configured entitlement is granted (v1: BC customer-group assignment). If the renewal fails and the grace window exhausts, the entitlement is suspended; if the subscription is cancelled, the entitlement is revoked.

Build-a-box

Subscribers pick N items from a curated set each cycle. The merchant configures the eligible product set, the box size, and a customization window before each shipment. If the subscriber doesn't customize within the window, the previous cycle's selection rolls forward.

Eligibility and rules

Use eligibility rules to control which products and which customers a plan applies to. Rules can include or exclude by product, category, brand, variant, BC customer group, country, BC channel, or quantity range.

Inclusion vs. exclusion: you can define both. When a product or customer matches both an include rule and an exclude rule, the exclusion wins.

Common rule types:

Rule What it controls
Include / exclude by category Opt in whole BC catalog categories
Include / exclude by brand Restrict or block by brand
Include / exclude specific products or variants Fine-grained SKU control
Custom field match Drive eligibility from a BC product custom field value
Customer group Gate a plan to specific BC customer groups (for example, VIP members only); unauthenticated shoppers see a sign-in prompt
Country / BC channel Block plans from regions or channels where they can't be fulfilled
Minimum / maximum quantity Enforce order minimums or cap quantities per subscription

Rules are evaluated when the storefront widget renders. A customer who doesn't meet the rules won't see the subscribe option.

Audit tool (Phase 1): the Rules Editor includes an audit tool where you or support can enter a customer and plan to see exactly which rules evaluated which way — useful for resolving "why can't I subscribe?" tickets.

Editing and deactivating plans

Editing a live plan affects the next renewal of every subscriber on that plan. If your goal is to change pricing for new subscribers only, create a new plan and leave the old one active for existing subscribers.

Deactivating a plan (toggle it to Inactive) removes it from the storefront widget for new purchases. Existing subscribers continue to renew normally under the deactivated plan. You can reactivate an inactive plan at any time.

There is no delete option. bc-subscriptions keeps plans in an inactive state so that subscriber records remain linked and auditable. To migrate subscribers off an old plan entirely, use the plan-swap flow and then deactivate the old plan.

Common pitfalls

Situation What to do
You need to change pricing for new subscribers only Create a new plan; leave the old plan active for existing subscribers
You're removing a BC Price List Pause any plans that reference it before deleting it in BC admin
You're testing intervals or charges Use test mode (Settings → Payment → Test mode) with a test Stripe key — a 1-day interval on a real product charges real subscribers daily
A trial was added to an existing plan Only new subscribers get the trial; subscribers who signed up before the trial was added are unaffected