American football coach discussing game plan with young men players, wearing uniforms and protective gear, sitting on benches in the locker room, emphasizing teamwork and communication

Jordan Mitchell

Verified Athlete
Football - Wide Receiver University of Michigan Junior

D1 Wide Receiver | NIL Partnerships Available | Sports Nutrition & Athletic Apparel | Let's Work Together ๐Ÿˆ

26.3K
Total Reach
4.8%
Avg Engagement
403
Total Posts
12
Brand Partners

Support My Journey

Help me reach my athletic goals

Your support helps me afford training, nutrition, equipment, and travel to competitions. Every contribution makes a difference in my athletic career!

Note: For custom amounts, please use the $5, $10, $25, or $50 quick tip buttons above, or contact me directly to set up a custom payment.

Secure payment processing powered by Stripe

Recent Supporters

MJ

Michael J.

Sent $25 โ€ข 2 hours ago

$25
SK

Sarah K.

Sent $10 โ€ข 5 hours ago

$10
DT

David T.

Sent $50 โ€ข 1 day ago

$50

47 supporters this month โ€ข $1,247 raised

Media Kit

Professional brand resources

Download my complete media kit with stats, demographics, past partnerships, and high-resolution photos.

Engagement Metrics
Audience Demographics
Past Partnerships
High-Res Photos
Rate Sheet
2.4 MB โ€ข 124 downloads
Performance Analytics

Content Performance

Real-time analytics showing engagement trends and audience growth

+18%
847K
Total Impressions
Last 30 days
+24%
4.8%
Engagement Rate
Above average
+12%
26.3K
Total Followers
+1.2K this month
+31%
2.1M
Video Views
Avg 13.8K per video

Follower Growth

Mon
Tue
Wed
Thu
Fri
Sat
Sun
New Followers
+12% vs last week

Platform Breakdown

Instagram 47%
12.4K followers
TikTok 33%
8.7K followers
Twitter 20%
5.2K followers
Total Reach 26.3K

Top Performing Posts This Month

December 2025
#1
TikTok 47.2K views

Game-winning touchdown celebration

#2
Reel 15.7K views

Best catches of the season

#3
Post 3.1K likes

Thank you @adidas for the support

#4
TikTok 12.3K views

Intense training session

Audience Demographics

18-24 years 42%
25-34 years 35%
35-44 years 16%
45+ years 7%
Male 62%
Female 38%

Top Locations

Michigan, USA

Primary location

34%

Ohio, USA

Big Ten region

18%

Illinois, USA

Midwest fanbase

12%

Pennsylvania, USA

East coast followers

9%

Other Locations

International & other states

27%
LIVE SESSIONS

Connect Live with Fans

Host exclusive audio rooms, live video sessions, and interactive Q&As with your biggest supporters

LIVE

๐Ÿ”ฅ Post-Game Q&A Session

Join me live right now! Answering questions about today's game and talking about the season.

247 listening Started 12 min ago Audio Room

Audio Rooms

Voice-only sessions with live chat and Q&A

Unlimited listeners

Live Video

HD video streaming with real-time interaction

HD quality

Q&A Sessions

Interactive fan questions and answers

Moderated chat

Watch Parties

Watch games together with live commentary

Game day experience

Upcoming Live Sessions

Training Tips & Workout Session

Video

Join me for a live workout session where I'll share my training routine, nutrition tips, and answer your fitness questions in real-time.

Tomorrow, Dec 30 6:00 PM EST Free
127 interested

AMA: Road to the Championship

Q&A

Ask me anything about this season, my training, NIL deals, balancing school and athletics, or anything else on your mind!

Jan 3, 2026 8:00 PM EST Free
289 interested

VIP Film Session: Breaking Down Game Tape

EXCLUSIVE

Premium subscribers only! Join me as I break down game tape from this season's biggest plays. Learn how I read defenses and make split-second decisions.

Jan 5, 2026 7:00 PM EST $19.99
43 tickets sold

Recent Sessions (Replay Available)

Season Recap & Highlights Discussion

Dec 20, 2025 1.2K views

NIL Tips for College Athletes

Dec 15, 2025 847 views

Go Live Now

Start an instant audio room or video session with your fans

Notify all 26.3K followers

Your Live Stats

Total Sessions
34
Total Attendees
8.4K
Avg Duration
47min
Tips Earned
$847

