# Tutorial: Upgrade Existing Subscription

Say a customer in trial wants to upgrade to a paid plan. You can use Chargebee's checkout for the upgrade. Chargebee's checkout is PCI DSS compliant, hence sensitive card information will not be handled by your servers.

# Honey Comics- Demo Application

Honey Comics, a demo application, is a fictitious online comic book store providing subscription services for comics. They send comic books weekly to their subscribers. To let the customers try the service, they provide one month's free trial. The user can upgrade to a paid plan on the website. Customers will be charged immediately on upgrade. Click here (opens new window) for a demo. The steps below will help you build an app similar to the demo.

TIP

In the sample implementation, to simplify code:

  • You won't be using any database.
  • You won't have real login implementation, hence user id will be hard coded.

# Setup

To upgrade a subscription via API, you must:

# Build the upgrade page

Build a page where users can upgrade. When the user clicks on the upgrade button/link, Chargebee checkout will open.

# Setup the client library

Download and import (opens new window) the client library of your choice. and configure the client library with your Chargebee TEST site name and API key.

  • ruby
  • nodejs
  • java
  • python
  • php

# An endpoint that returns a hosted page object

On the server side, Chargebee's checkout existing subscription API (opens new window) is used to create a hosted page object for upgrading the subscription by passing the trial subscription id.

  • ruby
  • nodejs
  • java
  • python
  • php

# Bind checkout opening with the click event

On the client side, a function like openCheckout that returns a Promise object can be a result of an ajax call, which is done to the endpoint which we created in the previous step, and this must resolve to a hosted page object.

  • jquery
  • vue
  • angular
  • react