Not really there are no caveats using stripe and single charge. For instance i wanted to use Stripe to create a gym website. My client said I am going to have a single time joining fee. So the way I did was, in EventServiceProvider.php there are bunch of events when a user has subscribed so I created a listener called ChargeJoinFee and used it like so:
UserSubscribed::class => [
UpdateActiveSubscription::class,
UpdateTrialEndingDate::class,
SendEmails::class,
ChargeJoinFee::class,
],
and then in that listener I charged the user like so:
public function handle($event)
{
$event->user->charge(2500);
}