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

jjmu15's avatar

Stripe & Laravel Cashier - Signature not found

I am trying to set up the webhooks in Stripe to work with Laravel Cashier but get the following error when the request is received by my app

'No signatures found matching the expected signature for payload'

I've checked the docs and I have already added the Stripe webhook secret key to my .env file under the STRIPE_WEBHOOK_SECRET variable and I've added 'stripe/*' to the csrf exceptions array in my config.

I've been searching google and reading the docs for more things I need to do but can't seem to find anything else to work with.

Any ideas?

Thanks in advance.

0 likes
9 replies
SleeplessDev's avatar

I'm also having this problem now. Did you ever find a solution?

SleeplessDev's avatar

It seems to have randomly started working again, without any obvious intervention from me. Weird.

1 like
jjmu15's avatar

Weird! I'm glad it is working again for you.

I did find a solution for this but it was a couple of months ago now and I forgot to post my solution at the time and now I cannot remember it.

Apologies for not being a good community member and sharing my solution for anyone to comes across this!

77trombones's avatar

For anyone encountering this error, in my case it was because I was using the incorrect STRIPE_WEBHOOK_SECRET signature in my .env. To verify, go to stripe dashboard > developers > webhooks, select the endpoint you're testing and reveal/copy the "Signing secret" to your .env

Good luck!

7 likes
theodoromatheus1830@gmail.com's avatar

Has anyone figured out any solution for the case? I'm having the same problem and I don't know what else to do ....

Kaonas's avatar

For anyone scratching their heads with this one just also be aware that if you manually set up the webhooks in Stripe like @77trombones mentions or run php artisan cashier:webhook the signing secret is different for each webhook config setup.

I was wondering why the secret I copy-pasted from local dev to stage was not working and finally figured this out!

2 likes
dairej's avatar

I had this issue.

My solution was to clear the application cache:

sail artisan config:clear && sail artisan config:cache
dairej's avatar

@martinbean Thank you for the advice. I have a job which checks for a hash of the frontend (separete ReactJS project) and writes to a frontend config in Laravel. The job clears and re-caches the configs, which I'll want in production. I've now disabled the caching in the development environment. Thanks for the prompt.

Please or to participate in this conversation.