Skip to content

MysticX Pricing & Membership Restructure - April 2026

Status: Planning
Date: 2026-04-08
Sources: Boss requirements doc, technical impact analysis, cross-platform operations guidance


Table of Contents


1. Executive Summary

This document consolidates the full pricing restructure plan for MysticX across web and mobile platforms.

What's changing

Web: Increase monthly credit grants (Gold 4,000 -> 6,000, Diamond 24,000 -> 30,000). Introduce yearly plans with drastically reduced prices and one-time lump-sum credit grants (Gold $89.99/100K credits, Diamond $299.99/1M credits). Default recommendation shifts to Gold Yearly.

Mobile (iOS & Android): Launch with Gold-only subscriptions (Weekly $7.99/1,500, Monthly $19.99/6,000, Yearly $89.99/100,000). All plans include a 3-day free trial. No credit packs. No Diamond tier. RevenueCat handles Apple IAP and Google Play Billing.

Core principle

"Billing follows the original channel. Entitlements are universal across all platforms. Identity is always premium."

Key risks

  1. Yearly one-time grant - Current system grants credits per invoice. Yearly plans need a single lump-sum.
  2. Credit reclamation on yearly cancelResolved: No reclamation on any cancel type. User keeps credits until period ends.
  3. iOS/Android platform separation - Mobile product catalog differs from web intentionally.
  4. Weekly subscription - New billing period that does not exist in the current system.
  5. Mobile IAP integration - Apple IAP + Google Play Billing via RevenueCat is a new engineering workstream, not a config tweak.
  6. Cross-platform entitlements - Diamond bought on web must be honored on mobile, even though mobile does not sell Diamond.

2. Problems to Solve

2.1 Price inversion on web

The $14.99 credit pack (4,000 credits) is a better deal than the $19.99 Gold membership (4,000 credits/month), creating a "price inversion" that discourages subscription adoption. Although the math works out in favor of the subscriber when daily rewards are included (6,400 total), the perception problem kills conversions - especially with price-savvy North American users.

2.2 Missing weekly and yearly plans for mobile

iOS users expect low-commitment entry points. A weekly plan with a free trial follows industry best practices for converting first-time users.

2.3 Low membership conversion

Purchase data analysis shows credit packs outselling memberships. The current pricing does not give users enough reason to commit to a subscription.

2.4 No yearly plan with strong discount

Industry research recommends at least 50% off for yearly plans. The current 30% yearly discount is insufficient.


3. New Pricing Model

3a. Web Subscriptions

PlanPriceCreditsDaily RewardUnit Price ($/SE)
Gold Monthly$19.99/mo6,000/mo80/day$0.0033
Diamond Monthly$69.99/mo30,000/mo100/day$0.0023
Gold Yearly$89.99/yr100,000 (one-time, instant)80/day$0.0009
Diamond Yearly$299.99/yr1,000,000 (one-time, instant)100/day$0.0003
  • Default recommended plan: Gold Yearly
  • Gold yearly displays a "62% off" badge (vs monthly: $89.99 / ($19.99 x 12) = 62% savings)
  • Diamond yearly displays a "64% off" badge (vs monthly: $299.99 / ($69.99 x 12) = 64% savings)

Pricing card badges:

PlanBadgePurpose
Gold Yearly"Most Popular" badgeSocial proof — nudges users past the annual commitment barrier toward highest LTV plan
Diamond YearlySubtle "Lowest price per credit" text near the price (not a badge)Rational/economic justification — at $0.0003/SE it is objectively the lowest cost per credit. Display as small muted text beneath or beside the price, e.g. "$299.99/yr · lowest price per credit"

The "Most Popular" badge provides social proof on the plan most users should pick. The "lowest price per credit" annotation gives power users a quiet, rational reason to upgrade to Diamond without competing visually with the badge.

Instant Credits - Key Selling Point

Yearly subscribers receive their entire credit balance the moment they pay - no drip, no waiting.

  • Gold Yearly: 100,000 Energy credited instantly on purchase
  • Diamond Yearly: 1,000,000 Energy credited instantly on purchase

This is the single strongest value proposition for yearly plans. Monthly subscribers receive 6,000 or 30,000 per cycle; yearly subscribers get a massive lump sum they can use however they want, immediately. The sheer size of the number (100K / 1M) creates a visceral impact that monthly drip cannot match.

UI treatment: Display the credit amount prominently on the pricing card - large font, highlighted color. Suggested copy:

  • Gold Yearly: "Get 100,000 Energy Instantly!"
  • Diamond Yearly: "Get 1,000,000 Energy Instantly!"

