Most guides on connecting Stripe to Discord cover the same 20%: webhook fires on payment, Discord role gets assigned. The other 80% — failed payment handling, cancellation offboarding, tier upgrades, win-back sequences — is where most paid Discord communities leave revenue and members on the table.

This guide covers the complete Stripe Discord membership automation stack: every lifecycle event, what should happen at each stage, and how to build it without writing code.

The four lifecycle events every Stripe Discord membership must automate

Event Stripe Webhook Discord Action Additional Actions
New payment checkout.session.completed Assign member role, send welcome DM Enrol in onboarding email, create CRM record
Cancellation customer.subscription.deleted Remove member role, send offboarding DM Tag as cancelled in CRM, trigger win-back email
Payment failed invoice.payment_failed No role change — grace period starts Send dunning DM and email immediately
Failed payment recovered invoice.payment_succeeded Confirm role active, send recovery DM Cancel dunning sequence, update CRM status

A community that only automates the payment event and ignores the rest leaks members through failed payments and slow cancellation handling. The full automation stack is what allows a Discord community to run without daily admin work.

Tools required

  • Stripe — payment processor. You already have this.
  • Discord — community platform.
  • n8n — the automation layer connecting Stripe events to Discord actions. Cloud starts at ~$20/month. No coding required — visual node canvas.
  • Airtable — member database linking Stripe emails to Discord user IDs. Free plan handles most community sizes.
  • Discord bot — created free via discord.com/developers/applications. Executes role changes via the Discord API.

The Discord user ID problem — and how to solve it

Stripe knows members by email. Discord needs a user ID. These don't connect natively, and every Stripe Discord membership automation requires solving this once per member.

The solution is an OAuth join flow. After payment, redirect the new member to a Discord authorisation page. They log in with Discord, Discord returns their user ID, and you store it in Airtable linked to their Stripe email. All future automation events look up this mapping to get the Discord user ID for the corresponding Stripe customer.

If you use a platform like LaunchPass or Whop, this OAuth step is handled automatically. If you build in n8n, you build this redirect once and it runs for every new member.

How the full automation works: event by event

New payment — checkout.session.completed

Stripe fires this the moment a checkout is completed. n8n receives it, looks up the Discord user ID from Airtable by email, assigns the member role via the Discord API, sends a welcome DM, and enrols the member in your onboarding email sequence. Total time from payment confirmation to Discord access: under 2 seconds.

Cancellation — customer.subscription.deleted

When a member cancels, Stripe fires this event at the end of the billing period (or immediately, depending on your Stripe cancellation settings). n8n routes to the offboarding branch: look up Discord user ID, remove the member role, send an offboarding DM, tag the member as cancelled in your CRM, and trigger a win-back email sequence. Win-back sequences typically recover 15–30% of churned members who cancelled for payment or life-event reasons rather than dissatisfaction.

Failed payment — invoice.payment_failed

Don't remove Discord access immediately when a payment fails. Stripe retries automatically over 7–14 days (configurable in Stripe settings). Meanwhile, n8n sends an immediate dunning DM in Discord and a dunning email with the payment update link. Add a Wait node in n8n set to 4 days — if the payment recovers within that window, the grace period cancels. If not, remove the role and trigger the offboarding sequence.

Payment recovery — invoice.payment_succeeded after failure

When a failed payment recovers, Stripe fires this event. n8n's recovery branch cancels the pending role removal (if still inside the Wait node), confirms the member's role is still active, and sends a recovery confirmation DM. No manual intervention at any stage.

Multi-tier Discord memberships

For communities with multiple access tiers — Basic, Pro, VIP — the automation adds one step: a Stripe price ID to Discord role ID mapping. When a payment fires, n8n reads the product purchased, looks up the corresponding Discord role, and assigns it. For upgrades and downgrades, the customer.subscription.updated event triggers a role swap: remove the old role, assign the new one.

This is where custom n8n builds outperform platforms like LaunchPass or Whop. Platform upgrade logic is fixed. n8n gives you complete control over how role transitions, grace periods, and tier-specific onboarding sequences work.

Build it yourself or use a platform?

Under $1,000 MRR: platforms like Whop (3% fee) or LaunchPass (3.5% + $0.50/member) are the right starting point. Zero setup, handles the OAuth join flow, works immediately.

Above $1,500 MRR, the platform fees compound. At $5,000 MRR you're paying $150–250/month for something n8n handles for $20. At $10,000 MRR that gap is $280–450/month — money that stays in your pocket with a custom build.

For the full step-by-step n8n webhook build, see our complete Stripe to Discord automation guide. For a comparison of the platform options, see Stripe Discord bot options compared.

If you want the full membership lifecycle automation built and tested for your community, book a strategy call.