Tier & Payment System: Transparent Access & Pricing

Four Simple Tiers

VoxDiff offers four tiers. Each is a sandbox—tokens, rate limits, and feature access are completely isolated per tier.

TierCostAuthToken BudgetLanesCustom PromptPremium ModelsReset
Red CupFreeNone1M/session2–3NoNoNever (ephemeral)
Open BarFree*Email verified1M/month2–3YesNo1st of month UTC
Cash Bar$5 one-timeWP account1M/purchase2–8YesYesNever (consumed)
Run A Tab$3/monthWP account1M/month2–8YesYesBilling date

*Open Bar is free but requires email verification. This prevents abuse while giving genuine users unlimited monthly access.


Tier Details: What You Get

Red Cup (Free, Anonymous)

Perfect for trying VoxDiff without signing up.

Access:

  • Compare up to 3 models per comparison
  • 1,000,000 tokens per session (your current browser session)
  • Pre-built personas only (no custom system prompts)
  • Public models only (GPT-4o-mini, Claude Haiku, Gemini Pro)

Rate limits: 20 comparisons/hour, 50 messages/hour

Isolation:

  • Session ID + IP address must match for every request
  • Session is browser-managed (PHP session)
  • No account created; no email needed
  • After 90 days of inactivity, the session is auto-deleted from our database

Limitations:

  • Cannot save or share comparisons (share feature requires Open Bar+)
  • Cannot persist conversations across browser sessions
  • If you close the browser or clear cookies, you lose the session

Why the restrictions? Red Cup is a playground. We prevent abuse (no custom prompts, lower rate limits) without requiring registration.


Open Bar (Free, Verified User)

You create a WordPress account and verify your email. In return, you get a full month of comparisons.

Access:

  • 2–3 models per comparison
  • 1,000,000 tokens per calendar month
  • Custom system prompts allowed
  • Public models only (no premium single-models like GPT-4-turbo or Claude Opus)
  • Save & share comparisons

Rate limits: 60 comparisons/hour, 200 messages/hour

Email Verification:
We verify your email to confirm you’re a real person (prevents bot abuse). On sign-up:

  1. You receive a verification email
  2. You click the link in the email
  3. Your account is promoted to Open Bar tier
  4. Your budget is set to 1,000,000 tokens, resetting on the 1st of each month

Existing Users:
If you registered before VoxDiff added tiering, we consider you trusted. We can automatically mark all existing users as verified (you can enable this in the admin settings). No re-verification required.

Monthly Reset:
On the 1st of each month (UTC), your token balance resets to 1,000,000. A cron job runs at midnight to perform the reset.

If you cancel a Cash Bar purchase or subscription mid-month, your Open Bar tokens are unaffected. They keep resetting monthly independently.


Cash Bar ($5 One-Time)

A one-time $5 purchase grants 1,000,000 tokens. No subscription, no recurring charges.

Access:

  • 2–8 models per comparison (doubled from free tiers)
  • 1,000,000 tokens per purchase (never expires)
  • Custom system prompts
  • Premium models: GPT-4-turbo, Claude Opus, etc.
  • Unlimited save & share

Rate limits: 200 comparisons/hour, 500 messages/hour

How It Works:

  1. You click “Upgrade to Cash Bar”
  2. Stripe Checkout opens (hosted payment page—secure)
  3. You enter payment info (card, Apple Pay, Google Pay, etc.)
  4. Stripe processes the payment
  5. VoxDiff receives a webhook confirmation
  6. Your tier is instantly upgraded; 1,000,000 tokens are added to your balance
  7. You receive a confirmation email

No Recurring Charges:
Unlike Run A Tab, you’re charged once. If you never buy again, you’re not charged again.

Multiple Purchases:
You can buy Cash Bar multiple times. Each purchase adds 1,000,000 more tokens to your balance. Example:

After purchase 1: Balance = 1,000,000
After purchase 2: Balance = 2,000,000
After purchase 3: Balance = 3,000,000

The tokens never expire; they’re consumed as you use them.


Run A Tab ($3/Month Subscription)

A monthly subscription at $3/month. Auto-renews on your billing date.

Access:

  • Same as Cash Bar (2–8 models, 1,000,000 tokens/month, premium models)
  • Automatic monthly renewal
  • Can cancel anytime (no lock-in)

How It Works:

  1. You click “Subscribe to Run A Tab”
  2. Stripe Checkout opens with “Subscription” mode
  3. You enter payment info
  4. Stripe processes the first charge
  5. VoxDiff receives a webhook
  6. Your tier is upgraded; 1,000,000 tokens are added
  7. Stripe stores your payment method and automatically renews on your billing date each month

Monthly Renewal:
Stripe automatically charges you on the same day each month (your billing date). Your VoxDiff balance resets to 1,000,000 tokens simultaneously.

Example:

Day 1 (subscription start): Balance = 1,000,000 (charged $3)
Day 15: You use 600,000 tokens. Balance = 400,000
Day 30 (auto-renewal): Balance resets to 1,000,000 (charged $3 again)

