Credit System
Overview
MysticX uses a credit-based economy. Users earn credits through daily engagement (Card of the Day) and subscription grants, and spend them on readings, follow-ups, and premium features.
Earning Credits
Daily Credits (Card of the Day)
Every registered user earns credits daily by completing the Card of the Day:
| Tier | Daily Credits |
|---|---|
| Free | 50 |
| Gold | 80 |
| Diamond | 100 |
Credits are awarded upon completing the daily card draw, not automatically deposited.
Monthly Subscription Grants
| Tier | Monthly Grant |
|---|---|
| Free | 0 |
| Gold | 6,000 |
| Diamond | 30,000 |
Grants are deposited at the start of each billing period.
Yearly Subscription Grants
| Tier | Yearly Grant | Price |
|---|---|---|
| Gold | 100,000 (one-time) | $89.99/yr |
| Diamond | 1,000,000 (one-time) | $299.99/yr |
Yearly grants are deposited as a lump sum when the subscription is created or renewed.
Weekly Subscription Grants (Mobile Only)
| Tier | Weekly Grant | Price |
|---|---|---|
| Gold | 1,500 | $7.99/wk |
Registration Bonus
All new users receive 300 SE upon registration as a one-time welcome gift.
One-Time Credit Packs
| Pack | Credits | Price |
|---|---|---|
| Taster | 250 | $1.99 |
| Mini | 600 | $3.99 |
| Starter | 2,000 | $9.99 |
| Best Value | 4,000 | $14.99 |
Gold subscribers get +10% bonus, Diamond subscribers get +15% bonus on all packs.
Referral Rewards
- Inviter: 300 credits per qualified referral
- Invitee: 200 credits on first reading
- Milestones: 300 (3 refs), 1,500 (10 refs), 5,000 (25 refs)
Spending Credits
| Action | Cost |
|---|---|
| Tarot reading | 200 |
| Follow-up message (1st–20th) | 50 |
| Follow-up message (21st–50th) | 100 |
| Follow-up message (51st–100th) | 200 |
| Follow-up message (101st+) | 400 |
| Spread suggestion | 0 (free) |
| Weekly Guidance (manual) | 1,000 |
| Soul Journey (generate/refresh) | 2,000 |
| Card skin purchase | Varies by skin |
| Reader unlock | Varies by reader |
User Profiles (Estimated Monthly Usage)
| Profile | Readings/mo | Follow-ups | Credits Needed |
|---|---|---|---|
| Casual | 5 | 0.5/reading | ~1,125 |
| Regular | 15 | 1.5/reading | ~4,125 |
| Dedicated | 25 | 2.5/reading | ~8,125 |
| Power | 40 | 3.5/reading | ~15,000 |
Subscription Comparison
| Free | Gold ($19.99/mo) | Diamond ($69.99/mo) | |
|---|---|---|---|
| Max monthly credits | ~1,500 | ~8,400 | ~33,000 |
| Equivalent readings | ~7 | ~42 | ~165 |
| AI Memory | Yes | Yes | Yes |
| Weekly Guidance | No | Manual (1,000 cr) | Auto-generated |
| Soul Journey | No | Yes | Yes |
| Credit pack bonus | — | +10% | +15% |
| Yearly pricing | — | $7.50/mo (62% off) | $25.00/mo (64% off) |
| Yearly grant | — | 100,000 SE one-time | 1,000,000 SE one-time |
Technical Implementation
Atomic Credit Deduction
Credits are deducted atomically using Prisma's updateMany with a WHERE clause that checks sufficient balance, preventing race conditions:
updateMany({
where: { id: userId, credits: { gte: cost } },
data: { credits: { decrement: cost } }
})If the update affects 0 rows, the user has insufficient credits.
Pre-Creation Coordination
For readings, credits are deducted at pre-creation time (when the job is enqueued), not when the reading completes. This prevents users from spending credits they have already committed.
Idempotent Grants
All subscription and purchase credit grants check for existing CreditTransaction records by invoice ID before crediting, ensuring no double-grants on webhook replays.
Rate Limiting
Credit purchases are rate-limited to 5 attempts per 60 seconds per user to prevent abuse.