Skip to main content

๐Ÿ’ต Subscription Products, Plans and Pricing

SaaSykit comes with support for a customizable product management system that allows you to create multiple products, each with multiple plans, and each plan can have multiple intervals (monthly, yearly, etc), prices, and features.

Subscription Productsโ€‹

A subscription product is a product you sell that has a collection of plans that you offer to your customers. For example, you can have a product called "Basic" that has a monthly plan and a yearly plan. You can also have a product called "Pro" that has a monthly plan and a yearly plan.

Each product can have a set of metadata that you define in the Admin Panel that is accessible to your application via a helper function. You can use this metadata to store information about the product that you want to access in your application. For example, you can store the number of users allowed in the product, and then use the helper function SubscriptionManager::getUserSubscriptionProductMetadata() to access that information in your application and display it to your users or check against it.

Another example: if you are offering an API access to your customers where you allow different number of requests per product, you can store that information in the product metadata and then use it in your application to check against it.

This offers a lot of flexibility and allows you to customize your product offering to your customers and have this data in centralized place.

To create a new product, go to the Admin Panel and under "Product Management" click on "Subscription Products", then click on "New Subscription Product". You will be redirected to the create product page.

New product

You need to enter the following information about your new product:

  • Name: The name of the product.
  • Slug: The slug of the product. This will be generated automatically based on the name, but you can change it if you want.
  • Description: The description of the product.
  • Popular Product: Whether this product is popular or not. This will be used to display the product as the "most popular" product in the plans component.
  • Is default product: Whether this product is the default product or not. Default products will be assigned to users who are not subscribed to any product/plan. They are basically a virtual container to the "metadata" that you want to assign to users who are not subscribed to any product/plan.

    For example, if you are building an image generation service and want to offer your non-subscribed users a 50 image generations per month as a free tier, then you can create a product called "Free" and set it as the default product, and then assign a metadata to it called "image_generations" and set it to 50. Then you can use the helper function SubscriptionManager::getUserSubscriptionProductMetadata() to access this metadata in your application and check against it.
info

You can only have one default product at a time.

  • Metadata: The metadata of the product. This is a JSON object that you can use to store any information you want about the product. For example, you can store the number of users allowed in the product, and then use SubscriptionManager::getUserSubscriptionProductMetadata() to access that information in your application and display it to your users or check against it.
  • Features: The features of the product. These will be displayed during checkout and in the plans component to show the features of each plan to your users.

Plansโ€‹

A plan is a time period (time interval) at which you want your subscription product to be billed (monthly, yearly, etc). For example, you might have a product called "Basic" that has a monthly plan called Basic Monthly (with a monthly interval) and a yearly plan called Basic Yearly (with a yearly interval). This means that your customers will be able to subscribe to your "Basic" product and choose to be billed either monthly or yearly.

To create a new plan, go to the Admin Panel and under "Product Management" click on "Plans", then click on "New Plan". You will be redirected to the create plan page.

New plan

You need to enter the following information about your new plan:

  • Name: The name of the plan.
  • Slug: The slug of the plan. This will be generated automatically based on the name, but you can change it if you want.
  • Product: The product that this plan belongs to (select from the dropdown).
  • Interval Count: The number of intervals (months, years, etc) that this plan will be billed at. For example, if you want to bill the customer every 3 months, then you need to set this to 3 and the interval (see below) to month.
  • Interval: The interval (monthly, yearly, etc) that this plan will be billed at.
  • Has trial: Whether this plan has a trial period or not. If this is enabled, then you need to set the trial period for this plan (see below).
  • Trial interval count: The number of intervals (months, years, etc) that the trial period will last. For example, if you want to offer a 3 months trial period, then you need to set this to 3 and the trial interval (see below) to month.
  • Trial interval: The interval (monthly, yearly, etc) that the trial period will last.
  • Is Active: Whether this plan is active or not. If this is disabled, then this plan will not be displayed in the plans component and will not be available for your users to subscribe to.
  • Description: The description of the plan.

Trial Periodโ€‹

As mentioned above, you can define a trial period (interval) for each plan. This allows you to offer a trial period for your customers to try your product before they are billed for it.

This is useful if you want to offer a free trial period for your customers to try your product before they are billed for it.

Pricingโ€‹

Each plan can have multiple prices. You can define pricing for each plan while editing the plan in the Admin Panel.

Plan pricing
info

SaaSykit allows you to define multiple prices for each plan but does not allow for switching prices at checkout page yet. Your users can only pay in the Default Currency that you defined on the settings page.

Supporting multiple prices at checkout will be added in the future.

Common Subscription Product/Plan Setupsโ€‹

"Basic", "Pro" and "Ultimate" Products with Monthly and Yearly Plansโ€‹

To achieve this setup:

  1. Create three subscription products: Basic, Pro and Ultimate.
  2. For each subscription product, you need to create two plans: one with a monthly interval (Basic Monthly) and one with a yearly interval Basic Yearly.
  3. Add pricing for the plans that you created in the previous step as you see fit.

"Starter" and "Growth" Products with Monthly, Quarterly and Yearly Plans (with trial periods)โ€‹

To achieve this setup:

  1. Create two subscription products: Starter and Growth.
  2. For each subscription product, you need to create three plans: one with a monthly interval (Starter Monthly & Growth Monthly), one with a quarterly interval (Starter Quarterly & Growth Quarterly), and one with a yearly interval (Starter Yearly & Growth Yearly).
tip

To create the Quarterly plan, you need to set the Interval Count to 3 and the Interval to month.

Define the trial period for each plan as you see fit.

  1. Add pricing for the plans that you created in the previous step as you see fit.

"Free" and "Pro" Products with Monthly and Yearly Plans (with trial period)โ€‹

To achieve this setup:

  1. Create two subscription products: Free and Pro. When creating the Free product, make sure to set it as the default product. This will make it the default product that is selected when the user is not subscribed to any product/plan.
  2. For the Pro product you need to create two plans: one with a monthly interval (Pro Monthly) and one with a yearly interval (Pro Yearly). Define the trial period for the Pro plan as you see fit.
tip

For the Free product you don't need to create any plans. This will serve as a virtual container to the "metadata" that you want to assign to users who are not subscribed to any product/plan.

  1. Add pricing for the Pro plans that you created in the previous step as you see fit.

Upgrading/Downgrading Plansโ€‹

SaaSykit allows your users to upgrade/downgrade their plans at any time through the user dashboard.

This will save your precious time and allow your users to manage their subscriptions without having to contact you.

tip

You can adjust how pro-rations are handled (how your customer should be billed when they upgrade/downgrade) in the settings page.

Displaying plans on your siteโ€‹

SaaSykit comes handy with the magical โœจplans component that you can use to display the plans that you offer on your site in 1 line of code.

Multiple Active Subscriptions per Userโ€‹

By default, SaaSykit allows your users to subscribe to only one product at a time. This means that if a user is subscribed to a product, they cannot subscribe to another product until they cancel their current subscription.

However, you can enable "Multiple Subscription Products" in the settings page to allow your users to subscribe to multiple products at the same time if you want to offer multiple products to your users.