Pricing Plan Changes (Upgrade/Downgrade)

  1. What happens when a customer switches from one plan to another?
    1. Paid Plan -> Paid Plan
      1. Simple Option - "Upgrade"
      2. Simple Option -"Downgrade"
      3. Prorate Option - "Upgrade"
      4. Prorate Option -"Downgrade"
    2. Free Plan -> Paid Plan
  2. What happens on plan change when the customer has tracked item usage?
    1. Simple Option -"Upgrade"
    2. Prorate Option -"Upgrade"
  3. What happens on plan change when there is a setup fee?
  4. What if the new plan doesn't include enough of item X?
  5. Overriding Default Behavior
    1. Custom Prorating
      1. One-time Invoice
      2. Manipulating the "On-change" Invoice
    2. Changing the Bill Date

1 What happens when a customer switches from one plan to another?

1.1 Paid Plan -> Paid Plan

Your choice. The simple answer is to just subject the customer to the new pricing plan's configuration on the pre-existing future billing date. The other option is to prorate the current billing period, apply a credit to the current invoice, transact the current invoice immediately and restart the customer's billing cycle at the moment of the plan change. Examples of each option follow (in fancy ascii art):

  • Plan A: $45/month
  • Plan B: $80/month

1.1.1 Simple Option - "Upgrade"

       (1)          (2)               (3)
       $45                            $80
... ----|------------x-----------------|---- ...
       May          May               Jun
        8           20                 8

1. Jill is on Plan A and is billed $45
2. Jill changes to Plan B
3. Jill is on Plan B and is billed $80

1.1.2 Simple Option - "Downgrade"

       (1)          (2)               (3)
       $80                            $45
... ----|------------x-----------------|---- ...
       May          May               Jun
        8           20                 8

1. Jill is on Plan B and is billed $80
2. Jill changes to Plan A
3. Jill is on Plan A and is billed $45

1.1.3 Prorate Option - "Upgrade"

       (1)          (2)
       $45          $53
... ----|------------x
       May           |                             (3)
        8            |                             $80
                     |------------------------------|---- ...
                    May                            Jun
                    20                             20

1. Jack is on Plan A and is billed $45
2. Jack changes to Plan B.  Calculating a prorated amount based on a standard 30
   day month at the $45/mo rate, each  day is worth $1.50 ($45 divided by 30 days).
   He has received service for 12 days since his last bill on Plan A, worth 
   $18 ($1.50/day x 12 days).  The remainder of the month is worth $27 ($45-$18).  
   A credit for $27 is added to a new invoice transacted immediately for a net 
   amount of $53 ($80-$27).
3. Jack is on Plan B and is billed $80 one month after plan change (2)

If you'd like to display the amount to the user prior to the upgrade, use this simple formula to match the prorated amount:

A = Plan A recurring charge amount
B = Plan B recurring charge amount
D = Days remaining until next (current) invoice bill date

Prorated charge = B - ( A - ( ( A / 30) * D ) )

1.1.4 Prorate Option - "Downgrade"

       (1)          (2)
       $80          $0 (-$3)
... ----|------------x
       May           |                             (3)
        8            |                             $42
                     |------------------------------|---- ...
                    May                            Jun
                    20                             20

1. Jack is on Plan B and is billed $80.
2. Jack changes to Plan A.  Calculating a prorated amount based on a standard 30
   day month at the $80/mo rate, each  day is worth $2.67 ($80 divided by 30 days).
   He has received service for 12 days since his last bill on Plan B, worth 
   $32 ($2.67/day x 12 days).  The remainder of the month is worth $48 ($80-$32).  
   A credit for $48 is added to a new invoice transacted immediately for a net 
   amount of -$3 ($45-$48).  This effectively results in a $3 credit which is carried
   over to the next invoice (3).
3. Jack is on Plan A and is billed $42 ($45 - $3) one month after plan change (2)

If you'd like to display the amount to the user prior to the downgrade, use this simple formula to match the prorated amount:

A = Plan A recurring charge amount
B = Plan B recurring charge amount
D = Days remaining until next (current) invoice bill date

Prorated charge/credit = A - ( B - ( ( B / 30) * D ) )

1.2 Free Plan -> Paid Plan

When a customer switches from a "free" plan to a paid plan, CheddarGetter considers it a new signup. In other words, it is not considered a plan change. A "free" plan is one that does not have a setup fee, a recurring fee or any tracked item overage charges. Read more about "free" plans.

2 What happens on plan change when the customer has tracked item usage?

