PayHook

Blog

Articles on payment webhooks: how Stripe, Paddle, Lemon Squeezy, Polar and Dodo Payments sign events, what their error messages mean, and how to fix them.

  1. Dodo Payments webhook not working: signatures and retries

    Why a Dodo Payments webhook fails verification or never reaches your app: the signing key, test and live secrets, dodo wh listen and trigger, retries, events.

  2. Lemon Squeezy webhook not working: 200, retries, signature

    Why a Lemon Squeezy webhook keeps retrying or fails verification: only a 200 counts, four attempts in about 155 seconds, the X-Signature check and duplicates.

  3. [Paddle] Webhook signature verification failed: three causes

    Paddle's Node SDK throws one error for three causes: a request older than 5 seconds, a body parsed before the check, or a wrong or missing secret key.

  4. PayHook vs Hookdeck for payment webhooks: an honest comparison

    Hookdeck moves, retries and replays webhooks from any service; PayHook explains payment webhooks: what each does today, and what PayHook cannot do yet.

  5. Payment succeeded, subscription not active: which event to trust

    Which webhook event grants access, keeps it and takes it away in Stripe, Paddle, Lemon Squeezy, Polar and Dodo, and the traps that lock a paying user out.

  6. Payment webhooks compared: Stripe, Paddle, Lemon Squeezy, Polar, Dodo

    How Stripe, Paddle, Lemon Squeezy, Polar and Dodo deliver webhooks: the status that counts, the timeout, retries, the id to deduplicate, the signature window.

  7. Polar subscription webhooks: which event grants access

    Polar subscription events in order, from checkout to revocation: which one grants access, why subscription.canceled is not the end, and customer.state_changed.

  8. Stripe webhook signature verification failed: every error message

    What each Stripe webhook signature error means and how to fix it in Node, Python, PHP, Ruby, Go, Java and .NET: raw body, whsec_ secret, header, clock.

  9. Stripe webhook not working in Lovable, Bolt or Supabase Edge Functions

    The payment went through and the app stays locked: why a Stripe webhook fails in a Lovable, Bolt or Supabase app, from the 401 JWT check to the secret.

  10. Stripe webhook works in test mode but not in live: the causes

    A Stripe webhook that passes every test and fails in live mode: its own endpoint and secret, live keys and prices, HTTPS, real 3D Secure, a newer API version.

  11. Polar webhook signature: the September 2026 key change and legacy secrets

    Why @polar-sh/sdk can answer "No matching signature found" for a Polar webhook secret issued after 8 September 2026, which key your secret uses, and how to verify both.

Back to payhook.co