Stripe Webhook Testing & Debugging
Stripe sends rich payment and subscription events. HookNexus gives you a stable public URL, full request history, and real-time inspection—ideal while you build handlers or compare test vs live mode without touching production infrastructure.
Overview
- Why HookNexus: Capture every Stripe delivery in one place and inspect payloads and headers (including
Stripe-Signature) as you build your integration. - Your webhook URL:
https://api.hooknexus.com/h/{endpoint-id}(replace{endpoint-id}with the ID from the HookNexus dashboard).
Configure Stripe
-
Open Stripe Webhooks
In Stripe Dashboard go to Developers → Webhooks → Add endpoint (or edit an existing endpoint).
-
Set the endpoint URL
Paste your HookNexus URL:
https://api.hooknexus.com/h/YOUR_ENDPOINT_ID -
Choose events
Under Select events, pick the events your integration needs (see Common events below). You can start with a small set and add more later.
-
Save and copy the signing secret
After creating the endpoint, Stripe shows a Signing secret starting with
whsec_. Store it securely—you need it to verify webhooks in your own application (see Stripe’s docs).
Send test events
-
From the webhook endpoint page
Open your endpoint in Developers → Webhooks, select the endpoint, then use Send test webhook (wording may vary by Stripe UI version).
-
Pick an event type
Choose an event such as
payment_intent.succeededorcheckout.session.completed, then send. -
Confirm in HookNexus
The request should appear in the HookNexus dashboard for that endpoint within seconds.
Verifying signatures in your app
Stripe signs the raw body with HMAC-SHA256. The Stripe-Signature header looks like t=timestamp,v1=signature. Implement verification in your server using the signing secret and Stripe’s webhook signature guide—use the exact raw request body Stripe sent; parsing JSON and re-stringifying will break the signature.
Common events
| Event | When it fires |
|---|---|
checkout.session.completed | Checkout finishes successfully |
payment_intent.succeeded | Payment succeeds |
invoice.paid | Invoice is paid (subscriptions, invoicing) |
customer.subscription.updated | Subscription fields change (plan, status, trial, etc.) |
Local development
Use Stripe Dashboard → Webhooks → Send test event to hit your HookNexus URL, or Stripe CLI to forward events from Stripe to any URL you control. Inspect the full payload in HookNexus, then point your app at the same shapes when you wire up your own HTTP handler.
Troubleshooting
| Symptom | What to check |
|---|---|
| No requests in HookNexus | Confirm the URL has no typos; use test dashboard URL with test mode keys. |
| 4xx/5xx from Stripe’s delivery log | HookNexus accepts POSTs to /h/...; ensure the path matches your endpoint ID. |
| Signature always invalid | Use whsec_ from the same endpoint; verify raw body; check clock skew if implementing replay windows yourself. |
| Wrong event shape | Stripe API versions differ; check Developers → Webhooks → endpoint API version. |