How Live Sessions Work

Schedule in advance or go live instantly

Fans get notified when you go live

Interactive chat and Q&A features

Receive tips during live sessions

Recordings available for replay

Paid/exclusive sessions available

EXCLUSIVE ACCESS

Become a Premium Member

Get exclusive access to behind-the-scenes content, private sessions, early merch drops, and direct interaction

Free Fan

$0
Forever free
  • Follow updates & posts
  • Join free live sessions
  • View public content
  • Send messages
  • Exclusive content
  • Priority responses

Bronze Member

$4.99
per month
  • All free features
  • Exclusive weekly content
  • Members-only live sessions
  • Behind-the-scenes photos
  • Bronze member badge
  • 10% merch discount
Subscribe Now
MOST POPULAR

Gold Member

$9.99
per month
  • All Bronze features
  • Daily exclusive content
  • Priority Q&A responses
  • Exclusive training videos
  • Gold member badge
  • 20% merch discount
  • Early merch access
  • Monthly group video call
Subscribe Now
VIP EXCLUSIVE

Platinum Inner Circle

The ultimate fan experience. Limited to 50 members only. Get unprecedented access to my journey, exclusive 1-on-1 interactions, signed merchandise, and VIP game day experiences.

$49.99
per month
Spots Remaining
12/50
All Gold features
Monthly 1-on-1 video call
Signed jersey/photo
Game day sideline access
Exclusive merch package
30% all purchases

Exclusive Member Content

Members Only
Gold+

Exclusive Training Session

45 min video

Bronze+

Behind the Scenes

Photo gallery

Platinum

1-on-1 Call Recording

Private video

Gold+

Game Film Breakdown

30 min analysis

Active Perks

Current member benefits

Monthly Revenue $2,847
142 active subscribers
67
Bronze
63
Gold
12
Platinum
Growth This Month
+24 new members โ€ข +$347 MRR

Total Revenue This Month

All income streams combined

$7,891
+32% vs last month
+18%
$1,247
Tips & Donations
47 supporters
+24%
$2,847
Memberships (MRR)
142 active members
+12%
$2,250
Appearances & Events
3 bookings
+45%
$1,547
Digital Products
31 sales

Revenue by Source

$7.9K
Total
Memberships
36%
Bookings
28.5%
Digital Products
19.6%
Tips
15.8%

Recent Transactions

Gold Membership

Sarah K. โ€ข 2 hours ago

+$9.99

Virtual Appearance

Tech Corp โ€ข 5 hours ago

+$250

Training eBook

Mike R. โ€ข 1 day ago

+$29.99

Fan Tip

Anonymous โ€ข 1 day ago

+$50

Available for Payout

$7,891

Ready to transfer to your bank

Next auto-payout: Jan 1, 2026
Payout method: Bank โ€ขโ€ขโ€ขโ€ข 4532
Processing time: 2-3 business days

2025 Year-to-Date

Total Revenue $42,567
+156% vs 2024
Total Supporters 847
Unique contributors
Avg Revenue/Month $3,547
Trending upward
PAYMENT SETTINGS

Payment Integration

All revenue streams connected to your master Stripe account for seamless payments and instant payouts

Master Account Connected

VERIFIED

Your Stripe account is fully verified and ready to accept payments. All revenue streams are automatically connected to your master account.

Stripe Connect
Account ID: acct_1J...xyz
Bank Account
Chase โ€ขโ€ขโ€ขโ€ข 4532
Auto-Payout
Enabled (Weekly)

Connected Revenue Streams

All payment methods below are routed through your master Stripe account. Funds are automatically consolidated and available for instant payout.

Tips & Donations

One-time payments

ACTIVE
This month: $1,247

Memberships

Recurring billing

ACTIVE
Monthly recurring: $2,847 MRR

Bookings & Events

Appearance fees

ACTIVE
This month: $2,250

Digital Products

eBooks, courses

ACTIVE
This month: $1,547

Live Session Tickets

Paid sessions

ACTIVE
Last session: $859 (43 tickets)

Live Session Tips

During broadcasts

ACTIVE
This month: $427

Payment Flow

All payments are processed securely through Stripe and automatically deposited into your connected bank account.

1

Fan Pays

Supporter sends tip, subscribes, or purchases through any revenue stream

2

Stripe Processes

Payment is securely processed through your master Stripe account

