maartenpaauw/filament-cashier-billing-provider
Integrate Laravel Cashier Stripe subscriptions into Filament multi-tenant panels. Configure plans in cashier.php and make your Billable model the tenant model; supports recurring subscriptions, trials, promo codes, tax IDs, and metered prices.
product_id, price_id, type, trial_days vs. has_generic_trial, allow_promotion_codes, collect_tax_ids, metered_price). Trial length, promo-code eligibility, tax-ID collection, and metered-vs-flat pricing become config changes you can decide and ship in a day rather than roadmap items.->requiresTenantSubscription() is opt-in, and the RedirectIfUserNotSubscribed middleware is available independently. That lets you decide per panel whether subscription is mandatory — useful for freemium vs. hard-paywall tests, and for keeping internal admin panels out of the gate.collect_tax_ids is a real product decision (VAT / reverse charge), not a checkbox. If you sell to businesses in the EU, this package is the difference between launching there and deferring.Constraints that shape scope: recurring subscriptions only (no one-time purchases, invoices, dunning, or credits UI), and the Billable model must be the same as the Filament tenant model — so per-user billing is out of scope by design.
Adopt when most of these hold:
Billable.Look elsewhere when:
Executives: "Stripe billing for our tenant admin panel is table stakes and not a differentiator. This MIT package gives us plan selection, trials, promo codes, tax-ID collection, and subscription gating through about ten lines of panel configuration instead of a multi-week build. It tracks the ecosystem closely — Laravel 13, PHP 8.5, and Filament 5 are already supported. Risk is contained because it's a thin adapter over Laravel Cashier: Stripe remains the system of record, and we can remove the package without migrating billing data. The one constraint to accept up front is recurring subscriptions only, billed to the tenant."
Engineering: "We register a BillingProvider on the panel and add a plans array to cashier.php. Our Billable model must be the tenant model. Cashier and Stripe sit underneath, so there's no new data model to own. Two things to verify before committing: the version matrix (needs Filament 4/5, Laravel 12/13) and the coverage boundary — no one-time charges, invoices, dunning, or usage dashboards, so if the roadmap needs those we're building on top. With a single maintainer and no dependents, pin the version and treat a fork as a plausible fallback."
Suggested ask: a one-day spike wiring it into a staging panel to confirm the paywall middleware behaves correctly against our existing tenancy setup.
How can I help you explore Laravel packages today?