How to Manage Upgrade/Downgrade of Product or Subscription Level

PayKickstart offers two different options when handling the ability to Upgrade or Downgrade of a customer(s) from one Product/Subscription Level to another.

*NOTE: PayPal(Adaptive) does not work with subscriptions upgrades and downgrades. Please use PayPal(Beta) instead.

Option #1: Inside PayKickstart

To manually upgrade or downgrade a customers Product/Subscription Level, go to Products >> Subscriptions.  Then click on the “Upgrade/Downgrade” button for that particular subscription.

A popup modal will display with 3 options.

#1. Product:  Select the new product/subscription they should now be associated with.
Note: You must FIRST have this product setup in PayKickstart in the same campaign as the original product purchased and it MUST be a recurring subscription product.

#2. First Charge: This is the amount that you want to charge today as part of the proration.

If you do not want to charge the customer any proration on the initial upgrade charge, just leave this field blank and the customer will only be charged the normal billing amount on the next charge date.

#3. Next Charge Date: This field shows the next time the customer will be charged for the subscription.

you can specify a future date for the next charge in this section or leave it as is to charge on the next previously established billing date.

Option #2: PayKickstart API

This option was designed for those who have the technical resources to create custom subscription management.  Typically this option is for SaaS/Web Applications that have their own Billing area inside their app and want to offer various Level/Plans and allow the customer to manage their account inside the app.

Here are two outlines of how you can achieve this using Paykickstart:

2a: If you do not have a Reference Purchase or prefer to the customer re-enter billing info:

  1. Each level would be created as a separate product.
  2. When your user logs into your app and clicks on one of the upgrade / downgrade buttons, this should trigger a separate purchase of the new “level” (product) in Paykickstart. You can either pass a unique customer identifier to our standard checkout URL like this: https://app.paykickstart.com/checkout/1234?customer=1234
    (where customer is your customer’s id), or if you also want to control the product price at a granular level for things like pro-rata usage billing, you can create your own Purchase request via our API (see documentation for that here: https://support.paykickstart.com/api/#new-purchase) .
    NOTE: to charge a pro-rated upgrade price, you can override the trial fields – set a trial amount and trial days. This will set the amount to charge in the first transactions and the number of days to wait before billing the subscription with the normal product pricing.
  3. After the customer has purchased the new “level”, our IPN notifier will fire a POST request to the endpoint of your choosing – here’s a link to the documentation on that: https://support.paykickstart.com/api/#instant-payment-notification-ipn. You’ll note that it’ll pass back your customer’s identifier in the POST as custom_FIELDNAME where FIELDNAME is the custom field name you passed to the checkout page. Your IPN digest script (i.e. the script at the URL you defined in your product’s settings that receives the IPN notification) can then use the IPN it receives to match the customer’s identifier to your customer record in your application, and change his “level” to the desired level in your app.

You should also CANCEL the previous subscription in Paykickstart (if this is relevant) for whichever level your customer was on before – you can do that using this API: https://support.paykickstart.com/api/#cancel-subscription


2b: If you prefer the customer NOT re-enter billing info:

If using the Old PayPal(Adaptive/Depreciated) (Not Braintree Paypal) integration, upgrade/downgrade is not possible via API. Customer will have to cancel existing subscription and buy new subscription.

NOTE: The following only applies to the new PayPal(Beta) API

1. Each level would be created as a separate product.
2. Fetch the customer’s purchase record using our Get Purchase API (https://support.paykickstart.com/api/#get-purchase)
3. Use our New Purchase API (https://support.paykickstart.com/api/#new-purchase) and pass invoice ID from
#2 as “ref_purchase” parameter. You can use all other parameters according to your need. This way our system will charge
customer’s existing billing method.
NOTE: to charge a pro-rated upgrade price, you can override the trial fields – set a trial amount and trial days. This will set the amount to charge in the first transactions and the number of days to wait before billing the subscription with the normal product pricing.
4. If you receive a successful response from #3 then cancel the old subscription using our Cancel Subscription API (https://support.paykickstart.com/api/#cancel-subscription)

Related Articles