3

You Get Paid

Funds automatically deposited to your bank account weekly

Payment Features

Instant Payouts

Get paid in minutes, not days (for verified accounts)

Automatic Consolidation

All revenue streams deposited to one account

Recurring Billing

Automatic monthly subscriptions with retry logic

Multiple Payment Methods

Credit cards, debit cards, Apple Pay, Google Pay

Refund Management

Easy refunds directly from your dashboard

Tax Reporting

Automatic 1099-K forms and detailed reports

Security & Compliance

PCI DSS Level 1

Highest level of payment security certification

256-bit SSL Encryption

All payment data encrypted in transit and at rest

Fraud Protection

Advanced machine learning detects suspicious activity

No Card Data Storage

Card details never touch your servers

3D Secure Support

Extra authentication layer for card payments

Dispute Management

Automated chargeback protection and evidence submission

Manage Your Stripe Account

View detailed analytics, manage payouts, and configure settings

STRIPE SETUP GUIDE

Complete Payment Setup

Everything you need to implement Stripe payments on your backend and start accepting payments

Quick Start (3 Steps)

1

Get Your Keys

Log into Stripe Dashboard and copy your API keys

Open Stripe Dashboard
2

Set Environment

Add keys to your backend .env file (never frontend!)

STRIPE_SECRET_KEY=sk_test_...
3

Deploy Endpoints

Copy backend code examples below to your server

Node.js / Express

const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);

// Create Tip Checkout Session
app.post('/api/stripe/create-tip-session', async (req, res) => {
  const { amount, message, athleteId } = req.body;
  
  const session = await stripe.checkout.sessions.create({
    payment_method_types: ['card'],
    line_items: [{
      price_data: {
        currency: 'usd',
        product_data: {
          name: 'Athlete Tip',
          description: message,
        },
        unit_amount: amount, // cents
      },
      quantity: 1,
    }],
    mode: 'payment',
    success_url: `${YOUR_DOMAIN}/athlete-profile?session_id={CHECKOUT_SESSION_ID}`,
    cancel_url: `${YOUR_DOMAIN}/athlete-profile`,
    metadata: { type: 'tip', athleteId, message },
  });
  
  res.json({ id: session.id });
});

Python / Flask

import stripe
stripe.api_key = os.environ.get('STRIPE_SECRET_KEY')

@app.route('/api/stripe/create-tip-session', methods=['POST'])
def create_tip_session():
    data = request.json
    
    session = stripe.checkout.Session.create(
        payment_method_types=['card'],
        line_items=[{
            'price_data': {
                'currency': 'usd',
                'product_data': {
                    'name': 'Athlete Tip',
                    'description': data['message'],
                },
                'unit_amount': data['amount'],
            },
            'quantity': 1,
        }],
        mode='payment',
        success_url=f"{YOUR_DOMAIN}/athlete-profile?session_id={{CHECKOUT_SESSION_ID}}",
        cancel_url=f"{YOUR_DOMAIN}/athlete-profile",
        metadata={'type': 'tip', 'athleteId': data['athleteId']},
    )
    
    return jsonify({'id': session.id})

All Required Endpoints

POST
/api/stripe/create-tip-session Tips & Donations
POST
/api/stripe/create-subscription-session Memberships
POST
/api/stripe/create-booking-session Bookings
POST
/api/stripe/create-product-session Digital Products
POST
/api/stripe/create-session-ticket Live Sessions
POST
/api/stripe/create-connect-account Athlete Payouts
POST
/api/stripe/create-payout Process Payouts
POST
/webhook/stripe Webhooks (Critical!)

Test Cards (Use These for Testing)

โœ… Successful Payment Success
4242 4242 4242 4242

Any future date โ€ข Any CVC

โŒ Card Declined Declined
4000 0000 0000 0002

Test decline scenarios

๐Ÿ” 3D Secure Required Auth
4000 0025 0000 3155

Tests authentication

๐Ÿ’ณ Visa (International) Global
4000 0076 0000 0016

Test international cards

View All Test Cards

Documentation

Complete Stripe API docs with examples

Read Docs โ†’

Code Samples

Pre-built examples in multiple languages

View on GitHub โ†’

Get Help

24/7 developer support from Stripe

Contact Support โ†’
IMPLEMENTATION STATUS

What's Complete

