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

ojrask's avatar

Cashier with multi-plan service

Laravel Cashier seems to be oriented around single-user-single-plan systems (which is nice for Laracasts for instance).

Is there any way to make Laravel Cashier support multi-plan systems? This means a single user is a single Stripe customer, but may have multiple Stripe plans active at the same time. The idea is to allow a single user to create multiple application instances (which are determined with plans) using single credentials.

Would the following work:

  1. Split the Cashier migration between users and something like applications (application instances table).
  2. Set the Application model to implement Laravel\Cashier\Contracts\Billable and implement the interface to fetch some Cashier data from the Application model and some of the Cashier data from the User model.
  3. Use the Billable trait on the Application model, which in turn uses the custom Billable implementation.

Are the Cashier migration stripe_id and last_four columns the only "per-user" type column? stripe_subscription is the customer<->plan reference ID for the stripe_plan I presume?

I tried looking for definite info on the problem, but didn't find any.

EDIT:

How would Cashier handle multiplan invoicing? Is it possible to lump all subscriptions of a user into single invoice or will the user get 2+ different invoices for each plan they get if the above method is used?

0 likes
0 replies

Please or to participate in this conversation.