Current SellingPlan pricing policies offer a very limited set of options, making it very hard to implement the following examples:
- 7-day free trial for a monthly recurring subscription
- A sign-up fee for a monthly subscription for products with varying prices
- Varying billing intervals where the pricing depends on the product price x timeframe
In more details:
Free trials can currently be implemented as a fixed pricing policy, using adjustmentType =PRICE and adjustmentValue=0for a number of billing cycles. If the billing policy interval is 1 year, then the free trial that can be a minimum 1 year which is an unrealistic expectation.
It would be great if there was a way to implement custom-length free trials, perhaps by some sort of delay parameter, which could have an interval independent of the billing policy’s interval.
Signup fees can also be implemented using a fixed pricing policy, but it’s limited. For example, if product price is $9.99, and we want to charge a signup fee of $99 in addition to the product price, we must create a fixed pricing policy where adjustmentType is PRICE and adjustmentValue=108.99 (9.99 + 99), and then resetting the price with a recurring pricing, policy where afterCycle=1, adjustmentType=PERCENTAGE and adjustmentValue=0.
However, there are a few issues here:
- if the product price changes, it’s not reflected in the fixed pricing policy (we would need to re-calculate it manually listening to product update webhook)
- if the selling plan is attached to another product with a different price, it immediately breaks the fixed pricing policy’s price adjustment (or rather, the adjustment is wrong for that other product)
Varying billing intervals are supported, but each interval uses the product price by default. This makes sense when subscribing to physical product shipments: if you purchase a bag of coffee monthly or every week, you just pay the same price for each shipment.
However, for digital subscriptions, the different billing interval do not represent a “shipment”, they usually represent how often the customer wants to pay for the same kind of access. Longer upfront payments usually provide some sort of discount. For example, a $9.99 monthly product may be offered for $99 when billing annually.
Setting this up is possible using PRICE adjustments, but these have the same issues as the previous point: they break down when the product’s price is updated, or when using the same selling plan for multiple products.
It looks like PERCENTAGE or FIXED adjustments only support discounts, so it’s not possible to set up an adjustment for the annual interval, where the adjustment is 12 x the product price.
Possible solutions
Allow creating positive-value percentage or fixed price adjustments for pricing policies. This would allow setting up selling plans where the price would be calculated as a factor of the original product price. For example, using a 1200% positive percentage adjustment could be used to 12 x the product price for an annual plan.
Or better yet, introduce a new adjustmentType=FACTOR, to make it easier (mentally): price x adjustmentValue (9.99 x 12).