Skip to main content

Knowledge > Runbooks > Business Ops > Stripe Revenue and Subscription Health Review

Stripe Revenue and Subscription Health Review

Review active subscriptions, MRR, and subscription health to understand the current revenue state and identify any at-risk accounts.

PRICING CHANGE DECIDED 2026-10-02 (John): one number for every product, same numeral in CAD and USD, whole numbers. Decided: SermonWise $19/mo ($190/yr) · IllustrateTheWord Premium $9/mo ($90/yr) · ChurchWise Office $9/mo ($90/yr) · AI Front Desk $195/mo + $995 setup (one product for every vertical) · ChurchWiseAI Website $29, Phone $79, Complete $99 (unchanged) · PewSearch Premium withdrawn from sale on its own (stays included with every ChurchWiseAI plan). Status: new Stripe prices created 2026-10-02; the sites still charge the old numbers ($4.95 PewSearch Premium: the $9.95 in the table below is stale, the live Stripe price is US$4.95; $9.95 ITW, $19.95 SermonWise) until the switch ships. The old church Starter/Pro/Suite Chat/Voice/Bundle rows below are separately grandfathered — existing customers keep those prices regardless. Until the switch ships, treat the table below as what is actually being charged; never report a number nobody is charged. Source: knowledge/decisions/2026-10-02-one-number-pricing.md · task ai-company-os/tasks/active/TASK-20261002-one-number-reprice.md.

Prerequisites​

  • Stripe CLI logged in
  • STRIPE_LIVE_SECRET_KEY from knowledge/.env
  • Access to Supabase SQL editor

Steps​

1. List Active Subscriptions by Product​

# Test mode (for development verification)
stripe subscriptions list --status active --limit 100

# Live mode (for actual revenue)
stripe subscriptions list --status active --limit 100 --api-key $STRIPE_LIVE_SECRET_KEY

Group by product/price to understand the distribution:

PlanMonthly PriceAnnual Price
Starter Chat$14.95$149.50/yr
Pro Chat$34.95$349.50/yr
Suite Chat$59.95$599.50/yr
Voice Starter$39.95—
Voice Pro$69.95—
Starter Bundle$49.95—
Pro Bundle$79.95—
Suite Bundle$99.95—
PewSearch Premium$9.95—
ITW Premium$9.95$99.50/yr
SermonWise Pro$19.95$199.50/yr

See C:\dev\PRICING.md for current Stripe price IDs.

2. Calculate MRR​

For each active subscription:

  • Monthly plan: add the monthly price directly
  • Annual plan: divide the annual price by 12

Sum all values to get MRR.

From the database:

SELECT
plan,
tier,
count(*) as customers,
-- MRR calculation varies by whether plan/price is stored; adjust to actual schema
count(*) * CASE
WHEN plan = 'starter' AND tier = 'chat' THEN 14.95
WHEN plan = 'pro' AND tier = 'chat' THEN 34.95
WHEN plan = 'suite' AND tier = 'chat' THEN 59.95
WHEN plan = 'starter' AND tier = 'voice' THEN 39.95
WHEN plan = 'pro' AND tier = 'voice' THEN 69.95
WHEN plan = 'starter' AND tier = 'both' THEN 49.95
WHEN plan = 'pro' AND tier = 'both' THEN 79.95
WHEN plan = 'suite' AND tier = 'both' THEN 99.95
WHEN plan = 'pro_website' THEN 9.95
ELSE 0
END as segment_mrr
FROM premium_churches
WHERE stripe_subscription_id IS NOT NULL
GROUP BY plan, tier
ORDER BY segment_mrr DESC;

3. Check Trial-to-Paid Conversion​

Identify subscriptions currently in trial:

stripe subscriptions list --status trialing --limit 100 --api-key $STRIPE_LIVE_SECRET_KEY

Identify subscriptions that started trialing in the last 30 days and converted (status moved to active):

  • Look at Stripe subscription event history for trial conversions
  • Target: >50% trial-to-paid conversion rate

4. Identify At-Risk Subscriptions​

Subscriptions with payment issues:

stripe subscriptions list --status past_due --limit 20 --api-key $STRIPE_LIVE_SECRET_KEY

past_due means: at least one payment failed, Stripe is retrying. If not resolved, subscription will be cancelled.

Action for each past_due:

  1. Check if the church has been notified (email from Stripe)
  2. If not resolved within 7 days: downgrade to free tier in premium_churches

5. Check for Subscription Anomalies​

Look for subscriptions where the database and Stripe are out of sync:

-- premium_churches with subscription IDs — verify each is still active in Stripe
SELECT church_id, plan, tier, stripe_subscription_id, updated_at
FROM premium_churches
WHERE stripe_subscription_id IS NOT NULL
ORDER BY updated_at DESC;

Cross-check each stripe_subscription_id is in the Stripe active list from Step 1.

6. Review Upcoming Renewals (Next 7 Days)​

Subscriptions renewing soon — ensure payment methods are valid:

# Check subscriptions with current_period_end in the next 7 days
stripe subscriptions list --status active --limit 100 --api-key $STRIPE_LIVE_SECRET_KEY
# Filter by current_period_end < now + 7 days

7. Note Growth Metrics​

Track these week-over-week:

  • Total active subscriptions
  • MRR
  • Trial subscriptions in the pipeline
  • Conversion rate

Verification​

  • Active subscription count in Stripe matches premium_churches table (within 1–2 for processing lag)
  • MRR calculation is consistent with expected plan distribution
  • No past_due subscriptions older than 7 days without a resolution plan

See Also​