WebhookService.constructEvent now reads from config.stripe.webhookSecret instead of process.env.STRIPE_WEBHOOK_SECRET, matching BillingService.handleWebhook. Co-Authored-By: Paperclip <noreply@paperclip.ing>