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

joshuaf's avatar

Spark and Team Billing vs Account Billing

I have a basic question about spark and teams. I have a SASS project where I would like to charge a company for each user on their account. So, I want to charge something like $100 per person on the "team" per year. While spark offers type of charging, it only does so by letting you set a series of plans with X number of users. This isn't really charging per user on an account. Unless ... I am mistaken about this? i.e. 5 users or less is $500 a year 10 users or less is $1,000 per year, etc

In addition to this, I would like for my clients to have the ability to set up "teams" of people that have nothing to do with billing. If you have a project that you would like to assign to three people - you create a team with those three people and give that team certain permissions. A user could invite people on totally separate accounts to join a team and have permission to work on their project. Spark seems to be kind of set up for this as well since you can have multiple teams.

This is really confusing me. Is Spark a tool for billing a company for all of its users, or is it a tool that lets you set up teams of users for permissions and collaboration purposes. On the one hand, it seems to be a tool to simply set up a team system since you can have multiple teams that consist of users you do not pay for. On the other hand, teams are used to charge accounts.

What am I missing here?

0 likes
2 replies
TonsOfLaz's avatar

I have similar questions about Spark. I am trying to use it right now for almost the exact purpose you describe -- and so far I think it will work, with per-user billing being the biggest question.

As to team billing: My understanding is that you can have someone gain access by paying for team, but you can also create new teams that are unpaid. The key point is how each user gains access. If they are part of the paid team, then they have access. If they are invited to the unpaid team, they would need to create their own payment plan to gain access to the system. So every user has to either be part of a paid team or have a single user account. Both options (team billing and user billing) are possible at once.

What I have not figured out how to do yet is charge per user on the team. There is one resource here, but it seems very minimal and incomplete (or at least, there is not enough description on it for me to tell how the details would work):

https://gist.github.com/dillinghamio/7f3b776e0ff1007cc877d63d6aaee10d

Curious to hear if you got farther in this. I am hoping to experiment in the next few months.

vmitchell85's avatar

The dillinghamio gist mentioned changes the number of subscriptions that the team has.

So 1 subscription(user) would be $10 and every time a user is added or removed the quantity is updated.

Here is the updateQuantity method:

    /**
     * Update the quantity of the subscription.
     *
     * @param  int  $quantity
     * @param  \Stripe\Customer|null  $customer
     * @return $this
     */
    public function updateQuantity($quantity, $customer = null)
    {
        $subscription = $this->asStripeSubscription();

        $subscription->quantity = $quantity;

        $subscription->prorate = $this->prorate;

        $subscription->save();

        $this->quantity = $quantity;

        $this->save();

        return $this;
    }

Hopefully this makes sense for your use cases.

Please or to participate in this conversation.