Payments & Monetization

Stripe-powered subscription tiers for trainers, a credit-based system for premium features like post boosting, a program marketplace with pricing and enrollment, and transaction tracking with basic reporting.

Overview

MTC monetizes through trainer subscriptions and marketplace commissions. Trainers choose from four subscription tiers (Connect, Coach, Publish, Network) that unlock increasing levels of functionality — from basic profile and 3 clients on the free tier to 250 clients, verified badges, and API access on the Network tier. Pricing is synced from Stripe products via the stripe-sync-engine, with both monthly and yearly billing (20% annual discount).

The program marketplace allows trainers on eligible plans to publish workout and nutrition programs with custom pricing, discounts, and category tags. Clients can browse, purchase, and enroll in programs. Each tier carries a different marketplace commission rate: 15% for Connect, 10% for Coach, 7% for Publish, and 3% for Network. This incentivizes trainers to upgrade their subscription as their business grows.

A credit-based system enables trainers to purchase post-boosting credits that elevate their content in the social feed. Credits are purchased via Stripe and consumed when a boost is activated, with backend-defined boost duration and visibility logic. Transaction tracking provides trainers with basic reporting on sales, enrollments, and revenue.

Subscription Tiers

Connect

$0 /month

Free forever

Basic profile page
3 active clients
Program builder
Direct messaging
Community access
15% marketplace fee

Coach

$19 /month

$190/year (save 20%)

Everything in Connect
15 active clients
Nutrition plan builder
Client progress tracking
Priority support
10% marketplace fee
Most Popular

Publish

$59 /month

$590/year (save 20%)

Everything in Coach
25 active clients
Marketplace publishing
AI coach assistant
Custom branding
Analytics dashboard
7% marketplace fee

Network

$199 /month

$1,990/year (save 20%)

Everything in Publish
250 active clients
Post boosting credits
Verified badge
Team management
API access
Dedicated account manager
3% marketplace fee

User Stories

Trainer

As a trainer, I want to choose a subscription tier so that I can access features appropriate for my business size.

As a trainer, I want to publish programs to the marketplace so that I can earn revenue from a broader audience.

As a trainer, I want to purchase post-boosting credits so that my content reaches more potential clients.

As a trainer, I want to view my sales and revenue reports so that I can track my business performance.

As a trainer, I want to toggle between monthly and yearly billing so that I can save money with an annual commitment.

As a trainer, I want to set custom pricing for my programs so that I can control my revenue per program sale.

Client

As a client, I want to purchase programs from the marketplace so that I can follow structured training plans.

As a client, I want to see program pricing and reviews before purchasing so that I can make informed buying decisions.

Data Model

Table Column Type Description
users stripe_customer_id text Stripe customer ID for billing
subscription_tier enum connect | coach | publish | network
subscription_status enum active | canceled | past_due | trialing
programs price decimal Program price in USD
discount_price decimal Optional promotional price
status enum draft | published | archived
enrollment_count integer Number of active enrollments
program_purchases user_id uuid (FK) Purchasing client
program_id uuid (FK) Purchased program
amount_paid decimal Amount charged to client
stripe_payment_id text Stripe payment intent ID

Screens & Routes

/_marketing/pricing Public pricing page — tier cards with monthly/yearly toggle
/_authed/_onboarded/_client/explore Program marketplace — browse, search, filter programs
/_authed/_onboarded/programs/$programId Program detail page — pricing, reviews, enrollment CTA
/_authed/_onboarded/_trainer/analytics Trainer analytics — sales, revenue, enrollment tracking
/_authed/_onboarded/settings Subscription management — plan changes, billing history

Acceptance Criteria

  • Pricing page displays all 4 tiers with features, client limits, and marketplace fees
  • Monthly/yearly billing toggle with 20% annual discount calculation
  • Prices synced from Stripe products via stripe-sync-engine
  • Publish tier is highlighted as "Most Popular" in pricing UI
  • Programs can have pricing, discounts, and category metadata
  • Stripe Checkout session creation for subscription signup is in progress
  • Program purchase checkout flow is not yet complete
  • Credit-based post boosting system is not yet implemented
  • Revenue reporting and analytics dashboard is not yet built

API Surface

Server Functions

FN getPricingProducts src/api/stripe/functions.ts
TODO createCheckoutSession Create Stripe Checkout for subscription
TODO createProgramPurchase Process marketplace program purchase
TODO purchaseBoostCredits Buy post-boosting credits via Stripe
TODO getRevenueReport Trainer sales and revenue analytics

React Query Hooks

HOOK pricingQueryOptions src/api/stripe/hooks.ts
TODO useCreateCheckout() src/api/stripe/hooks.ts
TODO usePurchaseProgram() src/api/programs/hooks.ts

Current Status

Built

Pricing Page

Full pricing page with 4 tiers, monthly/yearly toggle, Stripe product sync, and animated tier cards.

Built

Stripe Sync Engine

Product and price data synced from Stripe via webhooks into Supabase.

Built

Program Pricing

Programs support price, discount_price, and enrollment tracking in the data model.

In Progress

Checkout Flow

Stripe Checkout session creation for subscription signup and program purchases.

Not Started

Post Boosting

Credit purchase, boost activation, duration logic, and feed prioritization.

Not Started

Revenue Reports

Trainer analytics for sales, revenue, enrollment metrics, and commission tracking.