Cashier Stripe v15.8.0: Laravel 13 Support, Webhook Fix, and API Refinements
@crynobone tagged v15.8.0 of laravel/cashier-stripe with five merged pull requests covering Laravel 13 support, a webhook correctness fix, and several API surface improvements.
Laravel 13 Support
@crynobone added Laravel 13 compatibility in PR #1838. Projects upgrading to Laravel 13 can now pull in this release without version constraint conflicts.
Webhook Fix for customer.subscription.updated
@imerfanahmed fixed a bug in PR #1774 where receiving a customer.subscription.updated event could result in a 500 error. The fix also ensures ends_at is set correctly when Stripe sends cancellation data through this webhook.
This matters for any app that listens to subscription lifecycle events. A miscalculated or missing ends_at timestamp can cause billing logic to treat active subscriptions as expired or vice versa.
Address Lock Prevention in Checkout
@captainscorch identified the issue in #1764 and fixed it in PR #1766. Stripe Checkout was locking the customer address during a session, which prevented customers from editing their billing address at the point of purchase. The fix stops Cashier from passing the parameter that triggers that lock.
Improved Collection Return Type Hints
@nguyentranchung tightened the return type hints for collection-returning methods in PR #1796. IDE tooling and static analysis tools like PHPStan or Psalm will now infer the correct generic collection types instead of falling back to a bare Collection.
Null Values Allowed in withCoupon and withPromotionCode
@nguyentranchung also updated the withCoupon and withPromotionCode method signatures in PR #1809 to accept null.
$checkout = $billable->checkout('price_xyz')
->withCoupon(null)
->withPromotionCode(null);
Before this change, passing null to either method produced a type error. The practical use case is conditional coupon application where a variable holding the coupon code may not always be set. Now the call chain works without wrapping those calls in a conditional.
Projects running Laravel 13 or handling subscription webhooks should pick up this release. The ends_at webhook fix in particular is worth reviewing if subscription cancellation flows are part of the billing surface in an existing app.