Stripe and Discord don't connect natively. Every paid Discord community is built on a connector — either a service like LaunchPass that sits between them, or a direct webhook integration built with n8n. This guide covers both approaches with real setup steps, honest cost comparisons at every revenue level, and the decision framework to know which one to build.

What a Stripe Discord Integration Needs to Do

It's not just "add a role when someone pays." A production integration handles the full membership lifecycle:

  • Payment succeeded → assign Discord role immediately
  • Subscription cancelled → remove role at period end
  • Payment failed → dunning sequence, remove after grace period
  • Subscription upgraded/downgraded → swap roles
  • Refund issued → remove access immediately

Every gap in that list is a member who keeps access after cancelling, or loses access incorrectly and churns unnecessarily. Get the full lifecycle right from the start.

Option 1: LaunchPass (Fastest Setup)

LaunchPass is built specifically for paid Discord communities. Connect your Stripe account, link your Discord server, set a price, and share the payment link. LaunchPass's bot handles role assignment on payment and role removal on cancellation automatically.

Supports: recurring subscriptions, one-time payments, free trials, multiple tiers, Apple Pay and PayPal alongside Stripe.

Cost: 3.5% of revenue + Stripe's standard 2.9% + $0.30 per transaction.
Setup time: under 30 minutes.
Best for: under $2k MRR, single tier, want to launch today.

Option 2: Whop

Whop is a broader marketplace platform that includes Discord access management. The key difference from LaunchPass: Whop has a marketplace where you can list your community for organic discovery. Takes 3% of revenue + Stripe fees.

Best for: communities that want marketplace traffic alongside direct sales.

Option 3: Custom n8n Webhook (No Platform Fee)

The direct webhook approach connects Stripe to Discord's API through n8n — no intermediary platform, no revenue cut. You pay only Stripe's standard rate and ~$7/month VPS hosting.

Real Cost Comparison

MRRLaunchPass (3.5%)Whop (3%)Custom n8nMonthly saving vs LaunchPass
$500$17.50$15$7$10.50
$1,000$35$30$7$28
$2,500$87.50$75$7$80.50
$5,000$175$150$7$168
$10,000$350$300$7$343

At $2.5k MRR, the custom n8n setup pays back its build cost in about a month.

How to Build the Custom n8n Integration

Step 1: Create a Discord Bot

Go to discord.com/developers/applications and create a new application. Under Bot, create a bot and save the token. Under OAuth2, give it the bot scope and the Manage Roles permission. Invite it to your server. Critical: your bot's role must sit above the roles it manages in your server's role hierarchy — this trips up nearly everyone on first setup.

Step 2: Collect Discord User IDs at Checkout

Stripe needs to know which Discord user to add. Add a custom field to your Stripe Checkout Session:

custom_fields: [
  {
    key: 'discord_username',
    label: { type: 'custom', custom: 'Your Discord Username' },
    type: 'text'
  }
]

Store this in Stripe customer metadata. You'll reference it in every subsequent webhook event for that customer.

Step 3: Set Up the n8n Webhook Receiver

Create a new n8n workflow with a Webhook trigger node. Copy the webhook URL. In your Stripe dashboard, go to Webhooks and add that URL as an endpoint. Subscribe to these events:

  • invoice.payment_succeeded
  • customer.subscription.deleted
  • invoice.payment_failed
  • customer.subscription.updated

Step 4: Build the Role Logic

Add a Switch node routing on the Stripe event type field:

  • invoice.payment_succeeded → HTTP Request → Discord API → PUT /guilds/{guild_id}/members/{user_id}/roles/{role_id}
  • customer.subscription.deleted → HTTP Request → Discord API → DELETE /guilds/{guild_id}/members/{user_id}/roles/{role_id}
  • invoice.payment_failed → Wait node (3 days) → check if still unpaid → remove role

All Discord API calls need the Authorization header: Bot YOUR_BOT_TOKEN.

Step 5: Handle Multi-Tier Subscriptions

For multiple price tiers, add a lookup table inside n8n mapping each Stripe Price ID to the correct Discord role ID. On subscription events, extract the price ID, look up the role, and assign or swap accordingly.

Step 6: Test Every Event Type

Use Stripe's webhook testing tool to fire each event type and verify the correct action happens in Discord. Pay special attention to the invoice.payment_failed flow — use Stripe's test card 4000 0000 0000 0341 to simulate a payment failure and confirm the grace period logic fires correctly before access is removed.

Common Failure Points to Avoid

  • Bot role hierarchy — bot role must be higher than managed roles. Check this first if role assignment silently fails.
  • User left the server — handle 404s from Discord gracefully. Don't crash the workflow when a user isn't in the server.
  • Webhook signature verification — always verify Stripe's Stripe-Signature header in n8n to reject spoofed events.
  • Race conditions — add idempotency checks when two events fire simultaneously for the same customer.

ShipWorkflow Builds This For You

ShipWorkflow builds and maintains Stripe-to-Discord integrations for paid community operators — full webhook setup, multi-tier role management, failed payment recovery, and welcome automation. Get in touch if you want it done right without building it yourself.