Free Trial with Premium Plans

Plans

Basic, Pro, Premium etc. all with a stipulated trial period.

Scenario

Tim signs up for your product and by default you put him on a free trial (limited). When the trial period is about to expire, you send him an email asking him to pick a plan. After he chooses the plan, you ask him to key in his card information. If he doesn’t pick a plan, his account will be disabled. Shopify would be a great example of this model.

Implementation

Step 1: User Signup

Have a simple sign up form which collects user’s basic information (Name, Email, etc.).

Step 2: Create Plans

Set up plans that correspond to your Pricing Structure.

                                    
                                    curl  https://{site}.chargebee.com/api/v1/plans \
                                        -u {site_api_key}: \
                                        -d id="pro" \
                                        -d name="Pro" \
                                        -d invoice_name="Pro Plan" \
                                        -d price="5000"
                                    
                                    
Step 3: Create a Subscription

After a customer signs up, create a subscription in Chargebee (Creating a subscription automatically creates a customer in Chargebee).

                                    
                                        curl  https://{site}.chargebee.com/api/v1/subscriptions \
                                            -u {site_api_key}: \
                                            -d customer[email]="john@user.com" \
                                            -d customer[first_name]="John" \
                                            -d customer[last_name]="Doe" \
                                            -d customer[phone]="+1-949-999-9999" \
                                            -d plan_id="premium" \
                                            -d billing_address[first_name]="John" \
                                            -d billing_address[last_name]="Doe" \
                                            -d billing_address[line1]="PO Box 9999" \
                                            -d billing_address[city]="Walnut" \
                                            -d billing_address[state]="California" \
                                            -d billing_address[zip]="91789" \
                                            -d billing_address[country]="US"
                                        
                                    
Step 4: Watch out for when the trial ends

Have a webhook configured which listens to the subscription_trial_ending event. With the event response as a trigger, send automatic email reminders to your customers asking them to pick a plan and update their payment method information.

P.S. You could also make this information appear as a notification inside your app using the webhook as a trigger.

                                        
                                        curl  https://{site}.chargebee.com/api/v1/subscriptions/8avVGOkx8U1MX \
                                                -u {site_api_key}:
                                        
                                    
Step 5: Cancel Account or Collect Card Information

After the notification is sent:

  • If customers do not pick a plan or cancel your account, Cancel the account using the Cancel a Subscription API.

                                                    
                                                    curl https://{site}.chargebee.com/api/v1/subscriptions/8avVGOkx8U1MX/cancel \
                                                        -X POST  \
                                                        -u {site_api_key}:
                                                    
                                                
  • If customers update their payment information and pick a plan, update the plan and payment information using the Update a Subscription API.

                                                    
                                                    curl  https://{site}.chargebee.com/api/v1/subscriptions/8avVGOkx8U1MX \
                                                            -u {site_api_key}: \
                                                            -d plan_id="premium" \
                                                            -d billing_address[first_name]="John" \
                                                            -d billing_address[last_name]="Doe" \
                                                            -d billing_address[line1]="PO Box 9999" \
                                                            -d billing_address[city]="Walnut" \
                                                            -d billing_address[state]="California" \
                                                            -d billing_address[zip]="91789" \
                                                            -d billing_address[country]="US"
                                                    
                                                

    If you use Chargebee’s Hosted Pages + API, make use of the Checkout Existing Subscription API to collect information and pass it on to Chargebee.