Free, Pro, Premium etc. all with a stipulated trial period.
A customer signs up for your product and by default you put them on a free trial (limited). When the trial period is about to expire, you give them a heads up with an option to upgrade. When customers choose to pay for your product, that is when you collect their credit card information. However, if customers choose to stay as a free user, you switch them to the free plan.
The video service provider, Wistia, is a great example of this trial model.
Have a simple sign up form which collects user’s basic information (Name, Email) etc.,
Setup plans in Chargebee which 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"
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]="[email protected]" \
-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"
When the trial is about to end, nudge the customer to pick a plan. Use Chargebee Email Notifications to do so. If you prefer to do your emails in-house or use in-app notifications, configure webhooks and listen to the "subscription_trial_end_reminder" or "subscription_activated event".
After the notification is sent:
If customers pick a free plan, update their subscription in Chargebee using the Update a Subscription API.
If they pick a paid plan, redirect them to a payment page, collect their payment information and update the subscription in Chargebee.
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"
P.S. Make sure invoices aren’t generated for customers on the free plan. Learn how?