Quoting Laravel Cashier documentation:
If you would like to offer trial periods to your customers while still collecting payment method information up front, You should use the trialDays method when creating your subscriptions.
Assuming I want to add a 30 days trial period to my subscriptions, I can create a subscription with this code:
$user->newSubscription('main', 'monthly')
->trialDays(30)
->create($stripeToken);
As a Stripe user, should I add a trial period in Stripe plan too?
I'm not sure to understand the logic of Laravel Cashier here. It seems redundant to declare something at two different places.
I would say its not necessary. If you're adding trial days at the time of subscription creation (trial_end parameter when using the API directly), that will take precedence over the trial days defined on a plan anyway!