Skip to content

Troubleshoot Stripe Webhook Errors

You or your team notice one or more of the following:

  • A customer pays successfully through the eCommerce checkout or a Payment Link, but the Booking Status in Bloowatch stays Pending instead of moving to Confirmed.
  • The Stripe Dashboard shows the payment as Succeeded, yet Bloowatch’s Payments section has no record of it.
  • Stripe’s webhook logs show repeated delivery failures with HTTP 400 or 500 response codes.
  • Booking Confirmation Emails and Payment Confirmation Emails are not sent automatically after online payment.
  • The Bookings List shows bookings stuck in a pending state for hours or days after payment.

Webhook flow diagram

  1. Incorrect webhook URL — The webhook endpoint configured in Stripe does not point to your Bloowatch organization’s correct callback URL. This can happen after migrating accounts or changing domains.
  2. Wrong or missing webhook signing secret — Bloowatch uses the webhook signing secret to verify that incoming events genuinely come from Stripe. If the secret in Bloowatch’s Payment gateway settings doesn’t match the one in Stripe, every event is rejected.
  3. Webhook endpoint disabled or deleted in Stripe — Someone accidentally disabled or removed the Bloowatch endpoint in the Stripe Dashboard.
  4. Network or firewall issue — A temporary network outage or firewall rule is blocking Stripe’s requests from reaching Bloowatch’s servers.
  5. Stripe API version mismatch — Stripe occasionally changes the event payload format across API versions. If the webhook was created with a very old API version, the payload may not match what Bloowatch expects.

Before diving into the fixes below, verify these basics:

  • Open the Stripe Dashboard > Developers > Webhooks and confirm the Bloowatch endpoint is listed and its status is Enabled.
  • Check the endpoint’s Recent deliveries tab — are events being sent? What HTTP status codes are returned?
  • In Bloowatch, go to Settings > Payment Gateways > Stripe and verify the connection status shows as active.
  • Confirm that your Stripe account is in Live mode (not Test mode) if you’re working with real payments — and vice versa for testing.
  • Check Stripe’s status page for any ongoing incidents.

This is the most common issue. The endpoint URL must match exactly.

  1. Log in to the Stripe Dashboard.
  2. Navigate to Developers > Webhooks.
  3. Click on the Bloowatch webhook endpoint.
  4. Check the Endpoint URL. It should follow this pattern:
    https://api.bloowatch.com/webhooks/stripe/{your-organization-id}/
  5. If the URL is wrong, click Update endpoint and correct it.
  6. If no endpoint exists at all, you need to create one:
    • Click + Add endpoint.
    • Enter the correct Bloowatch webhook URL.
    • Under Events to send, select at minimum:
      • payment_intent.succeeded
      • payment_intent.payment_failed
      • charge.refunded
      • checkout.session.completed
    • Click Add endpoint.

Watch out: Bloowatch uses separate webhook endpoints for Live and Test modes in Stripe. Make sure you’re editing the right one.

If Stripe is sending events but Bloowatch returns 400 errors, the signing secret is likely mismatched.

  1. In the Stripe Dashboard > Developers > Webhooks, click on the Bloowatch endpoint.
  2. Click Reveal under Signing secret. Copy the value — it starts with whsec_.
  3. In Bloowatch, go to Settings > Payment Gateways > Stripe.
  4. Find the Webhook Signing Secret field and paste the value from Stripe.
  5. Click Save.
  6. Go back to Stripe and click Send test webhook to verify the connection.
What you see in StripeWhat it means
200 responseBloowatch accepted the event — you’re good.
400 responseSignature verification failed — double-check the signing secret.
500 responseBloowatch encountered a server error — contact Bloowatch Support.

If the endpoint exists but shows as Disabled:

  1. In Stripe, go to Developers > Webhooks.
  2. Click the disabled Bloowatch endpoint.
  3. Click the menu (top right) and select Enable endpoint.
  4. Send a test webhook to confirm delivery.

Stripe automatically disables endpoints that return errors consistently for several days. Fixing the underlying issue (URL or signing secret) and re-enabling is usually enough.

Fix 4: Check for network or firewall issues

Section titled “Fix 4: Check for network or firewall issues”

This is less common but possible, especially on custom setups:

  1. In Stripe’s webhook logs, look for error messages like Connection refused, Timed out, or SSL certificate error.
  2. If you see SSL errors, your domain’s certificate may have expired. Contact your IT team.
  3. If you see timeout errors, Bloowatch’s servers may have experienced temporary downtime. Check if the issue persists across multiple delivery attempts (Stripe retries automatically for up to 3 days).
  4. If Stripe shows successful delivery (200) but Bloowatch still doesn’t update, the issue is on Bloowatch’s side — contact Bloowatch Support.

While you troubleshoot the webhook, bookings may be stuck in Pending. To fix them:

  1. In Bloowatch, open the Bookings List and filter by status Pending.
  2. For each booking where you’ve confirmed payment in Stripe:
    • Open the booking.
    • Manually add the payment via Add Payment and select the correct method.
    • The Booking Status will update to Confirmed once the full amount is recorded.

Watch out: Only do this for bookings where you’ve verified the payment in the Stripe Dashboard. Recording a payment that doesn’t exist in Stripe will create accounting discrepancies.

Not every webhook failure is a configuration problem. Here’s how to tell when you need help:

Contact Bloowatch Support when:

  • The webhook URL and signing secret are correct, Stripe shows 200 responses, but bookings still don’t update.
  • You see 500 errors in Stripe’s logs that persist for more than 1 hour (this suggests a server-side issue on Bloowatch).
  • Bloowatch’s Payment gateway settings page doesn’t let you update the signing secret or shows an error.

Contact Stripe Support when:

  • The Stripe Dashboard itself shows errors or is unreachable.
  • Webhook events are not appearing in Stripe’s logs at all (the issue is on Stripe’s sending side).
  • You’re seeing unexpected charges, duplicate charges, or payment amounts that don’t match what the customer was quoted.

Before you contact support, gather: your Bloowatch organization name, the Stripe webhook endpoint ID (starts with we_), 2-3 example event IDs from the Stripe webhook logs (start with evt_), the HTTP status codes returned, and the approximate time the issue started.

Financiado por la Unión Europea — NextGenerationEU, Plan de Recuperación, Transformación y Resiliencia, Grupo SPRI, Gobierno Vasco