3b. Web Credit Packs (UNCHANGED)

PackCreditsPriceUnit Price ($/SE)
Taster250$1.99$0.0080
Mini600$3.99$0.0067
Starter2,000$9.99$0.0050
Best Value4,000$14.99$0.0037

Credit packs remain unchanged. All packs still receive tier bonuses (Gold +10%, Diamond +15%).

3c. Mobile Subscriptions (iOS & Android - NEW)

PlanPriceCreditsDaily RewardUnit Price ($/SE)
Gold Weekly$7.99/wk1,50080/day$0.0053
Gold Monthly$19.99/mo6,00080/day$0.0033
Gold Yearly$89.99/yr100,000 (one-time, instant)80/day$0.0009
  • All plans include a 3-day free trial
  • No credit packs on mobile
  • No Diamond tier on mobile
  • Default recommended plan: Gold Yearly
  • Gold Yearly displays the "Most Popular" badge (same as web — social proof for annual commitment)

Instant Credits on Mobile Too: Gold Yearly subscribers on mobile receive 100,000 Energy instantly after the 3-day trial converts to paid. This headline number should be the primary call-to-action on the yearly card: "Get 100,000 Energy Instantly!"

3d. Unit Price Staircase (All Products)

ProductPriceSEUnit Price ($/SE)
Taster pack$1.99250$0.00796
Mini pack$3.99600$0.00665
Gold Weekly (mobile only)$7.991,500$0.00533
Starter pack$9.992,000$0.00500
Best Value pack$14.994,000$0.00375
Gold Monthly$19.996,000$0.00333
Diamond Monthly$69.9930,000$0.00233
Gold Yearly$89.99100,000$0.00090
Diamond Yearly$299.991,000,000$0.00030

The staircase is clean and self-consistent: every higher-commitment product gives a lower unit price. The $7.99 weekly price ($0.0053/SE) falls neatly between the $9.99 pack ($0.0050) and the monthly subscription ($0.0033), naturally nudging users toward the subscription.

Note: The requirements doc says the lowest price is $0.0002/SE, but $299.99 / 1,000,000 = $0.00030. We should display the computed value via bestPerCredit.toFixed(4) which yields "0.0003".

Scope note: Unit prices use headline credit grants only. Daily rewards, tier bonuses, and other perks are not included.


4. Current vs New Comparison

4a. Web Subscriptions

PlanCurrent PriceNEW PriceCurrent CreditsNEW Credits
Gold Monthly$19.99/mo$19.99/mo4,000/mo6,000/mo
Diamond Monthly$69.99/mo$69.99/mo24,000/mo30,000/mo
Gold Yearly$167.92/yr$89.99/yr4,000/mo (recurring)100,000 one-time
Diamond Yearly$587.92/yr$299.99/yr24,000/mo (recurring)1,000,000 one-time

Key changes:

  • Monthly credit grants increased (Gold +50%, Diamond +25%)
  • Yearly prices drastically reduced (Gold: $167.92 -> $89.99 = 46% cheaper; Diamond: $587.92 -> $299.99 = 49% cheaper)
  • Yearly credits changed from monthly recurring to one-time lump-sum
  • Effective yearly cash discount: ~62% for Gold, ~64% for Diamond (computed vs monthly price x 12)

4b. Current Live System Baseline

AreaCurrent Live State
Web Gold Monthly$19.99, 4,000 SE/mo
Web Diamond Monthly$69.99, 24,000 SE/mo
Web Gold Yearly$167.92/yr ($13.99/mo), 4,000 SE/mo recurring
Web Diamond Yearly$587.92/yr ($48.99/mo), 24,000 SE/mo recurring
Credit Packs250/$1.99, 600/$3.99, 2,000/$9.99, 4,000/$14.99
Daily Card of the DayFree: 50, Gold: 80, Diamond: 100
Registration Bonus300 SE
Mobile CommerceNot implemented (planning docs only)

5. Platform Strategy

5.1 Web = "Full-Service Store"

Web retains all plan tiers (Free, Gold, Diamond), credit packs, and both monthly and yearly billing periods. It serves as the comprehensive storefront for all user types - from casual $1.99 pack buyers to $299.99 Diamond yearly subscribers. Web payments flow through Stripe (no Apple/Google tax), making it the highest-margin channel.

5.2 Mobile = "Premium Subscription Boutique"

