Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

masonfox's avatar

Registration, two types of users, one card upfront, the other not

Hello,

This application that I am building has two different types of users, one of which I do not need a card upfront for, not even a trial. This user is a freemium user.

However, the other type of user is a paid user that I need to grab CC info from right during registration and create a subscription. Both types of users use the same registration form at the moment. They select which type of user they are and then that defines this user.

I'd like to be able to show the billing form in the same registration form if they choose the paid user, but not for the freemium one. So much how it would look like if you were not using the noCardUpFront option in the Spark Service provider, but toggled in the view.

I am not necessarily confused about the Vue aspect of it, I'll just check to see if they're that type of user, but I am more interested in any tips for how to do it with Stripe and creating a subscription for just this one user.

Any thoughts would be majorly appreciated!

0 likes
2 replies
insanealec's avatar
Level 4

You could use the trialDays function on your Spark Plan.

Spark::plan('Basic', 'team-basic')
    ->price(10)
    ->trialDays(1)
    ->features([
        'Five Team Members',
        'Feature 2',
        'Feature 3',
    ]);

And when you initially create the subscription set the quantity to 0 (haven't used this myself but it may make it so they aren't charged). Then whenever you want to charge them, increment the quantity and end the trial.

From this thread: https://laracasts.com/discuss/channels/spark/does-spark-rely-on-fixed-subscription-plans

  • Spark may ignore the quantity, but it is supported by Stripe if you're using it, so you may need to mess with their API to get the quantity to work.
  • You could also do multiple one-time charges for a user for each thing you charge them for.

Please or to participate in this conversation.