diff --git a/core/server/services/members/api.js b/core/server/services/members/api.js
index <HASH>..<HASH> 100644
--- a/core/server/services/members/api.js
+++ b/core/server/services/members/api.js
@@ -74,11 +74,14 @@ function getStripePaymentConfig() {
         return null;
     }
 
+    const webhookHandlerUrl = new URL('/members/webhooks/stripe', siteUrl);
+
     return {
         publicKey: stripePaymentProcessor.config.public_token,
         secretKey: stripePaymentProcessor.config.secret_token,
         checkoutSuccessUrl: siteUrl,
         checkoutCancelUrl: siteUrl,
+        webhookHandlerUrl: webhookHandlerUrl.href,
         product: stripePaymentProcessor.config.product,
         plans: stripePaymentProcessor.config.plans,
         appInfo: {
diff --git a/core/server/web/site/app.js b/core/server/web/site/app.js
index <HASH>..<HASH> 100644
--- a/core/server/web/site/app.js
+++ b/core/server/web/site/app.js
@@ -155,6 +155,7 @@ module.exports = function setupSiteApp(options = {}) {
             res.end(err.message);
         }
     });
+    siteApp.post('/members/webhooks/stripe', membersService.api.middleware.handleStripeWebhook);
     siteApp.use(async function (req, res, next) {
         if (!labsService.isSet('members')) {
             req.member = null;
Wired up the members webhook handler endpoint

no-issue