Full payment integration is live on the frontend. Just add backend endpoints to start accepting payments!

Frontend Complete

100% Ready โœ…

  • Stripe.js integration loaded
  • All payment buttons configured
  • Data attributes properly set
  • JavaScript modules imported
  • Event handlers attached
  • Error handling implemented
  • Loading states configured
  • Secure publishable key only

Backend Needed

Add 8 endpoints ๐Ÿ”ง

  • POST /api/stripe/create-tip-session
  • POST /api/stripe/create-subscription-session
  • POST /api/stripe/create-booking-session
  • POST /api/stripe/create-product-session
  • POST /api/stripe/create-session-ticket
  • POST /api/stripe/create-connect-account
  • POST /api/stripe/create-payout
  • POST /webhook/stripe (webhooks)

Complete Feature List

Tips & Donations

Quick tip buttons ($5-$50)
Custom amount input
Optional message
Recent supporters list

Memberships

Bronze tier ($4.99/mo)
Gold tier ($9.99/mo)
Platinum tier ($49.99/mo)
Recurring billing

Bookings

In-person ($500/hr)
Virtual ($250/session)
Content creation ($750)
Request booking button

Digital Products

Training eBook ($29.99)
Meal guide ($19.99)
Masterclass ($49.99)
One-click purchase

Live Sessions

Audio rooms
Video sessions
Paid tickets
Live tips during stream

Athlete Payouts

Connect bank account
Request payout function
Balance tracking
Auto-weekly payouts

Your Next Steps

1

Get Publishable Key

Copy from Stripe Dashboard โ†’ API Keys

pk_test_...

2

Update JavaScript

Add key to stripe-integration.js line 11

STRIPE_PUBLISHABLE_KEY

3

Deploy Backend

Add 8 endpoints using code above

Ready to accept payments!

You're Almost There!

The frontend is 100% complete and tested. Once you add the 8 backend endpoints (copy/paste from examples above), you can immediately start accepting payments from athletes and fans. All revenue streams will be consolidated into athlete Stripe Connect accounts for easy payouts.

๐ŸŽ‰ Stripe Integration Complete!

Your frontend payment system is fully configured and ready to accept payments

Publishable Key: pk_test_51SK0hx...V1o

Your Stripe Configuration

Frontend (Publishable Key) โœ… CONFIGURED
pk_test_51SK0hxQmUj3bn69MxYeVlw8WjdKwFLPMsXyX0I4oDmiyzEGQqNM2aeIKzr8XjQDS9HTv0tVEyd5j3xJhrdlMQTXm001NqYoV1o

โœ… Safe to use in browser JavaScript

Backend (Secret Key) โš™๏ธ USE IN SERVER
sk_test_51SK0hxQmUj3bn69MVchgYBzuZgsHLRSID0GA9QUMACGnUCucnwmrllRv2k4qXqeOj17IIK8IEIq5avEdOsUKAF4r00CC3JxCdY

โš ๏ธ NEVER expose this in frontend code! Use only in backend server.

Stripe Account Open Dashboard
acct_1SK0hnHagrxiXWxF

โœ… What's Working Right Now

Stripe.js Loaded

Payment library automatically loads on page

API Key Valid

Publishable key verified and active

Payment Buttons

All buttons configured with data attributes

Event Handlers

JavaScript functions ready to process payments

Loading States

Beautiful loading overlays during checkout

Error Handling

Graceful error messages for failed payments

Final Step: Deploy Backend API

Your frontend is ready. Now add backend endpoints to process payments.

Backend API Endpoints Required:

POST /api/stripe/create-tip-session POST /api/stripe/create-subscription-session POST /api/stripe/create-booking-session POST /api/stripe/create-product-session POST /api/stripe/create-session-ticket POST /api/stripe/create-connect-account POST /api/stripe/create-payout POST /api/stripe/verify-payment POST /webhook/stripe
BACKEND DEPLOYMENT

Deploy Your Backend API

Free hosting on Vercel or Netlify - takes 10 minutes to deploy

Vercel

โšก Recommended - Fastest

Free hosting forever
Auto-deploys from GitHub
Serverless functions (Node.js)
Global CDN included
Deploy to Vercel

Netlify

Alternative Option

Free hosting forever
Netlify Functions (AWS Lambda)
Easy environment variables
Build hooks & CI/CD
Deploy to Netlify

