Hi everyone,We are building a sophisticated B2B subscription model using
CBSubs Options,
CBSubs Family Plans, and
CBSubs CB Fields. While the initial registration works, we are hitting a wall regarding how to handle mid-term changes (upgrades/downgrades) to our "A La Carte" plan.Our Current Setup:We have a single "Custom Plan" where the price is driven entirely by user selection:
- Duration & Renewal: We currently exclusively offer 1-year memberships. The plan is configured to allow renewals 30 days before expiration.
- Dynamic Categories: Users select multiple categories via checkboxes. These are mapped to a custom field
using CBSubs CB Fields. We use this field for custom ACL overrides to show/hide content.
- Additional Licenses (B2B): Users select a number of additional seats. This integer is pushed to custom field
Code:
cb_amountofadditionallicenses
, which powers CBSubs Family Plans to allow the buyer to manage B2B license-sharing.
- Pricing: The base plan is 0€, and all value is added via the checkboxes (fixed costs) and the seat counter (multiplicative:
).
The Challenge: Mid-Term Option ChangesWe want users to be able to log in to "My Account" at any point during their year-long subscription and add/remove categories or seats. We are currently facing a "catch-22" with the
CBSubs Options display settings:
- Scenario A: If we set "Require Options Change Renewal" to Yes, the "Change Options" button disappears from the user's active subscription view unless they are within that 30-day renewal window. This forces them to wait until the end of the year to make any changes.
- Scenario B: If we set it to No, the user can change their options mid-term, but the system does not trigger a payment for the added features. It simply updates the database/user fields, effectively giving them the extra categories/seats for free for the remainder of the term.
What we need to achieve:We need a way for the user to "upgrade" their existing subscription to the same plan ID but with new options selected. Ideally, the system should:
- Calculate the price difference between the current selection and the new selection.
- Apply pro-rating based on the remaining time in the current 1-year cycle.
- Generate an invoice for the difference without creating a duplicate subscription or extending the expiration date (unless they are in the renewal window).
We plan to expand into Monthly and Quarterly options soon, so a scalable solution is vital.Our Questions:
- Is there a specific configuration in the Pricing or Workflows tabs that allows a "Self-Upgrade" (Upgrading to the same plan with different options) to trigger a pro-rated invoice mid-term?
- We considered "Campaign Codes" as a manual workaround for re-subscriptions, but this is not sustainable for a self-service UX.
- Is our "All-in-one" plan approach the best way to handle an "A La Carte" model, or is there a better architectural pattern in CBSubs for this?
We would appreciate any advice or suggestions for building the custom plan / A la carte option, as it has been a big challenge.