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

tenmaurakashi's avatar

How does Laravel (v6) cashier(v10) handle failed subscription

In Laravel Cashier doc, there's a section "Failed Subscriptions" under "Webhooks" which clearly states that cashier will handle any failed attempt at stripe end.

However, I'm failing to see anything in the code (WebhookController) that deals with the charge object. Plus, I'm testing charge.failed or invoice.payment_failed event from stripe dashboard and it doesn't return Webhook Handled like it does with customer.updated.

I'm little confused. Is it something I need to handle myself?

Also, should I be using charge.failed or invoice.payment_failed event for subscription payment failure on next billing time?

Thanks for your help.

0 likes
1 reply
Sti3bas's avatar
Sti3bas
Best Answer
Level 53

It's handled through customer.subscription.updated webhook.

If the customer does not pay the invoice before the due date, or sends an amount that is not automatically reconciled, the subscription becomes past_due, a customer.subscription.updated event is sent, and the status field remains open.

https://github.com/laravel/cashier/blob/10.0/src/Http/Controllers/WebhookController.php#L63

https://stripe.com/docs/billing/lifecycle

1 like

Please or to participate in this conversation.