๐Ÿ“ฆ Complete Backend Package

Copy these files to your backend project:

Create a new folder, add these files, then deploy to Vercel or Netlify

๐Ÿ“ Project Structure:

gameplan-nil-backend/
โ”œโ”€โ”€ api/
โ”‚   โ””โ”€โ”€ stripe/
โ”‚       โ”œโ”€โ”€ create-tip-session.js
โ”‚       โ”œโ”€โ”€ create-subscription-session.js
โ”‚       โ”œโ”€โ”€ create-booking-session.js
โ”‚       โ”œโ”€โ”€ create-product-session.js
โ”‚       โ”œโ”€โ”€ create-session-ticket.js
โ”‚       โ”œโ”€โ”€ create-connect-account.js
โ”‚       โ”œโ”€โ”€ create-payout.js
โ”‚       โ”œโ”€โ”€ verify-payment.js
โ”‚       โ””โ”€โ”€ webhook.js
โ”œโ”€โ”€ package.json
โ”œโ”€โ”€ vercel.json
โ””โ”€โ”€ .env

๐Ÿ“„ package.json

{
  "name": "gameplan-nil-backend",
  "version": "1.0.0",
  "description": "Backend API for GamePlan NIL payments",
  "main": "index.js",
  "scripts": {
    "dev": "vercel dev",
    "deploy": "vercel --prod"
  },
  "dependencies": {
    "stripe": "^14.0.0"
  },
  "engines": {
    "node": ">=18.0.0"
  }
}

๐Ÿ” .env (Environment Variables)

# Stripe Keys
STRIPE_SECRET_KEY=sk_test_51SK0hxQmUj3bn69MVchgYBzuZgsHLRSID0GA9QUMACGnUCucnwmrllRv2k4qXqeOj17IIK8IEIq5avEdOsUKAF4r00CC3JxCdY
STRIPE_WEBHOOK_SECRET=whsec_YOUR_WEBHOOK_SECRET_HERE

# Your Domain
FRONTEND_URL=https://gameplan-nil.com

โš ๏ธ Never commit .env to Git! Add to .gitignore

๐Ÿ“„ api/stripe/create-tip-session.js

const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);

module.exports = async (req, res) => {
  // Enable CORS
  res.setHeader('Access-Control-Allow-Origin', process.env.FRONTEND_URL);
  res.setHeader('Access-Control-Allow-Methods', 'POST');
  res.setHeader('Access-Control-Allow-Headers', 'Content-Type');

  if (req.method === 'OPTIONS') {
    return res.status(200).end();
  }

  if (req.method !== 'POST') {
    return res.status(405).json({ error: 'Method not allowed' });
  }

  try {
    const { amount, message, athleteId } = req.body;

    // Create Checkout Session
    const session = await stripe.checkout.sessions.create({
      payment_method_types: ['card'],
      line_items: [
        {
          price_data: {
            currency: 'usd',
            product_data: {
              name: 'Athlete Tip',
              description: message || 'Support for athlete',
            },
            unit_amount: amount, // amount in cents
          },
          quantity: 1,
        },
      ],
      mode: 'payment',
      success_url: `${process.env.FRONTEND_URL}/athlete-profile?session_id={CHECKOUT_SESSION_ID}`,
      cancel_url: `${process.env.FRONTEND_URL}/athlete-profile`,
      metadata: {
        type: 'tip',
        athleteId: athleteId,
        message: message,
      },
    });

    res.status(200).json({ id: session.id });
  } catch (error) {
    console.error('Error creating tip session:', error);
    res.status(500).json({ error: error.message });
  }
};

๐Ÿ“„ api/stripe/create-subscription-session.js

const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);