Mobile (iOS & Android) strips down to three Gold subscription tiers only. No credit packs, no Diamond. This follows the industry trend of subscription-only mobile monetization (Netflix, ChatGPT, Hallow, Midjourney). Benefits:

  • Simplified decision-making: Three clean options instead of a cluttered pack/plan mix
  • Higher-quality user filtering: Subscribers have stronger engagement than one-time pack buyers
  • Clean analytics: MRR, churn rate, and trial conversion are easy to track
  • Lower IAP management overhead: No fragmented pack SKUs to maintain

5.3 Cross-Platform Revenue Split

Mobile subscriptions are subject to platform fees (Apple/Google take 30%, or 15% under the Small Business Program). Web subscriptions are subject only to Stripe's ~2.9% + $0.30.

PlaniOS Net (30% cut)Web Net (~3% fee)
Gold Weekly $7.99~$5.59N/A (mobile only)
Gold Monthly $19.99~$13.99~$19.11
Gold Yearly $89.99~$62.99~$87.08
Diamond Yearly $299.99N/A (web only)~$290.99

Strategic takeaway: Every "whale" user who pays through the web instead of the app contributes roughly $24 more per $89 yearly subscription. Steering heavy spenders toward the web is the highest-margin path - but this must happen organically (account login), never through in-app messaging (Apple compliance violation).


6. Cross-Platform Entitlement Rules

6.1 Core Principle

Subscriptions and credits are tied to the account, not the platform. A user's tier, credit balance, and all entitlements sync across web and mobile via the backend API.

6.2 Account Identity

Users must log in via Email, Google, or Apple ID. The backend database is the single source of truth for:

  • Subscription tier (FREE / GOLD / DIAMOND)
  • Credit balance
  • Subscription provider (stripe, apple, google)
  • Billing interval and renewal dates

6.3 Cross-Platform Scenarios

User StateWeb BehaviorMobile Behavior
Free (never paid)Shows all plans + credit packsShows Gold Weekly/Monthly/Yearly IAP
Gold via web/StripeShows active Gold, manage via StripeShows active Gold status (read-only). Upgrade/subscribe buttons show alert: "Manage your subscription at mysticx.ai"
Gold via iOS IAPShows active Gold status. Upgrade/downgrade/manage buttons show toast: "Subscription managed on iOS" with App Store instructionsiOS: Shows active Gold, manage via App Store. Android: Alert "Manage your subscription in the App Store on your iOS device"
Gold via Google PlayShows active Gold status. Upgrade/downgrade/manage buttons show toast: "Subscription managed on Android" with Google Play instructionsAndroid: Shows active Gold, manage via Google Play. iOS: Alert "Manage your subscription in Google Play on your Android device"
Diamond via web/StripeShows active Diamond, manage via StripeShows active Diamond status (read-only, honored in full). Upgrade buttons show alert: "Manage your subscription at mysticx.ai"
Gold via mobile, visits webWeb honors Gold tier. Pricing page buttons show toast redirecting to App Store / Google PlayN/A

Implementation status (2026-04-10): All cross-platform guards are implemented. The subscriptionProvider field ('stripe' | 'apple' | 'google' | null) on the User model is the single source of truth used by all platforms to determine where the subscription is managed.

6.4 Diamond on Mobile

Although mobile does not sell Diamond, the app must:

  • Display the correct "Diamond Member" badge/label with premium visual treatment (purple/black theme)
  • Apply Diamond-level daily credits (100/day), tier bonuses, and feature gates
  • Show a read-only status like "Diamond Member - Active" with no upgrade prompt
  • Never show Gold IAP purchase options to an active Diamond user
  • Never downgrade Diamond to Gold in the UI

This "exclusive badge" effect is intentionally beneficial: other iOS users see only Gold available, creating curiosity and driving them to the website organically.

6.5 Credit Pool Sync

Credits are stored server-side and are the same balance regardless of platform. If a user has 1,000,000 credits from a Diamond Yearly web purchase, the mobile app shows 1,000,000. Spending 250 credits on mobile deducts from the same pool.

Concurrency note: With mobile added, a user could initiate a reading on web and mobile simultaneously, creating a race condition on credit deduction. The current system already uses Prisma transactions with { credits: { decrement: amount } } and a credits >= 0 check for atomicity. This pattern remains correct with mobile — no additional locking is needed as long as all credit mutations go through the same transactional path. Verify during Phase 5 that addCredits() / deductCredits() are the only credit mutation functions, and that no direct user.update({ credits }) calls exist.

6.6 Subscription Management Isolation

All platforms detect the subscription's origin via subscriptionProvider and guard management actions accordingly:

