Lemon Squeezy webhook reference
Lemon Squeezy subscription_payment_failed
The webhook that signals a failed Lemon Squeezy subscription renewal. The recovery rules are the same as Stripe. Dedupe by subscription, send 3 emails, link to the customer portal. But most churn tools ignore Lemon Squeezy entirely.
Quick answer
subscription_payment_failed fires on each failed renewal attempt. Dedupe by subscription ID, send a 3-email dunning sequence with the LS customer-portal update link, stop on subscription_payment_success. Combined recovery rate with Lemon Squeezy's built-in retries: 50-65%.
What the event means
subscription_payment_failedis Lemon Squeezy's notification that a recurring renewal charge failed. It does NOT mean the subscription is cancelled. Lemon Squeezy will keep retrying for several days before giving up. If all retries fail, you'll get a subscription_expired orsubscription_cancelled event.
Related Lemon Squeezy subscription events
| Event | Meaning |
|---|---|
| subscription_payment_failed | A renewal charge failed; LS will retry. |
| subscription_payment_success | A retry succeeded; stop your dunning sequence. |
| subscription_payment_recovered | A previously failed payment recovered later. Confirmation signal. |
| subscription_cancelled | Customer voluntarily cancelled. Handle separately with exit email. |
| subscription_expired | Subscription ended (cancelled, retries exhausted, or paused). Route to reactivation. |
FAQ
When does subscription_payment_failed fire?▼
How is subscription_payment_failed different from order_failed?▼
What fields are in the payload?▼
Will Lemon Squeezy retry the charge automatically?▼
Should I dedupe subscription_payment_failed events?▼
What's the right link to send in dunning emails?▼
How does ChurnNote handle subscription_payment_failed?▼
Lemon Squeezy as a first-class integration.
ChurnNote handles subscription_payment_failed dedupe, the 3-email sequence, and clean reactivation routing. Same flat $12/mo plan as Stripe.
Get started