Once you have defined your value metrics, it’s time to combine them to form a cohesive package that you can deliver to your customers. In other words, let’s create a plan! This is what the plan creation page looks like:
Let’s break it down.
This section has metadata about your plan, including its name and description, billing frequency information, and the flat subscription fee any customers on this plan will pay per billing period.
Additionally, we know that you might have existing subscriptions associated with a payment provider (such as Stripe), so we allow you to link this plan to any ID that represents a plan in your payment provider. This is useful when you want to migrate your existing subscriptions to Lotus.
For example, in Stripe, Prices and
Products together specify what you might
consider a “plan” in Lotus, so if you had a product with id
prod_MkU7Sl81DXLqyZ in Stripe, you could link them together by adding it to
Link External ids field. No subscriptions will be migrated until you
instruct us to do so, but this will allow you to keep track of which plans are
linked to which external ids.
One of Lotus’ core concepts is plan versioning, the ability to track plan changes over time as you iterate on pricing.
Here your first option is Invoice Time, which means when should the invoice be issued.
We expose the option to define this in two ways:
Aligned with a date in the calendar, 1st of the month etc.
On the day that the subscription was originally created, i.e the 4th of every month if that specific subscription was created on the 4th
The next option is a Localized Name, which defaults to the original Plan name. This can be useful if you have different currencies and want different plan names for different languages.
Next is important in that you can choose the base currency of this version. After creating the version, you can define other currencies for the version, but for now select a default currency for the plan.
Lastly, you can optionally select to transition this plan to another plan when its first billing cycle is finished. This helps for price ramping or if you have one plan that is a reverse trial and will transition to another plan after the first month.
Discounts and Price Adjustments
Price adjustments give you the flexibility to easily represent business events such as sales, negotiated prices with large enterprises, or discounts for early adopters. In the price adjustment creation screen, you must choose the type of price adjustment you want to create, and then specify the amount of the adjustment. Currently, we support the following types of price adjustments, all at the plan level (coming to the component level soon!):
- Percentage: This is a percentage discount or surcharge that will be applied to the total price of the plan. For example, if you want to give a 10% off discount to all customers on this plan, you would specify a percentage of 10.
- Fixed Amount: This is a flat discount or surcharge that will be applied to the total price of the plan. For example, if you want to give a $200 discount to all customers on this plan, you would specify a flat amount of 200. Keep in mind flat discounts will never give credit to a customer, and will simply make the invoice 0.
Charges & Features
This section is where you define the prices in the plan and effectively where you define the line items.
A recurring charge is a non-usage-based, flat subscription fee. Usually a plan will include a base fee that can be mapped as a recurring charge.
Usage components are simply charges/line items that are dependent on a metric. These are configured through. This format can represent per-unit pricing, packaged pricing, traditional tiered pricing, stair-step pricing, or free pricing. Even bps pricing by changing the rounding_type to no_roundig.
Plan components associate metrics to your given plan, and include the price you want to charge for them.
Components are configured through tiers. This format can represent per-unit pricing, packaged pricing, traditional tiered pricing, stair-step pricing, or free pricing.
Each component can optionally have a separate invoicing interval from the general plan duration. A use case for this would be an annual plan that bills usage overages monthly. The component also has a reset interval which determines how often the usage is reset back to 0 for the component.
These are both found under additional settings and are optional (both default to the plan duration).
Pre-paying For Usage Components
An important use case is for pre-paying usage, either in an enterprise deal or via a self-serve pricing model like Figma where you pre-pay for seats. This is made possible under the optional pre-paid tab, where you can specify if the component is pre-paid or not and optionally add an initial amount of usage to the plan by default.
In addition, since you can set ranges, you can also dictate whether the metric has a limit that the user cannot exceed, which can then be checked in your frontend
Each tier can have a different type:
Each tier also defines a rounding_type that sets the rounding behavior for the usage before the corresponding price is applied. The options are:
- round_nearest (rounds up if 0.49)
For gauge metrics, tier ranges are defined as [start_1,end_1), (start_2, end_2], where the end is not inclusive.
For discrete metrics (that follow integers i.e the Count aggregation type), tier ranges can be at most 1 integer apart from each other. An example of this would be a tier that holds the range 0 -> 3 which will include 0, 1, 2, and 3. Then the next range can be 4 -> 100 which will start at 4 and go to 100.
Plan features are meant to represent boolean features that you want to enable for your customers.
For example, you might want to enable a feature like “Advanced Reporting” for a customer on a certain plan. In the feature creation screen, you must either choose the feature you want to associate with this plan or create a new one.
For more detail on how you can use plan features to enable or disable certain features in your application, please refer to the managing feature access guide.