Web app (MembershipPageContent.tsx — pricing page):

  • If subscriptionProvider === 'apple': All upgrade/downgrade/manage buttons show an info toast: "Subscription managed on iOS — Please manage your subscription in the App Store on your iOS device (Settings > Apple ID > Subscriptions)."
  • If subscriptionProvider === 'google': Same pattern with Google Play instructions.
  • If subscriptionProvider === 'stripe' or null: Normal Stripe checkout / billing portal flow.
  • Guard covers: handleUpgrade(), handleManageBilling(), handleResumeSubscription().

Web app (MembershipContent.tsx/me/membership status page):

  • Mobile subscribers see "Active — via Apple App Store" or "Active — via Google Play" instead of Stripe subscription details.
  • An info box explains how to manage via the respective app store.
  • The "Manage Plan" link still navigates to the pricing page, where the guard fires.

Mobile app (subscription.tsx — subscription screen):

  • If subscriptionProvider === 'stripe': Alert "Subscription managed on web — Please manage your subscription at mysticx.ai."
  • If on iOS and subscriptionProvider === 'google': Alert "Subscription managed on Android — Manage in Google Play."
  • If on Android and subscriptionProvider === 'apple': Alert "Subscription managed on iOS — Manage in the App Store."
  • All guards fire before any IAP purchase flow.

Data flow:

  • subscriptionProvider is stored on the User model in Prisma.
  • Set by RevenueCat webhook ('apple' / 'google') and Stripe handlers ('stripe').
  • Cleared to null on subscription cancellation/expiration/deletion.
  • Exposed via GET /api/v1/credits (web credit store) and GET /api/v1/membership (mobile).
  • Web credit store (useCreditStore) holds subscriptionProvider for client-side guards.

Implementation status (2026-04-10): Fully implemented across web and mobile. All 12 locales supported in guard messages.


7. Apple & Google Store Compliance

7.1 Apple App Store Guidelines (Critical)

Apple's guideline 3.1.1 requires all digital goods and subscriptions sold within iOS apps to use Apple In-App Purchase. MysticX credits are digital goods.

Must NOT do in the iOS app:

  • Include any link, button, or text directing users to the website to subscribe or buy credits
  • Tell users that a subscription is cheaper or available elsewhere
  • Write "Diamond Plan ($299) is only available on our website"
  • Show a "Manage on website" button that links to a page with pricing/purchase UI
  • Do any price comparison between web and app

Must do:

  • Use Apple IAP for all in-app subscription purchases
  • Honor web-purchased entitlements silently (just show the tier badge, no purchase prompt)
  • Show read-only informational labels for externally managed subscriptions: "Your Diamond subscription is active (managed outside the App Store)" - with no tappable link

The "Reader App" exemption (3.1.3a) does NOT apply to MysticX. That exemption is for apps whose primary function is consuming previously purchased content (e.g., Netflix, Kindle). MysticX is an interactive AI service that generates value on demand.

What "Manage on the web" can and cannot mean:

  • Acceptable: Telling an existing paid user where to cancel or view billing history (account management)
  • Not acceptable: Showing this to a Free user as a hint to subscribe on web (purchase steering)

7.2 Google Play Policies

Google Play Billing policy enforces the same requirement for Android apps. Google's external-link policies are slightly less restrictive than Apple's, but the safest approach for the first release is to use the same read-only label pattern as iOS. An Android-specific "Manage on website" link can be added later.

7.3 Preventing Double-Charge

If a user already has an active Gold subscription via Stripe (web), the mobile app must not show Gold IAP purchase buttons. The backend membership API is the authoritative source. The mobile app should:

  1. Query the membership API on launch/login
  2. If the user has an active subscription from any provider, hide purchase UI and show status
  3. Only show IAP purchase options to Free users

8. Industry References

8.1 How Top Apps Handle Cross-Platform

AppStrategyMobile Behavior
Netflix / SpotifyFull-platform syncNo in-app purchase. Login and access content based on web subscription tier (e.g., 4K).
YouTubePrice discrimination + tier synciOS subscription is $3-5 more expensive than web. Web-purchased Premium shows as "Premium" in-app with full benefits.
Canva / NotionEnterprise/Pro is web-exclusiveMobile sells personal plans only. Enterprise users log in to the app and get full access to premium features.
MidjourneyCredit balance syncAll subscriptions purchased on web. Mobile (Discord) only consumes credits and shows remaining balance.
ChatGPT (OpenAI)Full synciOS sells Plus membership at the same price. Web and app purchases are fully interchangeable.
HallowMinimal subscriptionPure subscription (yearly/monthly), no a la carte purchases. Keeps brand premium and clean.

