Search code examples
stripe-paymentspayment-gatewaywebhookspayment-processing

Stripe billing: trial with no plan selected and no credit card entered at signup


I read this post Stripe - How to handle subscription with a free plan and no credit card required at sign up time and found it very helpful, but I still have a question.

My app has two paid plans: 'basic' and 'pro'. On signup user doesn't select a plan and doesn't enter card details. Basically, the user is on a generic trial plan for the first 14 days and after this trial expires the user will have to choose a paid plan and enter card details.

What would be the best way to handle this trial? I was thinking about these approaches:

a) Since I don't know which paid plan the user will choose after trial expiry, I can't make use of Stripe trial periods functionality.

From Stripe Docs: When you create plans, one of the options you can set is how long the trial period will last. If you do choose to offer a trial period, the customers you sign up won't be charged for the first time until after the trial period has ended.

I was thinking to create a Stripe plan called 'trial' with an amount set to $0.00, the trial period of 14 days and interval of 2 weeks. This way I will be able to listen to Stripe webhook customer.subscription.updated to determine if trial expired and update the database accordingly. I am not sure if this is a good approach because it will generate an invoice for this trial plan (it is set as a subscription). I do like Stripe webhooks though. Is there a better way to do it?

b) Another option is to only have paid plans in Stripe and create Stripe subscription when the trial expires and the user has to choose a plan and enter card details. This way I won't be using Stripe to check if trial expired. I will do checks on user login to determine if the trial is still active.

Thanks for your help!


Solution

  • My answer would depend upon what percentage of your users end up selecting a plan after the trial period. If most do, then I'd recommend moving them into Stripe from the get-go. If most customers don't become paid users, I'd hold off moving them into Stripe until they do become paid users.

    Towards the latter, you'd just create a virtual trial on your end, and then present them with the option to fully subscribe when the two weeks are up. This approach can make sense as it doesn't pollute your Stripe account with non-customers, and it'll be very easy to subscribe your customers to a subscription at any point after the two weeks (e.g., if they come back a week after the trial is up).

    But with the former, if it'd make sense to get them into Stripe immediately. You could create a plan with no cost and a two-week trial and then watch the webhooks. That approach of yours is fine. Or you could create a plan with no cost and a two-week trial but a paid cost after that. Without a credit card on file, the subscription charge attempt will fail after that trial, and the subscription will be marked as delinquent. You may consider that to be useful.

    Hope that helps! Larry

    PS I work on support at Stripe.