May 5th, 2026

Cashier Stripe v15.8.0: Laravel 13 Support, Webhook Fix, and API Refinements

Cashier Stripe v15.8.0: Laravel 13 Support, Webhook Fix, and API Refinements
Sponsored by
Table of Contents

@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.

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
Marian Pop

Written by

Marian Pop

Writing and maintaining @LaravelMagazine. Host of "The Laravel Magazine Podcast". Pronouns: vi/vim.

Comments

Stay Updated

Subscribe to our newsletter

Get latest news, tutorials, community articles and podcast episodes delivered to your inbox.

Weekly articles
We send a new issue of the newsletter every week on Friday.
No spam
We'll never share your email address and you can opt out at any time.