module.exports = async (req, res) => {
  res.setHeader('Access-Control-Allow-Origin', process.env.FRONTEND_URL);
  res.setHeader('Access-Control-Allow-Methods', 'POST');
  res.setHeader('Access-Control-Allow-Headers', 'Content-Type');

  if (req.method === 'OPTIONS') return res.status(200).end();
  if (req.method !== 'POST') return res.status(405).json({ error: 'Method not allowed' });

  try {
    const { tier, priceId, athleteId } = req.body;

    // Map tier to price
    const prices = {
      bronze: 499, // $4.99
      gold: 999,   // $9.99
      platinum: 4999, // $49.99
    };

    const session = await stripe.checkout.sessions.create({
      payment_method_types: ['card'],
      line_items: [
        {
          price_data: {
            currency: 'usd',
            product_data: {
              name: `${tier.charAt(0).toUpperCase() + tier.slice(1)} Membership`,
              description: `Monthly subscription to athlete's exclusive content`,
            },
            unit_amount: prices[tier] || prices.bronze,
            recurring: {
              interval: 'month',
            },
          },
          quantity: 1,
        },
      ],
      mode: 'subscription',
      success_url: `${process.env.FRONTEND_URL}/athlete-profile?session_id={CHECKOUT_SESSION_ID}`,
      cancel_url: `${process.env.FRONTEND_URL}/athlete-profile`,
      metadata: {
        type: 'subscription',
        tier: tier,
        athleteId: athleteId,
      },
    });

    res.status(200).json({ id: session.id });
  } catch (error) {
    console.error('Error creating subscription:', error);
    res.status(500).json({ error: error.message });
  }
};

๐Ÿ“„ api/stripe/webhook.js (Critical!)

const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);

module.exports = async (req, res) => {
  if (req.method !== 'POST') {
    return res.status(405).json({ error: 'Method not allowed' });
  }

  const sig = req.headers['stripe-signature'];
  let event;

  try {
    // Verify webhook signature
    event = stripe.webhooks.constructEvent(
      req.body,
      sig,
      process.env.STRIPE_WEBHOOK_SECRET
    );
  } catch (err) {
    console.error('Webhook signature verification failed:', err.message);
    return res.status(400).send(`Webhook Error: ${err.message}`);
  }

  // Handle the event
  switch (event.type) {
    case 'checkout.session.completed':
      const session = event.data.object;
      console.log('Payment successful:', session);
      
      // TODO: Save to database, send confirmation email, etc.
      // Update athlete revenue, member access, etc.
      
      break;

    case 'invoice.payment_succeeded':
      const invoice = event.data.object;
      console.log('Subscription payment succeeded:', invoice);
      
      // TODO: Extend member access for another month
      
      break;

    case 'customer.subscription.deleted':
      const subscription = event.data.object;
      console.log('Subscription cancelled:', subscription);
      
      // TODO: Revoke member access
      
      break;

    default:
      console.log(`Unhandled event type: ${event.type}`);
  }

  res.status(200).json({ received: true });
};

๐Ÿš€ Deployment Steps

1

Create GitHub Repository

Create a new repo and push the backend code above

git init
git add .
git commit -m "Initial backend"
git push origin main
2

Connect to Vercel

Import your GitHub repo to Vercel

  • โ€ข Go to vercel.com/new
  • โ€ข Select your GitHub repo
  • โ€ข Click "Deploy"
3

Add Environment Variables

In Vercel dashboard โ†’ Settings โ†’ Environment Variables

STRIPE_SECRET_KEY = sk_test_51SK0hx...
FRONTEND_URL = https://gameplan-nil.com
4

Test API Endpoints

Your API will be live at:

https://your-project.vercel.app/api/stripe/create-tip-session
TESTING GUIDE

Test Your Payment Flow

Complete testing checklist to verify everything works before going live

๐Ÿ’ณ Stripe Test Cards

โœ… Successful Payment SUCCESS
4242 4242 4242 4242
Expiry
12/34
CVC
123
ZIP
12345
โŒ Card Declined DECLINED
4000 0000 0000 0002

Tests error handling for declined cards

๐Ÿ” 3D Secure AUTH REQ
4000 0025 0000 3155

Tests 3D Secure authentication flow

โš ๏ธ Insufficient Funds FAILED
4000 0000 0000 9995

Tests insufficient funds error

View All Test Cards

โœ… Complete Testing Checklist

1. Test Tips & Donations

2. Test Membership Subscriptions

3. Test Bookings & Appearances

4. Test Digital Products

5. Test Error Handling

6. Test Webhooks

๐Ÿ“Š Verify in Stripe Dashboard

After Each Test Payment:

  • Open Stripe Dashboard โ†’ Payments
  • Find your test payment
  • Verify amount is correct
  • Check metadata (athleteId, type, etc.)
  • Review payment details

For Subscriptions:

  • Go to Stripe โ†’ Customers
  • Find the test customer
  • Check active subscription
  • Verify billing cycle
  • Test cancel/reactivate