Cancellation:
You can cancel anytime via the Stripe Customer Portal (a link in your VoxDiff account settings). Your subscription stops at the end of the current billing cycle. You keep your remaining tokens until they expire 30 days after the final billing date.


Tier Transitions & Stacking

From Red Cup to Open Bar

Verify your email → Balance resets to 1,000,000 tokens, resetting monthly from now on.

From Open Bar to Cash Bar

Buy a $5 one-time purchase → Open Bar tokens are unaffected. You now have both tier budgets. Cash Bar tokens are consumed first; Open Bar tokens are preserved.

From Open Bar to Run A Tab

Subscribe to $3/month → Same as Cash Bar upgrade. You have three token pools:

  • Open Bar: 1,000,000 tokens/month (resets monthly)
  • Cash Bar: 1,000,000 tokens (never expire, if you have any from prior purchases)
  • Run A Tab: 1,000,000 tokens/month (resets monthly on billing date)

Tokens are consumed in order: Run A Tab → Open Bar → Cash Bar.

Downgrading

If you cancel Run A Tab:

  • Your subscription stops at the end of the current month
  • You fall back to Open Bar (if verified) or Red Cup
  • Unused Run A Tab tokens are preserved for 30 days post-cancellation
  • Cash Bar tokens are never affected

Premium Models & Tier Restrictions

Some models are expensive and power-hungry. They’re restricted to paid tiers as a safeguard.

Premium models (Cash Bar + Run A Tab only):

  • OpenAI: gpt-4-turbo (slower, more capable, ~10x more expensive than gpt-4o)
  • Anthropic: claude-opus-4-6 (most capable Claude, ~3x cost of Sonnet)

Public models (all tiers):

  • OpenAI: gpt-4o, gpt-4o-mini, gpt-3.5-turbo
  • Anthropic: claude-sonnet-4-6, claude-haiku-4-5
  • Google: gemini-pro, gemini-pro-vision
  • Other: Grok, Llama, etc.

The comparison UI greys out premium models with a message:

gpt-4-turbo
[locked] Requires Cash Bar or Run A Tab
Upgrade to access this model → [Upgrade]

Payment Processing with Stripe

Why Stripe?

  • PCI-DSS compliance: Card data never touches our servers (Stripe’s hosted pages)
  • Webhooks: Reliable, producer-grade notifications of payments and subscription events
  • Customer Portal: Customers can manage their subscription, update payment methods, download invoices
  • One-time & recurring: Stripe handles both cleanly

Payment Flow (Cash Bar)

┌──────────────────────────┐
│ User clicks "Upgrade"    │
│ (on your VoxDiff site)   │
└────────────┬─────────────┘
             ↓
┌──────────────────────────┐
│ VoxDiff creates          │
│ Stripe Checkout Session  │
│ (AJAX call to server)    │
└────────────┬─────────────┘
             ↓
┌──────────────────────────────────┐
│ Stripe Checkout (hosted page)    │
│ - Card info entry               │
│ - Shipping/billing address      │
│ - Apple Pay / Google Pay        │
└────────────┬─────────────────────┘
             ↓
