There are two main ways to create subscription plans in Lemon Squeezy. This tutorial aims to highlight the pros and cons of both so you can use the best option for your product.
Understanding products and variants in Lemon Squeezy
In Lemon Squeezy, anything you sell—including subscription plans—is created as a Variant under a Product. Products will have one variant by default, but products can have as many variants as you want.
When you create a new product in Lemon Squeezy, its default variant will also be created. We don't make this variant visible in the dashboard and instead you edit the "product":
If you click "Add variant" in the product form, you will be prompted to customise the name, description and price of the default variant and then add more variants alongside it.
Product and Variant data
Products and variants have slightly different data assigned to them. Understanding this is key when using the API, so you know in which objects different data is stored.
- Products and variants both have an ID, name and description
- Products have media and settings for display options, redirects and receipt content
- Variants have price options, files and license key settings
You should use variants to group together different versions of the same product. For example, if you sell a basic and an extended version of a PDF, you could set up one product with two variants. Then you can upload a different PDF to each variant and give each variant a different name, description and price.
You can re-order variants when editing a product, which changes the order variants are displayed in the checkout. You can also enable, disable and duplicate and delete variants.
Setting up subscription plans in Lemon Squeezy
Now you know how products and variants work in Lemon Squeezy, let's go through two options of creating subscription plans for SaaS.
Option 1: A Product for each plan
For this first option, you would create a new Product for each of your subscription plans.
This method is better if you only have a few plans, and things get a bit more cumbersome if you sell more than one type of product in your store.
- Easier to see all products in the dashboard, storefront and API
- More work to keep product names consistent
- Lots of products needed to cover even simple plan setups
- If you sell one-time products alongside subscriptions, it's hard to organise everything in your store
You can add a name, description, images, price, trial, display options, a redirect, receipt settings and files to each product.
How products appear for customers
In your storefront, each product is shown (though you can always hide individual products from your storefront, or not use your storefront at all).
At checkout, the single product is shown.
In receipts, your customers will see the product name, image and price.
And if they log in to Lemon Squeezy to view their purchases, they see the following:
Bear in mind that even when using only this product-centric option in your store, you will need the
variant_id when working with the subscription API. You will need to save the default variant ID for each product in your local database.
Option 2: A Variant for each plan
This option is better for grouping plans and is better suited if you sell more than one product or plan in your store.
An example setup would be like this:
- Monthly (variant)
- Yearly (variant)
- Monthly (variant)
- Yearly (variant)
You could also create monthly and yearly plans under a single product, like this:
Demo app (product)
- Basic Monthly (variant)
- Basic Yearly (variant)
- Pro Monthly (variant)
- Pro Yearly (variant)
- Clearer and nicer organisation (both in the dashboard and when using the API)
- A more clicks required to set up and edit in the dashboard
You can add a name, description, price, trial and files to each variant. You can add a name, description, images, display option, a redirect and receipt settings to each product.
How variants appear for customers
In your storefront, each (visible) product is shown, with the price range taken from their active variants.
At checkout, the product name and description is shown, with a list of variants for the customer to choose from (showing their names, descriptions and prices).
If you use checkout options to only show a single variant (either in the Share modal or with the API), the product name, description and image(s) are shown alongside the variant's price:
In receipts, your customers will see the product name and image, along with the variant name and price.
And if they log in to Lemon Squeezy to view their purchases, they will see the same: