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
Free forever
Coach
$190/year (save 20%)
Publish
$590/year (save 20%)
Network
$1,990/year (save 20%)
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
getPricingProducts
src/api/stripe/functions.ts
createCheckoutSession
Create Stripe Checkout for subscription
createProgramPurchase
Process marketplace program purchase
purchaseBoostCredits
Buy post-boosting credits via Stripe
getRevenueReport
Trainer sales and revenue analytics
React Query Hooks
pricingQueryOptions
src/api/stripe/hooks.ts
useCreateCheckout()
src/api/stripe/hooks.ts
usePurchaseProgram()
src/api/programs/hooks.ts
Current Status
Pricing Page
Full pricing page with 4 tiers, monthly/yearly toggle, Stripe product sync, and animated tier cards.
Stripe Sync Engine
Product and price data synced from Stripe via webhooks into Supabase.
Program Pricing
Programs support price, discount_price, and enrollment tracking in the data model.
Checkout Flow
Stripe Checkout session creation for subscription signup and program purchases.
Post Boosting
Credit purchase, boost activation, duration logic, and feed prioritization.
Revenue Reports
Trainer analytics for sales, revenue, enrollment metrics, and commission tracking.