The customer's quantity remains on the new subscription. The customer's usage will now be subject to the tracked item configuration of the new pricing plan. More fancy ascii art:

  • Plan A: $45/month
    • Item X: $5 overage amount
    • Item Y: $10 overage amount
  • Plan B: $80/month
    • Item X: $4 overage amount
    • Item Y: $9 overage amount

2.1 Simple Option - "Upgrade"

       (1)          (2)               (3)
       $70                            $102
... ----|------------x-----------------|---- ...
       May          May               Jun
        8           20                 8

1. Jill is on Plan A and is billed $70
    * Item X quantity= 1
    * Item Y quantity= 2
    * $45 + (1 x $5) + (2 x $10)
2. Jill changes to Plan B
3. Jill is on Plan B and is billed $102
    * $80 + (1 x $4) + (2 x $9)

2.2 Prorate Option - "Upgrade"

       (1)          (2)
       $70          $78
... ----|------------x
       May           |                             (3)
        8            |                             $102
                     |------------------------------|---- ...
                    May                            Jun
                    20                             20

1. Jack is on Plan A and is billed $70
    * Item X quantity=1
    * Item Y quantity=2
    * $45 + (1 x $5) + (2 x $10)
2. Jack changes to Plan B.  Calculating a prorated amount based on a standard 30
   day month at the $45/mo rate, each  day is worth $1.50 ($45 divided by 30 days).
   He has received service for 12 days since his last bill on Plan A, worth 
   $18 ($1.50/day x 12 days).  The remainder of the month is worth $27 ($45-$18).  
   A credit for $27 is added to a new invoice transacted immediately for a net 
   amount of $53 ($80-$27) plus overage under the Plan A item configuration for a
   total of $78.
    * $53 + (1 x $5) + (2 x $10)
3. Jack is on Plan B and is billed $102 one month after plan change (2)
    * $80 + (1 x $4) + (2 x $9)

3 What happens on plan change when there is a setup fee?

The answer to that question is very simple. You choose whether or not the setup fee is charged upon plan change or not. If the plan is configured to charge the setup fee upon plan change, it is added to the next billable invoice. If you use the simple option for plan changes, the new setup fee is added to the future billable invoice. If you use the prorate option for plan changes, the new setup fee is added to the prorated invoice that is transacted at the time of the plan change.

4 What if the new plan doesn't include enough of item X?

When changing plans, CG examines the tracked item configuration to determine if it's possible to change to the new plan. If the included quantity for any item does not accommodate the customer's current quantity and overage is not allowed, the plan change is rejected with a 401 Request Unauthorized error.

5 Overriding Default Behavior

We try to keep things as simple as possible while providing as much flexibility as we can. It's a delicate balance. To that end, if some of CheddarGetter's behavior doesn't work perfectly for your billing model, you can usually override that behavior and impose your will by using the tools in a different way.

5.1 Custom Prorating

CG can be configured to do some basic prorating on plan changes for you. It's pretty straightforward and only applies to the flat base recurring charge on a plan. CheddarGetter never prorates tracked item charges or custom charges. There's just too much going on there to have default behavior that would fit a significant portion of merchants' desires. So, you can do it any way you like.

5.1.1 One-time Invoice

Prior to executing a plan change, a one-time invoice built up of custom charges (credits, too, if needed) according to the amount you wish to charge a customer at the time of the plan change is probably the simplest way.

If the one-time invoice transaction is successful, then simply make the plan change. If you have CG's prorate option enabled on the plan (or it's a free to paid change), you might want to also override the on-change transaction using the changeBillDate option.

5.1.2 Manipulating the "On-change" Invoice

Another option is to adjust the subscription prior to plan change. You can add charges and credits to the current invoice in preparation for the plan change. If the plan change results in a transaction in real-time (prorated paid->paid or free->paid on signup) any charges or credits on the current invoice will be settled at plan change.

There's a small gotcha when using this method: If the plan change action fails for whatever reason (e.g., declined transaction), the subscription reverts back to the original plan and everything stays the same as it was before the plan change action was executed. So, any credits or charges you added to prepare for the change will remain. In short, if the plan change fails, you might consider removing the credits and charges you had previously added.

5.2 Changing the Bill Date

When executing plan changes, you can also pass in the changeBillDate param to override default behavior. If the plan change would normally result in the execution of an invoice, setting the changeBillDate to some date in the future will override that. Conversely, if the plan change would normally not have a transaction during the action, you can cause the next invoice to bill on plan change by setting changeBillDate=now.

View Plans and Pricing   or   Get Started with CheddarGetter now →