@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.
@crynobone added Laravel 13 compatibility in PR #1838. Projects upgrading to Laravel 13 can now pull in this release without version constraint conflicts.
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.
@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.
@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.
withCoupon and withPromotionCode@nguyentranchung also updated the withCoupon and withPromotionCode method signatures in PR #1809 to accept null.
1$checkout = $billable->checkout('price_xyz')2 ->withCoupon(null)3 ->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.
If you enjoyed this article, please consider supporting our work for as low as $5 / month.
Sponsor
Written by
Writing and maintaining @LaravelMagazine. Host of "The Laravel Magazine Podcast". Pronouns: vi/vim.