8.2 Relevance to MysticX

MysticX's approach most closely mirrors Canva/Midjourney:

  • Web is the "full store" with all tiers and credit packs
  • Mobile is the "premium experience" with subscription-only access
  • Credits (Energy) function like a universal virtual currency synced across platforms
  • As a spiritual/mystical product, subscription-only mobile avoids the "cheap game" feeling of multiple small IAP packs, following the Hallow model

8.3 Why Subscription-Only on Mobile Works

  • 3-day free trial eliminates friction: "Free trial" feels zero-cost vs. spending $1.99 real money on a credit pack
  • Builds recurring revenue: Stable MRR instead of unpredictable one-off purchases
  • Filters for engaged users: Subscribers are core seekers; $1.99 pack buyers often churn immediately
  • Clean App Store analytics: Subscription metrics (MRR, churn, trial conversion) are directly visible in App Store Connect
  • Copy framing matters: Use "Join the Gold Circle" or "Unlock Universal Guidance" instead of "Buy Subscription"

Sections 9-14 (Technical Impact Analysis, File-by-File Change Plan, Architecture Challenges, Migration, Testing, Implementation Phases) and Appendix B have been moved to → Technical Implementation (in Developer Docs)


15. Open Questions

Critical (Must resolve before implementation)

  1. Yearly credit reclamationResolved: No reclamation on any cancel type. Cancel at period end: user paid for the year, credits stay. Refund/chargeback: credits still not reclaimed — simplest approach, avoids negative-balance edge cases. No SUBSCRIPTION_RECLAIM transaction type needed.

  2. Free trial creditsResolved: No credits during trial. Credits are granted only after the trial converts to a paid subscription (first payment). This prevents trial-churn credit farming.

  3. Yearly upgrade differentialResolved: Upgrade differential rules confirmed:

    • Same interval, tier upgrade (Gold Monthly -> Diamond Monthly): Grant 24,000 SE differential (30,000 - 6,000).
    • Same tier, interval change (Gold Monthly -> Gold Yearly): Cancel + new subscription. Fresh 100,000 SE lump sum, no differential.
    • Cross-tier + cross-interval (Gold Monthly -> Diamond Yearly): Clean slate. Full 1,000,000 SE, no differential.
    • Gold Yearly -> Diamond Yearly (mid-year): Grant 900,000 SE differential (1,000,000 - 100,000).
    • Rationale: Interval changes are "cancel + new" because blending partial-period credits across intervals creates accounting complexity. Stripe handles the money proration; we handle the credit side cleanly.
  4. Existing yearly subscribersResolved: (B) Auto-migrate existing yearly subscribers to new prices at next renewal via Stripe subscription update. Old price IDs ($167.92/$587.92) will be deprecated. See technical doc Section 12.2 for implementation details.

  5. "75% off" for Diamond YearlyResolved: Show real computed discounts (Gold 62%, Diamond 64%) instead of inflated marketing copy.

  6. Mobile Diamond recognitionResolved: Yes, mobile honors Diamond purchased on web. Full Diamond benefits (100/day, +15% bonus, Diamond badge) are applied on mobile even though mobile does not sell Diamond.

Nice to Have (Can decide later)

  1. Push notification for daily credits - Mobile team scope. Text: "Your daily 80 energy is ready to align with the stars."

  2. "Get 100,000 Energy Instantly!" copy - Show on pricing card, checkout page, or both?

  3. Credit arrival animation - "Star explosion" effect on yearly purchase. Web and/or mobile?

  4. "Founder's Pass" badge - Apply to Gold Yearly on mobile paywall only, or also web?

  5. Membership upgrade notification - Email, in-app, or both?

  6. Affiliate/referral impactResolved: (c) Only credit affiliates for web conversions (current behavior, no code change). Mobile IAP purchases through RevenueCat will not trigger Tapfiliate. This gap is accepted for now; will revisit if mobile becomes a significant acquisition channel.


Appendix A: Unchanged Areas

These areas remain unchanged in this restructure:

  • Credit pack prices and amounts (Taster/Mini/Starter/Best Value)
  • Daily credit amounts (Free: 50, Gold: 80, Diamond: 100) — tier-based only, same regardless of billing interval
  • Registration bonus (300 SE)
  • Tier bonuses on credit packs (Gold +10%, Diamond +15%)
  • Credit costs (readings: 200, follow-ups: 50/100/200/400, etc.)
  • Referral rewards
  • Card skin / reader discounts (Gold 40%, Diamond 60%)