┌──────────────────────────────────┐
│ User pays (on Stripe's servers)  │
│ VoxDiff NEVER sees card data     │
└────────────┬─────────────────────┘
             ↓
┌──────────────────────────────────┐
│ Stripe sends webhook:            │
│ checkout.session.completed       │
│ (includes payment intent ID)     │
└────────────┬─────────────────────┘
             ↓
┌──────────────────────────────────┐
│ VoxDiff webhook handler:         │
│ - Verify webhook signature       │
│ - Grant 1,000,000 tokens         │
│ - Set tier = 'cash_bar'          │
│ - Log ledger entry               │
│ - Send confirmation email        │
└────────────┬─────────────────────┘
             ↓
┌──────────────────────────────────┐
│ User's account upgraded          │
│ (can now access premium models)  │
└──────────────────────────────────┘

Subscription Flow (Run A Tab)

Same as above, but Stripe creates a Subscription object (recurring) instead of a one-time Payment Intent.

After first payment:

  • Stripe stores the payment method securely
  • 29 days before the billing date, Stripe begins processing the next charge
  • If the charge succeeds, a webhook is sent: invoice.payment_succeeded
  • If it fails, Stripe retries per the standard retry schedule, then sends invoice.payment_failed

Webhooks: The Bridge Between Stripe & VoxDiff

Stripe sends webhooks to a dedicated endpoint (/wp-json/voxdiff/webhook/stripe). VoxDiff verifies the webhook signature (using the webhook secret stored in settings, encrypted) and processes the event.

Webhook Events Processed

EventAction
checkout.session.completed (mode=payment)Grant tokens, set tier = cash_bar
checkout.session.completed (mode=subscription)Grant tokens, set tier = run_a_tab, store subscription ID
invoice.payment_succeededReset monthly tokens, update period_end
customer.subscription.deletedDowngrade tier to open_bar (or red_cup if not verified), preserve remaining tokens for 30 days
invoice.payment_failedSend notification email; do not immediately downgrade (Stripe retries)

Idempotency

Webhooks can arrive multiple times (Stripe retries if it doesn’t get a 2xx response). VoxDiff’s webhook handler is idempotent—processing the same webhook twice has the same effect as processing it once.

// Webhook handler checks if payment intent is already processed
$payment = $this->get_payment_by_intent_id($intent_id);
if ($payment) {
    // Already processed, return success (idempotent)
    return 200;
}

// New payment, process it
$this->grant_tokens(...);
return 200;

Rate Limiting: Secondary Gate (Token Budget is Primary)

Each tier has rate limits (requests per hour):

TierComparisons/hourMessages/hourRequests/hour
Red Cup2050100
Open Bar60200300
Cash Bar2005001000
Run A Tab2005001000

Rate limits catch abuse (scripted submissions). Token budget is the economic gate (prevents accidental overspending).

If you hit a rate limit, you get a 429 error:

{
  "code": "rate_limit_exceeded",
  "retry_after": 45,
  "message": "Too many requests. Try again in 45 seconds."
}

Rate limits are per-tier, not per-user. Two Open Bar users can each do 60 comparisons/hour independently.


Admin Tier Overrides

Site administrators can manually override a user’s tier via the WordPress user edit page:

Override options:

  • Set tier to any of the four (overrides the normal tier resolution)
  • Grant bonus tokens (added on top of the user’s current balance)
  • Exempt from rate limits
  • Leave an internal note

Example: Support grants a user 500,000 bonus tokens as compensation for an API outage.

Override Tier: (none selected - use earned tier)
Bonus Tokens: 500000
Exempt Rate Limits: [checked]
Note: "Compensation for 2-hour API outage on 2026-03-07"

On save:

  1. Tokens are granted immediately
  2. Ledger entry is created: event_type = 'admin_adjustment', set_by = admin_user_id
  3. User receives email notification of the grant

All admin actions are logged and auditable.


Example Journeys

Journey 1: Free Trial → Paid

Day 1:  User signs up (Red Cup)
        - 1M tokens, ephemeral session
        - Compares 2 models, uses 500k tokens
        - Balance: 500k

Day 2:  User runs out of tokens
        - Sees "Upgrade to continue" prompt
        - Clicks "Get Cash Bar ($5)" button
        - Pays $5 via Stripe
        - Instantly: tier = cash_bar, balance = 1,500,000 (500k open bar + 1M new)
        - Continues comparing

Day 15: User has 200k tokens left
        - Decides premium models are worth it long-term
        - Clicks "Subscribe ($3/month)" button
        - Tier = run_a_tab, monthly reset starts
        - Still has 200k Cash Bar tokens preserved

Day 30: Run A Tab auto-renews
        - Charged $3
        - Balance resets: 1,000,000 (Run A Tab)
        - 200k Cash Bar tokens still available

Month 2: User cancels subscription
        - Access falls back to Open Bar (verified user)
        - Run A Tab balance decays (30-day grace period)
        - Open Bar balance resets monthly as usual

Journey 2: Enterprise Admin Scenario

Monday: Sales closes a deal (10 users, $30/month)
        - Admin bulk-grants Run A Tab tier to 10 users
        - Each receives email: "Your VoxDiff subscription is active"
        - All start with 1M tokens

Friday: One user hits rate limit (scripted abuse)
        - Admin overrides: set exempt_rate_limits = true
        - User can continue

Month 1 End: Stripe charges the customer $300 (10 users × $3)
             - Webhooks trigger for each subscription renewal
             - All 10 users' balances reset to 1M tokens

Month 2: Customer wants to increase to 15 users
         - Admin promotes 5 new users to Run A Tab
         - Stripe subscription increases to 15 seats
         - Next billing: $450 (15 × $3)

Tier Inheritance: No Account Contamination

Tiers are completely isolated. If you have two VoxDiff accounts:

Account 1: Open Bar (verified email) → 1M tokens/month
Account 2: Red Cup (anonymous session) → 1M tokens/session

Spending tokens on Account 1 doesn’t affect Account 2. Upgrading Account 1 to Cash Bar doesn’t change Account 2’s status. Each account is a sandbox.


Settings for Admins

The VoxDiff admin page (Settings → VoxDiff → Billing & Tiers) allows customization:

SettingKey
Stripe Secret Keyvoxdiff_stripe_secret_key (encrypted)
Stripe Publishable Keyvoxdiff_stripe_pub_key
Stripe Webhook Secretvoxdiff_stripe_webhook_secret (encrypted)
Cash Bar Price IDvoxdiff_stripe_cashbar_price_id
Run A Tab Price IDvoxdiff_stripe_runtab_price_id
Token Allotment (per tier)voxdiff_tier_config (JSON)
Upgrade Page URLvoxdiff_upgrade_url (linked from prompts)
Trust Existing UsersOne-time action to auto-verify all current users
Monthly Reset TimeCron time for Open Bar + Run A Tab resets (default: 00:00 UTC)

Next Steps

Leave a Reply

Your email address will not be published. Required fields are marked *