Files
firefrost-operations-manual/docs/tasks/paymenter-pterodactyl-integration
Claude (Chronicler #47) f815525f81 fix: rename Founder tier to Sovereign across all active docs
The top subscription tier is Sovereign, not Founder.
This has been corrected multiple times across sessions — fixing at source.

FILES UPDATED:
- docs/core/tasks.md
- docs/core/project-scope.md
- docs/tasks/rank-system-deployment/rank-structure.md
- docs/tasks/paymenter-pterodactyl-integration/README.md
- docs/archive/2026-02-09-consolidation/luckperms-structure.md
- docs/planning/subscription-tiers.md
- docs/planning/awakened-gateway.md
- docs/guides/subscription-automation-guide.md
- docs/guides/holly-discord-roles-setup.md
- docs/guides/holly-wanderer-permissions-setup.md
- docs/systems/arbiter-discord-role-mappings.md
- docs/branding/trinity-leadership-artwork.md

NOTE: References to 'founders' meaning Michael/Meg/Holly as company
founders were intentionally preserved. Only tier name updated.

Signed-off-by: claude@firefrostgaming.com
2026-03-29 19:42:01 +00:00
..

Task #83: Paymenter → Pterodactyl Auto-Provisioning Integration

Created: March 26, 2026
Status: 🔴 BLOCKING SOFT LAUNCH
Priority: CRITICAL - Must complete before accepting first subscriber
Time Estimate: 4-6 hours
Assigned To: Next Chronicler + Michael


🚨 WHY THIS IS CRITICAL

Without this integration:

  • Every new subscriber requires manual Pterodactyl account creation
  • Every payment failure requires manual suspension
  • Every tier change requires manual permission updates
  • Every cancellation requires manual cleanup
  • This does not scale beyond 5-10 subscribers

With this integration:

  • Subscriber pays → server access granted automatically (30 seconds)
  • Payment fails → server suspended after grace period (automated)
  • Subscriber upgrades tier → permissions updated (instant)
  • Subscriber cancels → access removed cleanly (automated)
  • Scales to hundreds of subscribers with zero manual work

📊 CURRENT STATE vs DESIRED STATE

Current State (NOT SUSTAINABLE)

Customer subscribes via Paymenter
        ↓
Michael gets email notification
        ↓
Michael manually logs into Pterodactyl Panel
        ↓
Michael manually creates user account
        ↓
Michael manually assigns permissions
        ↓
Michael manually emails customer credentials
        ↓
(Repeat for every subscriber, every tier change, every cancellation)

Desired State (REQUIRED FOR LAUNCH)

Customer subscribes via Paymenter (Stripe payment)
        ↓
Stripe webhook → Paymenter
        ↓
Paymenter webhook → Integration Bridge
        ↓
Pterodactyl API: Create/update user automatically
        ↓
Email sent to customer automatically (Pterodactyl)
        ↓
Customer has access in 30 seconds
        ↓
(Zero manual intervention)

🔧 INTEGRATION ARCHITECTURE

Components Required

1. Paymenter Side:

  • Stripe webhooks (already configured )
  • Paymenter product configuration (10 tiers created )
  • Webhook URL endpoint (needs configuration )

2. Bridge/Middleware:

  • Option A: Paymenter extension (if available)
  • Option B: Custom webhook receiver + API bridge
  • Option C: n8n workflow (already have n8n on TX1)
  • Option D: Pterodactyl Paymenter module (check Blueprint marketplace)

3. Pterodactyl Side:

  • API access enabled
  • API key created
  • User role templates defined
  • Server group permissions configured

📋 IMPLEMENTATION OPTIONS

Check if Paymenter has native Pterodactyl integration:

Pros:

  • Native integration (officially supported)
  • Likely handles edge cases
  • Maintained by Paymenter team

Cons:

  • May not exist yet (Paymenter is newer)
  • May not support all tier features

Option B: Pterodactyl Blueprint Extension

Check Blueprint marketplace for Paymenter integration:

  • Pterodactyl Panel → Extensions (Blueprint installed )
  • Search for "Paymenter", "billing", "provisioning"

Pros:

  • Installed via Blueprint (easy)
  • Lives in Pterodactyl (central management)

Cons:

  • May not exist
  • Quality varies

Option C: Custom n8n Workflow

Build webhook bridge using existing n8n instance:

  • n8n already deployed on TX1
  • Paymenter webhook → n8n → Pterodactyl API

Pros:

  • Full control over logic
  • Already have n8n infrastructure
  • Can handle complex tier mapping

Cons:

  • Requires custom workflow development
  • Must maintain ourselves
  • More moving parts

Option D: Direct Webhook Script

Simple PHP/Python script on Billing VPS:

  • Receives Paymenter webhooks
  • Calls Pterodactyl API directly

Pros:

  • Simplest architecture
  • Minimal dependencies

Cons:

  • Must write from scratch
  • Harder to debug
  • Security concerns (webhook validation)

Priority order to investigate:

  1. Check Paymenter documentation for native Pterodactyl integration
  2. Check Blueprint marketplace for Paymenter extension
  3. Fall back to n8n workflow if no native option exists

📝 PREREQUISITE INFORMATION NEEDED

Paymenter Configuration

  • Base URL: https://billing.firefrostgaming.com
  • Admin access: Available
  • Webhook secret key: (generate if needed)
  • Webhook URL format: (depends on integration method)

Pterodactyl Configuration

  • Panel URL: https://panel.firefrostgaming.com (Panel VPS 45.94.168.138)
  • API key: (needs creation)
  • API permissions: (needs definition)
  • User role templates: (needs creation)

Subscription Tier Mapping

Tier 1: The Awakened ($1 one-time)

  • Pterodactyl role: subscriber_awakened
  • Server access: All public Frost Path servers
  • Permissions: Basic (view, connect)

Tier 2: Fire Elemental / Frost Elemental ($5/mo)

  • Pterodactyl role: subscriber_elemental
  • Server access: All Frost Path servers
  • Permissions: Basic + home teleport

Tier 3: Fire Knight / Frost Knight ($10/mo)

  • Pterodactyl role: subscriber_knight
  • Server access: All Frost Path servers
  • Permissions: Elemental + extra homes

Tier 4: Fire Master / Frost Master ($15/mo)

  • Pterodactyl role: subscriber_master
  • Server access: All Frost Path + priority slots
  • Permissions: Knight + creative plot access

Tier 5: Fire Legend / Frost Legend ($20/mo)

  • Pterodactyl role: subscriber_legend
  • Server access: All servers + beta access
  • Permissions: Master + special perks

Tier 6: Sovereign ($50 one-time)

  • Pterodactyl role: subscriber_sovereign
  • Server access: ALL servers including future ones
  • Permissions: Everything non-staff

🔑 PTERODACTYL API SETUP

Step 1: Create API Key

On Panel VPS (45.94.168.138):

  1. SSH to Panel VPS
  2. Login to Pterodactyl admin panel
  3. Account → API Credentials
  4. Create new Application API Key
  5. Name: "Paymenter Auto-Provisioning"
  6. Permissions needed:
    • user.read - Read user data
    • user.create - Create new users
    • user.update - Update user permissions
    • user.delete - Remove users (on cancellation)
  7. Copy API key to Vaultwarden

Step 2: Test API Access

curl -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  https://panel.firefrostgaming.com/api/application/users

Should return list of users.


🔗 WEBHOOK CONFIGURATION

Paymenter Webhooks

Paymenter should send webhooks for:

  • subscription.created - New subscriber
  • subscription.updated - Tier change
  • subscription.cancelled - Cancellation
  • payment.failed - Failed payment (trigger grace period)
  • payment.succeeded - Successful payment (restore access)

Webhook payload example:

{
  "event": "subscription.created",
  "subscription_id": "12345",
  "customer_email": "user@example.com",
  "product_id": "fire-elemental",
  "tier": "elemental",
  "status": "active"
}

Webhook Security

Validate webhooks with:

  • Webhook signature verification
  • IP whitelist (Billing VPS only)
  • HTTPS only
  • Secret key validation

SUCCESS CRITERIA

Phase 1: Basic Provisioning

  • Paymenter → Pterodactyl integration method chosen
  • Pterodactyl API key created and tested
  • Test user created via API successfully
  • Test user can login to Pterodactyl Panel

Phase 2: Webhook Automation

  • Webhook endpoint configured and receiving events
  • New subscription creates Pterodactyl user automatically
  • Email sent to customer with login details
  • Customer can access servers within 60 seconds of payment

Phase 3: Full Lifecycle

  • Tier upgrades update permissions automatically
  • Payment failures trigger grace period (7 days)
  • Suspension after grace period works
  • Cancellations remove access cleanly
  • Reactivation restores access

Phase 4: Production Ready

  • Tested with 5+ dummy subscriptions (full lifecycle)
  • Error handling works (failed API calls, network issues)
  • Logging configured (can debug issues)
  • Rollback plan documented
  • Manual override procedure documented (for edge cases)

🚨 BEFORE SOFT LAUNCH

This integration MUST be:

  • Fully tested end-to-end
  • Handling all subscription lifecycle events
  • Logging errors for debugging
  • Backed by manual override procedure

DO NOT accept real subscribers until this works.

Manual provisioning for 1-2 test subscribers is fine.
Manual provisioning for 10+ subscribers is not sustainable.


📚 RESOURCES

Paymenter Documentation:

Pterodactyl API Documentation:

Similar Integrations:

  • WHMCS → Pterodactyl modules (for reference)
  • Blesta → Pterodactyl modules (for reference)

Depends on:

  • None (all prerequisites complete)

Blocks:

  • Soft launch acceptance of real subscribers
  • Task #2 (LuckPerms deployment - Phase 3 Discord sync)

Related:

  • Task #33 (Paymenter Citadel theme - cosmetic only)
  • Task #71 (Paymenter tier preview tool - planning only)

📝 NEXT STEPS

  1. Research integration options (Paymenter docs, Blueprint marketplace)
  2. Choose integration method (native extension vs custom bridge)
  3. Create Pterodactyl API key with correct permissions
  4. Configure webhook endpoint (depends on chosen method)
  5. Test with dummy subscription (create → access → cancel)
  6. Document deployment in this task directory
  7. Deploy to production after successful testing
  8. Monitor first 10 real subscriptions manually

Standard: This task follows FFG-STD-002 (Task Documentation Standard)

Created by: The Verifier (Chronicler #41)
Date: March 26, 2026, 2:15 AM CST