Loading...
Purchases only provision after Stripe tells FastStaq the payment succeeded. That signal is the webhook. If the live webhook is missing or misconfigured, customers pay but nothing unlocks. Set this up carefully.
FastStaq accepts the Stripe webhook at:
https://api.yourdomain.com/webhooks/stripe
Two aliases also route to the same handler if you prefer them: /api/v1/subscription/webhook and /api/v1/stripe/webhook. Use the API domain, not the front-end domain.
Select the events FastStaq handles:
checkout.session.completed (provisions one-time/lifetime purchases)invoice.payment_succeededinvoice.payment_failedcustomer.subscription.updatedcustomer.subscription.deletedcharge.refundedcharge.dispute.createdprice.created, price.updated, price.deleted, product.updatedAfter creating the endpoint, Stripe shows a Signing secret that starts with whsec_.... Put it in your production env:
STRIPE_WEBHOOK_SECRET=whsec_...
Restart the API so it picks up the new secret. The signature check fails if this does not match the live endpoint.
200 response./dashboard/purchase shows access unlocked.For local testing, use the Stripe CLI to forward events to your machine:
stripe listen --forward-to localhost:4000/webhooks/stripe
The CLI prints a whsec_... secret to use in your local server/.env.
Open a support ticket with the failing event ID from Stripe.
Sign in to leave feedback on this article.