Add paying customers to your Discord server with an optional role, and remove them automatically when their access ends.
The Discord entitlement adds a paying customer to your Discord server and can assign them a role. The customer connects their Discord account after their subscription becomes active or their one-time payment succeeds. When the grant is revoked, for example on cancellation or refund, Dodo Payments removes the role and removes the customer from the server.
The customer connects their Discord account from the Customer Portal. The payment confirmation email marks the entitlement Action Required and links to the portal.
After they authorize, the Dodo Payments bot adds them to your server, or finds their existing membership, and assigns the role you configured.
If you don’t pick a role, the customer gets server membership only.
Use it for paid communities, supporter perks, and tiered access channels.
In the Dodo Payments dashboard, go to Entitlements and click + to start a new entitlement.
2
Pick Discord
Choose Discord Access as the integration. If Discord isn’t connected for your business yet, click Connect Discord.
Connect Discord prompt before the OAuth handoff.
Discord opens in a new tab. Sign in, pick the server you want to gate, and approve the bot’s permissions on that server: Manage Roles, Kick Members, and Create Invite.
Discord OAuth: pick the server to add the bot to.
Discord OAuth: confirm the bot's permissions on the server.
When Discord redirects back, a confirmation page shows that the server is connected.
Server connected. Return to the Dodo Payments dashboard to continue.
3
Pick a Server and Role
Back in the dashboard, select the Server you connected. To assign a role on delivery, select it under Role. To grant server membership only, leave Role set to No specific role. Enter a Name for the entitlement and click Create Entitlement.
Dodo Payments creates a grant in Pending status. Dodo Payments tries to create a Discord authorization URL right away and stores it in oauth_url. If that fails, oauth_url stays null until the customer starts the accept flow.
The payment confirmation email lists the entitlement as Action Required and links to the Customer Portal. In the portal, the customer clicks Connect on the entitlement.
The customer authorizes Dodo Payments on Discord. The bot adds them to the server and assigns the configured role, and the grant moves to Delivered.
When the grant is revoked (the subscription is cancelled, paused, put on hold, or expires, the one-time payment is refunded, or you revoke the grant), the bot removes the role and removes the customer from the server. The grant moves to Revoked.
An authorization link expires 30 minutes after it’s generated. If the customer returns to the Customer Portal after that, Dodo Payments generates a new link. If a customer leaves your server on their own, Dodo Payments revokes their grant with revocation_reason: platform_external.
Place the Dodo Payments bot’s role above the role you grant. Discord doesn’t let a bot assign a role at or above its own highest role. Managed roles, such as bot and integration roles, can’t be assigned.
// client is a *dodopayments.Client, for example from// dodopayments.NewClient(option.WithEnvironmentTestMode()); ctx is a context.Context.client.Entitlements.New(ctx, dodopayments.EntitlementNewParams{ Name: dodopayments.F("Patrons Discord Role"), IntegrationType: dodopayments.F(dodopayments.EntitlementIntegrationTypeDiscord), IntegrationConfig: dodopayments.F[dodopayments.IntegrationConfigUnionParam]( dodopayments.IntegrationConfigDiscordConfigParam{ GuildID: dodopayments.F("123456789012345678"), RoleID: dodopayments.F("987654321098765432"), }, ),})
entitlement_grant.created fires with status: "Pending". oauth_url may already hold the authorization URL. If it is null, it is populated once the customer starts the accept flow from the Customer Portal.
entitlement_grant.delivered fires once the customer joins the server and the role is assigned.
entitlement_grant.revoked fires when the role is removed and the customer is removed from the server.
The grant stays Pending until the customer completes the Discord authorization. Open the entitlement in the dashboard and check the customer’s grant. If it’s still Pending, ask the customer to open the Customer Portal and click Connect on the Discord entitlement.
Grant moves to failed with permission errors
Make sure the Dodo Payments bot is still in the server, has the Manage Roles permission, and sits above the role being assigned. If the bot is removed from the server, Dodo Payments revokes the server’s pending and delivered grants. Re-saving the entitlement checks only its settings, not the bot’s permissions. After you fix the permissions, ask the customer to open the Customer Portal and click Connect on the Discord entitlement to retry the grant.
Customer cancelled but still has the role
Revocation removes the role and removes the customer from the server. If the grant shows Revoked but the customer is still in the server, confirm the bot still has the Manage Roles and Kick Members permissions and sits above the role. If the customer’s Discord app still shows the role, ask them to refresh it. The server-side state is the source of truth.
Last modified on September 26, 2026
Was this page helpful?
⌘I
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"Dodo Payments Documentation","description":"Documentation for Dodo Payments — the all-in-one payments, billing, and merchant of record platform for SaaS, AI, and digital products.","colors":{"primary":"#779812","light":"#C6FE1E","dark":"#166534"},"logo":{"light":"https://mintcdn.com/dodopayments/nM_mJfYkri-OpC5M/logo/light.svg?fit=max\u0026auto=format\u0026n=nM_mJfYkri-OpC5M\u0026q=85\u0026s=23f7a052f7ecb9d6570b7c95ee359a97","dark":"https://mintcdn.com/dodopayments/nM_mJfYkri-OpC5M/logo/dark.svg?fit=max\u0026auto=format\u0026n=nM_mJfYkri-OpC5M\u0026q=85\u0026s=cd6c20238a54526436f21c43fee51b26"},"favicon":"https://mintcdn.com/dodopayments/doYQc9oUE-WNz0cs/favicon.svg?fit=max\u0026auto=format\u0026n=doYQc9oUE-WNz0cs\u0026q=85\u0026s=271c6cc8ce7d6bf4d7f2b9cca029e004","background":{"color":{"light":"#FFFFFF","dark":"#0D0D0D"}},"navbar":{"links":[{"icon":"link","href":"https://docs.dodopayments.com/llms-full.txt","label":"llms-full.txt"},{"icon":"discord","href":"https://discord.gg/bYqAp4ayYh","label":"Community"},{"icon":"house","href":"https://app.dodopayments.com/","label":"Dashboard"}]},"footer":{"socials":{"x":"https://x.com/dodopayments","linkedin":"https://linkedin.com/company/dodopayments","website":"https://dodopayments.com","discord":"https://discord.gg/bYqAp4ayYh","github":"https://github.com/dodopayments","instagram":"https://www.instagram.com/dodo.payments","facebook":"https://www.facebook.com/profile.php?id=61565515607280"}},"seo":{"metatags":{"og:site_name":"Dodo Payments Documentation","twitter:card":"summary_large_image"},"indexing":"navigable"},"fonts":{"heading":{"family":"ApfelGrotezk","weight":400,"source":"fonts/ApfelGrotezk-Regular.woff2","format":"woff2"},"body":{"family":"Inter","weight":400,"source":"fonts/Inter-Variable.woff2","format":"woff2"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","cursor"],"display":"header"},"metadata":{"timestamp":true},"styling":{"latex":true},"navigation":{"languages":[{"language":"en","href":"introduction"},{"language":"es","href":"es/introduction"},{"language":"ar","href":"ar/introduction"},{"language":"fr","href":"fr/introduction"},{"language":"de","href":"de/introduction"},{"language":"id","href":"id/introduction"},{"language":"ja","href":"ja/introduction"},{"language":"ko","href":"ko/introduction"},{"language":"pt-BR","href":"pt-BR/introduction"},{"language":"vi","href":"vi/introduction"},{"language":"cn","href":"cn/introduction"},{"language":"hi","href":"hi/introduction"},{"language":"it","href":"it/introduction"},{"language":"sv","href":"sv/introduction"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"dodopayments","hasAudioNarration":false,"actualSubdomain":"dodopayments","customDomains":["docs.dodopayments.com"],"gitSource":{"type":"github","owner":"dodopayments","repo":"dodo-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":false,"issues":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af4027c778b6a49d3c24d62","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"en","tag":"API Reference","count":181},{"language":"en","tag":"Docs","count":176},{"language":"ar","tag":"Docs","count":153},{"language":"cn","tag":"Docs","count":153},{"language":"de","tag":"Docs","count":153},{"language":"es","tag":"Docs","count":153},{"language":"fr","tag":"Docs","count":153},{"language":"hi","tag":"Docs","count":153},{"language":"id","tag":"Docs","count":153},{"language":"it","tag":"Docs","count":153},{"language":"ja","tag":"Docs","count":153},{"language":"ko","tag":"Docs","count":153},{"language":"pt-BR","tag":"Docs","count":153},{"language":"sv","tag":"Docs","count":153},{"language":"vi","tag":"Docs","count":153},{"language":"ar","tag":"API Reference","count":151},{"language":"cn","tag":"API Reference","count":151},{"language":"de","tag":"API Reference","count":151},{"language":"es","tag":"API Reference","count":151},{"language":"fr","tag":"API Reference","count":151},{"language":"hi","tag":"API Reference","count":151},{"language":"id","tag":"API Reference","count":151},{"language":"it","tag":"API Reference","count":151},{"language":"ja","tag":"API Reference","count":151},{"language":"ko","tag":"API Reference","count":151},{"language":"pt-BR","tag":"API Reference","count":151},{"language":"sv","tag":"API Reference","count":151},{"language":"vi","tag":"API Reference","count":151},{"language":"en","tag":"Features","count":86},{"language":"ar","tag":"Features","count":81},{"language":"cn","tag":"Features","count":81},{"language":"de","tag":"Features","count":81},{"language":"es","tag":"Features","count":81},{"language":"fr","tag":"Features","count":81},{"language":"hi","tag":"Features","count":81},{"language":"id","tag":"Features","count":81},{"language":"it","tag":"Features","count":81},{"language":"ja","tag":"Features","count":81},{"language":"ko","tag":"Features","count":81},{"language":"pt-BR","tag":"Features","count":81},{"language":"sv","tag":"Features","count":81},{"language":"vi","tag":"Features","count":81},{"language":"en","tag":"Integrate","count":74},{"language":"en","tag":"Changelog","count":66},{"language":"ar","tag":"Changelog","count":65},{"language":"cn","tag":"Changelog","count":65},{"language":"de","tag":"Changelog","count":65},{"language":"es","tag":"Changelog","count":65},{"language":"fr","tag":"Changelog","count":65},{"language":"hi","tag":"Changelog","count":65},{"language":"id","tag":"Changelog","count":65},{"language":"it","tag":"Changelog","count":65},{"language":"ja","tag":"Changelog","count":65},{"language":"ko","tag":"Changelog","count":65},{"language":"pt-BR","tag":"Changelog","count":65},{"language":"sv","tag":"Changelog","count":65},{"language":"vi","tag":"Changelog","count":65},{"language":"ar","tag":"Integrate","count":59},{"language":"cn","tag":"Integrate","count":59},{"language":"de","tag":"Integrate","count":59},{"language":"es","tag":"Integrate","count":59},{"language":"fr","tag":"Integrate","count":59},{"language":"hi","tag":"Integrate","count":59},{"language":"id","tag":"Integrate","count":59},{"language":"it","tag":"Integrate","count":59},{"language":"ja","tag":"Integrate","count":59},{"language":"ko","tag":"Integrate","count":59},{"language":"pt-BR","tag":"Integrate","count":59},{"language":"sv","tag":"Integrate","count":59},{"language":"vi","tag":"Integrate","count":59},{"language":"en","tag":"External Integrations","count":33},{"language":"ar","tag":"External Integrations","count":30},{"language":"cn","tag":"External Integrations","count":30},{"language":"de","tag":"External Integrations","count":30},{"language":"es","tag":"External Integrations","count":30},{"language":"fr","tag":"External Integrations","count":30},{"language":"hi","tag":"External Integrations","count":30},{"language":"id","tag":"External Integrations","count":30},{"language":"it","tag":"External Integrations","count":30},{"language":"ja","tag":"External Integrations","count":30},{"language":"ko","tag":"External Integrations","count":30},{"language":"pt-BR","tag":"External Integrations","count":30},{"language":"sv","tag":"External Integrations","count":30},{"language":"vi","tag":"External Integrations","count":30},{"language":"en","tag":"Webhooks","count":23},{"language":"ar","tag":"Webhooks","count":23},{"language":"cn","tag":"Webhooks","count":23},{"language":"de","tag":"Webhooks","count":23},{"language":"es","tag":"Webhooks","count":23},{"language":"fr","tag":"Webhooks","count":23},{"language":"hi","tag":"Webhooks","count":23},{"language":"id","tag":"Webhooks","count":23},{"language":"it","tag":"Webhooks","count":23},{"language":"ja","tag":"Webhooks","count":23},{"language":"ko","tag":"Webhooks","count":23},{"language":"pt-BR","tag":"Webhooks","count":23},{"language":"sv","tag":"Webhooks","count":23},{"language":"vi","tag":"Webhooks","count":23},{"language":"en","tag":"Guides","count":22},{"language":"ar","tag":"Guides","count":22},{"language":"cn","tag":"Guides","count":22},{"language":"de","tag":"Guides","count":22},{"language":"es","tag":"Guides","count":22},{"language":"fr","tag":"Guides","count":22},{"language":"hi","tag":"Guides","count":22},{"language":"id","tag":"Guides","count":22},{"language":"it","tag":"Guides","count":22},{"language":"ja","tag":"Guides","count":22},{"language":"ko","tag":"Guides","count":22},{"language":"pt-BR","tag":"Guides","count":22},{"language":"sv","tag":"Guides","count":22},{"language":"vi","tag":"Guides","count":22},{"language":"en","tag":"Entitlements","count":20},{"language":"ar","tag":"Entitlements","count":20},{"language":"cn","tag":"Entitlements","count":20},{"language":"de","tag":"Entitlements","count":20},{"language":"es","tag":"Entitlements","count":20},{"language":"fr","tag":"Entitlements","count":20},{"language":"hi","tag":"Entitlements","count":20},{"language":"id","tag":"Entitlements","count":20},{"language":"it","tag":"Entitlements","count":20},{"language":"ja","tag":"Entitlements","count":20},{"language":"ko","tag":"Entitlements","count":20},{"language":"pt-BR","tag":"Entitlements","count":20},{"language":"sv","tag":"Entitlements","count":20},{"language":"vi","tag":"Entitlements","count":20},{"language":"en","tag":"Invoices","count":17},{"language":"ar","tag":"Customers","count":16},{"language":"cn","tag":"Customers","count":16},{"language":"de","tag":"Customers","count":16},{"language":"es","tag":"Customers","count":16},{"language":"fr","tag":"Customers","count":16},{"language":"hi","tag":"Customers","count":16},{"language":"id","tag":"Customers","count":16},{"language":"it","tag":"Customers","count":16},{"language":"ja","tag":"Customers","count":16},{"language":"ko","tag":"Customers","count":16},{"language":"pt-BR","tag":"Customers","count":16},{"language":"sv","tag":"Customers","count":16},{"language":"vi","tag":"Customers","count":16}]},"assistantConfig":{"deflection":{"enabled":false,"email":"support@dodopayments.com","showHelpButton":true}},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"styles.css","content":"#content-area{max-width:60rem}h1,h2,h3,h4,h5,h6{letter-spacing:0.05em!important}.welcome-page .card-group{margin:3rem auto 8rem;max-width:70rem;padding-left:1.25rem;padding-right:1.25rem}.welcome-page .card-group .card{padding:1rem}.welcome-hero{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:20vh;text-align:center;margin-top:3rem;margin-bottom:2.5rem}.welcome-hero h1{font-size:2.5rem;font-weight:700;margin-bottom:1rem;line-height:1.2;color:#fff}.welcome-hero p{font-size:1.25rem;max-width:600px;margin:0 auto}.welcome-hero h1{color:rgb(41 42 37 / 1)}.dark .welcome-hero h1{color:rgb(255 255 255 / 1)}.welcome-hero p{color:rgb(83 85 79 / 1)}.dark .welcome-hero p{color:rgb(162 164 158 / 1)}"}],"page":{"pagePath":"features/entitlements/discord","slug":"/features/entitlements/discord","pageMetadata":{"title":"Discord Entitlement","sidebarTitle":"Discord","description":"Add paying customers to your Discord server with an optional role, and remove them automatically when their access ends.","icon":"discord","keywords":["Dodo Payments","Discord","entitlement","Discord role","community access"],"href":"/features/entitlements/discord"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Add paying customers to your Discord server with an optional role, and remove them automatically when their access ends.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,CodeBlock,CodeGroup,Frame,Heading,Info,OptimizedImage,Step,Steps,Table,Tip}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!CodeGroup)_missingMdxReference(`CodeGroup`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(Info,{children:_jsx(_components.p,{children:`The Discord entitlement adds a paying customer to your Discord server and can assign them a role. The customer connects their Discord account after their subscription becomes active or their one-time payment succeeds. When the grant is revoked, for example on cancellation or refund, Dodo Payments removes the role and removes the customer from the server.`})}),`\n`,_jsx(Heading,{level:`2`,id:`what-gets-delivered`,children:`What Gets Delivered`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The customer connects their Discord account from the Customer Portal. The payment confirmation email marks the entitlement `,_jsx(_components.strong,{children:`Action Required`}),` and links to the portal.`]}),`\n`,_jsx(_components.li,{children:`After they authorize, the Dodo Payments bot adds them to your server, or finds their existing membership, and assigns the role you configured.`}),`\n`,_jsx(_components.li,{children:`If you don’t pick a role, the customer gets server membership only.`}),`\n`]}),`\n`,_jsx(_components.p,{children:`Use it for paid communities, supporter perks, and tiered access channels.`}),`\n`,_jsx(Heading,{level:`2`,id:`connect-discord`,children:`Connect Discord`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open Entitlements`,children:_jsxs(_components.p,{children:[`In the Dodo Payments dashboard, go to `,_jsx(_components.strong,{children:`Entitlements`}),` and click `,_jsx(_components.strong,{children:`+`}),` to start a new entitlement.`]})}),_jsxs(Step,{title:`Pick Discord`,children:[_jsxs(_components.p,{children:[`Choose `,_jsx(_components.strong,{children:`Discord Access`}),` as the integration. If Discord isn’t connected for your business yet, click `,_jsx(_components.strong,{children:`Connect Discord`}),`.`]}),_jsx(Frame,{caption:`Connect Discord prompt before the OAuth handoff.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/connect-prompt.png?fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=8a34c436dd7510942db2a9221f623938`,alt:`New entitlement panel prompting the merchant to connect Discord`,style:{maxHeight:`500px`,width:`auto`},\"data-og-width\":`2844`,width:`2844`,\"data-og-height\":`1622`,height:`1622`,\"data-path\":`images/entitlements/discord/connect-prompt.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/connect-prompt.png?w=280\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=80a90ce4a602bf3a2019f76c57f76571 280w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/connect-prompt.png?w=560\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=315a0a9625630a619dd064bfc3d46495 560w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/connect-prompt.png?w=840\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=b019dbe6d66630ba1f3d459f487d6100 840w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/connect-prompt.png?w=1100\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=aeb49ba303909dde28dbf66d26793cc9 1100w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/connect-prompt.png?w=1650\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=8c7714357bca9cfc57054e053a442dce 1650w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/connect-prompt.png?w=2500\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=fb0074b7cd6da4cee8ec266b5727e558 2500w`})}),_jsxs(_components.p,{children:[`Discord opens in a new tab. Sign in, pick the server you want to gate, and approve the bot’s permissions on that server: `,_jsx(_components.strong,{children:`Manage Roles`}),`, `,_jsx(_components.strong,{children:`Kick Members`}),`, and `,_jsx(_components.strong,{children:`Create Invite`}),`.`]}),_jsx(Frame,{caption:`Discord OAuth: pick the server to add the bot to.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/oauth-add-bot.png?fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=b57bf306fa15aa3f49b528f803cc625e`,alt:`Discord OAuth screen asking which server to add the Dodo Payments bot to`,style:{maxHeight:`420px`,width:`auto`},\"data-og-width\":`1026`,width:`1026`,\"data-og-height\":`1362`,height:`1362`,\"data-path\":`images/entitlements/discord/oauth-add-bot.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/oauth-add-bot.png?w=280\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=9ebcc6e8114f87ae174af644cf0a1b2c 280w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/oauth-add-bot.png?w=560\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=bb923e0614d18c6dd4327a175e24d13b 560w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/oauth-add-bot.png?w=840\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=52cd505c2e813e71c8ad6132ac8aeb19 840w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/oauth-add-bot.png?w=1100\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=df921f9a89d1bb54ed1cc1bf6e141880 1100w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/oauth-add-bot.png?w=1650\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=90a5fc68c07ed2f7a325b78d1e1e2707 1650w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/oauth-add-bot.png?w=2500\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=17ad7ee8524aeb04a7760f99038e3cc9 2500w`})}),_jsx(Frame,{caption:`Discord OAuth: confirm the bot's permissions on the server.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/oauth-permissions.png?fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=438c0b04177e3a4863fb90986f5b95e0`,alt:`Discord bot permission confirmation screen`,style:{maxHeight:`420px`,width:`auto`},\"data-og-width\":`1038`,width:`1038`,\"data-og-height\":`1472`,height:`1472`,\"data-path\":`images/entitlements/discord/oauth-permissions.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/oauth-permissions.png?w=280\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=8bd22223c7f709512277dc11fce14ec8 280w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/oauth-permissions.png?w=560\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=634d113e4795203dc04e70478223cc21 560w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/oauth-permissions.png?w=840\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=65ae6681480c271ffed0f81f2024921c 840w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/oauth-permissions.png?w=1100\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=158738713e43c63ad505c4a762d81c92 1100w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/oauth-permissions.png?w=1650\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=ab39fe821dd603c70ae839b1b2097295 1650w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/oauth-permissions.png?w=2500\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=768b68192d05254982789bf68dc8cca3 2500w`})}),_jsx(_components.p,{children:`When Discord redirects back, a confirmation page shows that the server is connected.`}),_jsx(Frame,{caption:`Server connected. Return to the Dodo Payments dashboard to continue.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/connected.png?fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=bd1cbb3f9960e4eb1881d7a818dc6f16`,alt:`Discord Access connected successfully confirmation page`,style:{maxHeight:`500px`,width:`auto`},\"data-og-width\":`2000`,width:`2000`,\"data-og-height\":`1140`,height:`1140`,\"data-path\":`images/entitlements/discord/connected.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/connected.png?w=280\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=7c6bfc974529187857b6c5848bf1c8c5 280w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/connected.png?w=560\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=1920933e2dcba6fdf8ea125303e608be 560w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/connected.png?w=840\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=d24c947223c229d68e4838372d8ca2d6 840w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/connected.png?w=1100\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=c8872cc7aec50f631e0a794fd35e5d2c 1100w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/connected.png?w=1650\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=0927f0cf9cf44aa5c44d3258855ef58e 1650w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/connected.png?w=2500\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=d8d0a32d0e704213fa0dd4c0383460ef 2500w`})})]}),_jsxs(Step,{title:`Pick a Server and Role`,children:[_jsxs(_components.p,{children:[`Back in the dashboard, select the `,_jsx(_components.strong,{children:`Server`}),` you connected. To assign a role on delivery, select it under `,_jsx(_components.strong,{children:`Role`}),`. To grant server membership only, leave `,_jsx(_components.strong,{children:`Role`}),` set to `,_jsx(_components.strong,{children:`No specific role`}),`. Enter a `,_jsx(_components.strong,{children:`Name`}),` for the entitlement and click `,_jsx(_components.strong,{children:`Create Entitlement`}),`.`]}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/create.png?fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=79e95041881d2925e58fc752280d508e`,alt:`New Entitlement - Discord Access form with connected server, server picker, role dropdown, and name field`,style:{maxHeight:`500px`,width:`auto`},\"data-og-width\":`1196`,width:`1196`,\"data-og-height\":`1564`,height:`1564`,\"data-path\":`images/entitlements/discord/create.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/create.png?w=280\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=c59e5ef956446f5ac2f51cf547299987 280w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/create.png?w=560\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=cc24d359cfda5807265319b7cd96e2d0 560w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/create.png?w=840\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=3abd4fa942e351c9cc76cf6be0032554 840w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/create.png?w=1100\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=8630de37a9f57fc183f6f25b75c15dc7 1100w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/create.png?w=1650\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=bb34bffe7f18f75563f6788158b82881 1650w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/discord/create.png?w=2500\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=4a93adc16ad9b235641066e294583a1d 2500w`})})]}),_jsx(Step,{title:`Attach It to a Product`,children:_jsxs(_components.p,{children:[`The entitlement is saved and available to attach to any product. See `,_jsx(_components.a,{href:`/features/entitlements/introduction#attach-entitlements-to-products`,children:`Attach Entitlements to Products`}),`.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`customer-flow`,children:`Customer Flow`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`The customer completes checkout.`}),`\n`,_jsxs(_components.li,{children:[`Dodo Payments creates a grant in `,_jsx(_components.code,{children:`Pending`}),` status. Dodo Payments tries to create a Discord authorization URL right away and stores it in `,_jsx(_components.code,{children:`oauth_url`}),`. If that fails, `,_jsx(_components.code,{children:`oauth_url`}),` stays `,_jsx(_components.code,{children:`null`}),` until the customer starts the accept flow.`]}),`\n`,_jsxs(_components.li,{children:[`The payment confirmation email lists the entitlement as `,_jsx(_components.strong,{children:`Action Required`}),` and links to the Customer Portal. In the portal, the customer clicks `,_jsx(_components.strong,{children:`Connect`}),` on the entitlement.`]}),`\n`,_jsxs(_components.li,{children:[`The customer authorizes Dodo Payments on Discord. The bot adds them to the server and assigns the configured role, and the grant moves to `,_jsx(_components.code,{children:`Delivered`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`When the grant is revoked (the subscription is cancelled, paused, put on hold, or expires, the one-time payment is refunded, or you revoke the grant), the bot removes the role and removes the customer from the server. The grant moves to `,_jsx(_components.code,{children:`Revoked`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`An authorization link expires 30 minutes after it’s generated. If the customer returns to the Customer Portal after that, Dodo Payments generates a new link. If a customer leaves your server on their own, Dodo Payments revokes their grant with `,_jsx(_components.code,{children:`revocation_reason: platform_external`}),`.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Place the Dodo Payments bot’s role `,_jsx(_components.strong,{children:`above`}),` the role you grant. Discord doesn’t let a bot assign a role at or above its own highest role. Managed roles, such as bot and integration roles, can’t be assigned.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`required-configuration`,children:`Required Configuration`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Required`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`guild_id`})}),_jsx(_components.td,{children:`Yes`}),_jsx(_components.td,{children:`The Discord server (guild) ID. The dashboard’s server picker fills this in for you.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`role_id`})}),_jsx(_components.td,{children:`No`}),_jsxs(_components.td,{children:[`The role to assign on delivery. Omit it, or pass `,_jsx(_components.code,{children:`null`}),`, for server-membership-only access.`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`create-via-api`,children:`Create via API`}),`\n`,_jsxs(CodeGroup,{children:[_jsx(CodeBlock,{filename:`TypeScript`,expandable:`true`,numberOfLines:`15`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`15`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` DodoPayments`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'dodopayments'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` client`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` DodoPayments`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` bearerToken:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` process`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`env`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'DODO_PAYMENTS_API_KEY'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` environment:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'test_mode'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` entitlement`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`entitlements`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`create`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` name:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Patrons Discord Role'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` integration_type:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'discord'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` integration_config:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` guild_id:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '123456789012345678'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` role_id:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '987654321098765432'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Python`,expandable:`true`,numberOfLines:`16`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`16`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` os`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` dodopayments `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` DodoPayments`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`client `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` DodoPayments(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` bearer_token`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`os.environ.get(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"DODO_PAYMENTS_API_KEY\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` environment`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"test_mode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`entitlement `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` client.entitlements.create(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` name`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Patrons Discord Role\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` integration_type`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"discord\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:` integration_config`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"guild_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"123456789012345678\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"role_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"987654321098765432\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Go`,expandable:`true`,numberOfLines:`12`,language:`go`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`go`,children:_jsxs(_components.code,{language:`go`,numberOfLines:`12`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// client is a *dodopayments.Client, for example from`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// dodopayments.NewClient(option.WithEnvironmentTestMode()); ctx is a context.Context.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`client`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Entitlements`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`New`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`ctx`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`dodopayments`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`EntitlementNewParams`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`dodopayments`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`F`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Patrons Discord Role\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` IntegrationType`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`dodopayments`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`F`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`dodopayments`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`EntitlementIntegrationTypeDiscord`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` IntegrationConfig`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`dodopayments`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`F`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`dodopayments`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`IntegrationConfigUnionParam`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`](`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` dodopayments`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`IntegrationConfigDiscordConfigParam`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` GuildID`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`dodopayments`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`F`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"123456789012345678\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` RoleID`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`dodopayments`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`F`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"987654321098765432\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ),`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`})`})}),`\n`]})})})]}),`\n`,_jsx(Heading,{level:`2`,id:`webhooks`,children:`Webhooks`}),`\n`,_jsxs(_components.p,{children:[`Subscribe to the `,_jsxs(_components.a,{href:`/developer-resources/webhooks/intents/entitlement-grant`,children:[_jsx(_components.code,{children:`entitlement_grant.*`}),` webhook events`]}),` to track Discord grants:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`entitlement_grant.created`}),` fires with `,_jsx(_components.code,{children:`status: \"Pending\"`}),`. `,_jsx(_components.code,{children:`oauth_url`}),` may already hold the authorization URL. If it is `,_jsx(_components.code,{children:`null`}),`, it is populated once the customer starts the accept flow from the Customer Portal.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`entitlement_grant.delivered`}),` fires once the customer joins the server and the role is assigned.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`entitlement_grant.revoked`}),` fires when the role is removed and the customer is removed from the server.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Customer never sees the role assigned`,id:`customer-never-sees-the-role-assigned`,children:_jsxs(_components.p,{children:[`The grant stays `,_jsx(_components.code,{children:`Pending`}),` until the customer completes the Discord authorization. Open the entitlement in the dashboard and check the customer’s grant. If it’s still `,_jsx(_components.code,{children:`Pending`}),`, ask the customer to open the Customer Portal and click `,_jsx(_components.strong,{children:`Connect`}),` on the Discord entitlement.`]})}),_jsx(Accordion,{title:`Grant moves to failed with permission errors`,id:`grant-moves-to-failed-with-permission-errors`,children:_jsxs(_components.p,{children:[`Make sure the Dodo Payments bot is still in the server, has the `,_jsx(_components.strong,{children:`Manage Roles`}),` permission, and sits above the role being assigned. If the bot is removed from the server, Dodo Payments revokes the server’s pending and delivered grants. Re-saving the entitlement checks only its settings, not the bot’s permissions. After you fix the permissions, ask the customer to open the Customer Portal and click `,_jsx(_components.strong,{children:`Connect`}),` on the Discord entitlement to retry the grant.`]})}),_jsx(Accordion,{title:`Customer cancelled but still has the role`,id:`customer-cancelled-but-still-has-the-role`,children:_jsxs(_components.p,{children:[`Revocation removes the role and removes the customer from the server. If the grant shows `,_jsx(_components.code,{children:`Revoked`}),` but the customer is still in the server, confirm the bot still has the `,_jsx(_components.strong,{children:`Manage Roles`}),` and `,_jsx(_components.strong,{children:`Kick Members`}),` permissions and sits above the role. If the customer’s Discord app still shows the role, ask them to refresh it. The server-side state is the source of truth.`]})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Discord Entitlement","sidebarTitle":"Discord","description":"Add paying customers to your Discord server with an optional role, and remove them automatically when their access ends.","icon":"discord","keywords":["Dodo Payments","Discord","entitlement","Discord role","community access"],"href":"/features/entitlements/discord"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"What Gets Delivered","slug":"what-gets-delivered","depth":2,"children":[]},{"title":"Connect Discord","slug":"connect-discord","depth":2,"children":[]},{"title":"Customer Flow","slug":"customer-flow","depth":2,"children":[]},{"title":"Required Configuration","slug":"required-configuration","depth":2,"children":[]},{"title":"Create via API","slug":"create-via-api","depth":2,"children":[]},{"title":"Webhooks","slug":"webhooks","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/dodopayments/0ee82a08f7b65bcb/seo.js","/_mintlify/custom/dodopayments/6f88c9bbee313616/assistant-loader.js"],"subdomain":"dodopayments","siteName":"Dodo Payments Documentation","title":"Discord Entitlement - Dodo Payments Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/features/entitlements/discord","matchLevel":0},"es":{"href":"/es/features/entitlements/discord","matchLevel":1},"ar":{"href":"/ar/features/entitlements/discord","matchLevel":1},"fr":{"href":"/fr/features/entitlements/discord","matchLevel":1},"de":{"href":"/de/features/entitlements/discord","matchLevel":1},"id":{"href":"/id/features/entitlements/discord","matchLevel":1},"ja":{"href":"/ja/features/entitlements/discord","matchLevel":1},"ko":{"href":"/ko/features/entitlements/discord","matchLevel":1},"pt-BR":{"href":"/pt-BR/features/entitlements/discord","matchLevel":1},"vi":{"href":"/vi/features/entitlements/discord","matchLevel":1},"cn":{"href":"/cn/features/entitlements/discord","matchLevel":1},"hi":{"href":"/hi/features/entitlements/discord","matchLevel":1},"it":{"href":"/it/features/entitlements/discord","matchLevel":1},"sv":{"href":"/sv/features/entitlements/discord","matchLevel":1}}},"lastModified":"2026-09-26T18:16:12.392Z","gitLastModified":"2026-09-26T18:15:17.000Z","originalFileLocation":"features/entitlements/discord.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Add paying customers to your Discord server with an optional role, and remove them automatically when their access ends.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Dodo Payments Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/dodopayments/KuV_TozyHuGHOyyc/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/dodopayments/KuV_TozyHuGHOyyc/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/dodopayments/KuV_TozyHuGHOyyc/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/dodopayments/KuV_TozyHuGHOyyc/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/dodopayments/KuV_TozyHuGHOyyc/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/dodopayments/KuV_TozyHuGHOyyc/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/dodopayments/KuV_TozyHuGHOyyc/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/dodopayments/KuV_TozyHuGHOyyc/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/dodopayments/KuV_TozyHuGHOyyc/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Discord Entitlement - Dodo Payments Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Add paying customers to your Discord server with an optional role, and remove them automatically when their access ends.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Dodo Payments Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.dodopayments.com/features/entitlements/discord\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://dodopayments.mintlify.site/_mintlify/api/og/v2?division=Entitlements\u0026amp;title=Discord+Entitlement\u0026amp;description=Add+paying+customers+to+your+Discord+server+with+an+optional+role%2C+and+remove+them+automatically+when+their+access+ends.\u0026amp;theme=fcc3a546490e883f7462a320\u0026amp;signature=602f68deda38a979f0c551169fd8be9493e949dd1b52dd46ab0430590ed68f3c\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Discord Entitlement - Dodo Payments Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Add paying customers to your Discord server with an optional role, and remove them automatically when their access ends.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://dodopayments.mintlify.site/_mintlify/api/og/v2?division=Entitlements\u0026amp;title=Discord+Entitlement\u0026amp;description=Add+paying+customers+to+your+Discord+server+with+an+optional+role%2C+and+remove+them+automatically+when+their+access+ends.\u0026amp;theme=fcc3a546490e883f7462a320\u0026amp;signature=602f68deda38a979f0c551169fd8be9493e949dd1b52dd46ab0430590ed68f3c\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/dodopayments/KuV_TozyHuGHOyyc/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Dodo Payments Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#779812\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.dodopayments.com/features/entitlements/discord\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/features/entitlements/discord.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.dodopayments.com/features/entitlements/discord\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"es\" href=\"https://docs.dodopayments.com/es/features/entitlements/discord\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ar\" href=\"https://docs.dodopayments.com/ar/features/entitlements/discord\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr\" href=\"https://docs.dodopayments.com/fr/features/entitlements/discord\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"de\" href=\"https://docs.dodopayments.com/de/features/entitlements/discord\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"id\" href=\"https://docs.dodopayments.com/id/features/entitlements/discord\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://docs.dodopayments.com/ja/features/entitlements/discord\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://docs.dodopayments.com/ko/features/entitlements/discord\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"pt-BR\" href=\"https://docs.dodopayments.com/pt-BR/features/entitlements/discord\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"vi\" href=\"https://docs.dodopayments.com/vi/features/entitlements/discord\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://docs.dodopayments.com/cn/features/entitlements/discord\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"hi\" href=\"https://docs.dodopayments.com/hi/features/entitlements/discord\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"it\" href=\"https://docs.dodopayments.com/it/features/entitlements/discord\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"sv\" href=\"https://docs.dodopayments.com/sv/features/entitlements/discord\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.dodopayments.com/features/entitlements/discord\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.dodopayments.com/#organization\",\"name\":\"Dodo Payments Documentation\",\"url\":\"https://docs.dodopayments.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/dodopayments/nM_mJfYkri-OpC5M/logo/light.svg?fit=max\u0026auto=format\u0026n=nM_mJfYkri-OpC5M\u0026q=85\u0026s=23f7a052f7ecb9d6570b7c95ee359a97\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.dodopayments.com#website\",\"name\":\"Dodo Payments Documentation\",\"url\":\"https://docs.dodopayments.com\",\"publisher\":{\"@id\":\"https://docs.dodopayments.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.dodopayments.com/features/entitlements/discord#webpage\",\"url\":\"https://docs.dodopayments.com/features/entitlements/discord\",\"name\":\"Discord Entitlement\",\"description\":\"Add paying customers to your Discord server with an optional role, and remove them automatically when their access ends.\",\"dateModified\":\"2026-09-26T18:15:17.000Z\",\"isPartOf\":{\"@id\":\"https://docs.dodopayments.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.dodopayments.com/features/entitlements/discord#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.dodopayments.com/features/entitlements/discord#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Features\",\"item\":\"https://docs.dodopayments.com/features/products\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Entitlements\",\"item\":\"https://docs.dodopayments.com/features/entitlements/introduction\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Discord Entitlement\",\"item\":\"https://docs.dodopayments.com/features/entitlements/discord\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.dodopayments.com/features/entitlements/discord#article\",\"headline\":\"Discord Entitlement\",\"name\":\"Discord Entitlement\",\"description\":\"Add paying customers to your Discord server with an optional role, and remove them automatically when their access ends.\",\"url\":\"https://docs.dodopayments.com/features/entitlements/discord\",\"mainEntityOfPage\":{\"@id\":\"https://docs.dodopayments.com/features/entitlements/discord#webpage\"},\"dateModified\":\"2026-09-26T18:15:17.000Z\",\"keywords\":\"Dodo Payments, Discord, entitlement, Discord role, community access\",\"publisher\":{\"@id\":\"https://docs.dodopayments.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.dodopayments.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Dodo Payments Documentation\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Dodo Payments Documentation\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/features/entitlements/discord.md","siteName":"Dodo Payments Documentation","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Docs","icon":"book","groups":[{"group":"Getting Started","pages":[{"title":"Welcome to Dodo Payments","sidebarTitle":"Introduction","icon":"rocket","href":"/introduction"},{"title":"Build with AI Coding Agents","sidebarTitle":"AI Coding Agents","icon":"robot","href":"/developer-resources/build-with-ai-coding-agents"},{"title":"Migrate to Dodo Payments","icon":"arrow-right-arrow-left","href":"/migrate-to-dodo"},{"title":"Account Verification","icon":"id-card","href":"/miscellaneous/verification-process"}]},{"group":"Features","pages":[{"sidebarTitle":"Products","title":"Products","icon":"box","href":"/features/products"},{"sidebarTitle":"Product Collections","title":"Product Collections","icon":"layer-group","href":"/features/product-collections"},{"sidebarTitle":"One-Time Payments","title":"One-Time Payments","icon":"credit-card","href":"/features/one-time-payment-products"},{"group":"Subscriptions","icon":"infinity","pages":[{"sidebarTitle":"Subscriptions","title":"Subscriptions","icon":"repeat","href":"/features/subscription"},{"sidebarTitle":"Add-ons","title":"Add-ons for Subscriptions","icon":"puzzle","href":"/features/addons"},{"title":"On-Demand Subscriptions","icon":"bolt","href":"/developer-resources/ondemand-subscriptions"}]},{"group":"Usage Based Billing","icon":"arrow-trend-up","pages":[{"sidebarTitle":"Introduction","title":"Usage-Based Billing","icon":"box","href":"/features/usage-based-billing/introduction"},{"sidebarTitle":"Meters","title":"Meters","icon":"sliders","href":"/features/usage-based-billing/meters"},{"sidebarTitle":"Event Ingestion","title":"Event Ingestion","icon":"bolt","href":"/features/usage-based-billing/event-ingestion"},{"group":"Ingestion Blueprints","icon":"copy","pages":[{"sidebarTitle":"Introduction","title":"Ingestion Blueprints","icon":"box","href":"/features/usage-based-billing/ingestion-blueprints"},{"title":"LLM Blueprint","icon":"brain-circuit","href":"/developer-resources/ingestion-blueprints/llm"},{"title":"API Gateway Blueprint","icon":"cloud","href":"/developer-resources/ingestion-blueprints/api-gateway"},{"title":"Object Storage Blueprint","icon":"box-archive","href":"/developer-resources/ingestion-blueprints/object-storage"},{"title":"Stream Blueprint","icon":"tower-broadcast","href":"/developer-resources/ingestion-blueprints/stream"},{"title":"Time Range Blueprint","icon":"clock","href":"/developer-resources/ingestion-blueprints/time-range"}]}]},{"sidebarTitle":"Credit-Based Billing","title":"Credit-Based Billing","icon":"coins","href":"/features/credit-based-billing"},{"sidebarTitle":"Seat-Based Billing","title":"Seat-Based Billing","icon":"users","href":"/features/seat-based-billing"},{"sidebarTitle":"Hybrid Billing","title":"Hybrid Billing Models","icon":"layer-group","href":"/features/hybrid-billing"},{"title":"Upsells \u0026 Downsells","icon":"arrow-up-right-dots","href":"/features/upsells-and-downsells"},{"group":"Customers","icon":"user-group","pages":[{"title":"Customer Management","icon":"user-group","href":"/features/customers"},{"sidebarTitle":"Customer Portal","title":"Customer Portal","icon":"id-card","href":"/features/customer-portal"},{"title":"Customer Wallets","icon":"wallet","href":"/features/customer-wallet"},{"sidebarTitle":"Sent Emails","title":"Customer Email Logs","icon":"envelope","href":"/features/email-logs"},{"sidebarTitle":"Customer Blocklist","title":"Customer Blocklist","icon":"user-slash","href":"/features/customer-blocklist"}]},{"sidebarTitle":"Discounts","title":"Discounts","icon":"percent","href":"/features/discount-codes"},{"group":"Recovery","icon":"rotate","pages":[{"sidebarTitle":"Overview","title":"Revenue Recovery","icon":"rotate","href":"/features/recovery/overview"},{"sidebarTitle":"Abandoned Cart Recovery","title":"Abandoned Cart Recovery","icon":"cart-shopping","href":"/features/recovery/abandoned-cart-recovery"},{"sidebarTitle":"Subscription Dunning","title":"Subscription Dunning","icon":"repeat","href":"/features/recovery/subscription-dunning"},{"sidebarTitle":"Subscription Payment Retries","title":"Subscription Payment Retries","icon":"arrow-rotate-right","href":"/features/recovery/payment-retries"},{"sidebarTitle":"Manual Retry","title":"Manual Payment Retry","icon":"hand-pointer","href":"/features/recovery/manual-retry"}]},{"group":"Transactions","icon":"credit-card","pages":[{"title":"Payments","icon":"money-bill-transfer","href":"/features/transactions/payments"},{"title":"Refunds","icon":"rotate-left","href":"/features/transactions/refunds"},{"title":"Disputes","icon":"circle-exclamation","href":"/features/transactions/disputes"}]},{"group":"Entitlements","icon":"gift","pages":[{"title":"Introduction","sidebarTitle":"Introduction","icon":"box-archive","href":"/features/entitlements/introduction"},{"title":"License Keys","icon":"key","href":"/features/license-keys"},{"title":"Digital Product Delivery","sidebarTitle":"Digital Products","icon":"download","href":"/features/digital-product-delivery"},{"title":"Feature Flag Entitlement","sidebarTitle":"Feature Flags","description":"Gate features in your own application off a purchase. Feature flag entitlements deliver a boolean capability on payment and revoke it automatically on cancellation.","icon":"flag","href":"/features/entitlements/feature-flags"},{"title":"Discord Entitlement","sidebarTitle":"Discord","icon":"discord","href":"/features/entitlements/discord"},{"title":"GitHub Entitlement","sidebarTitle":"GitHub","description":"Grant customers collaborator access to a private GitHub repository at the permission level you choose, and revoke it automatically on cancellation.","icon":"github","href":"/features/entitlements/github"},{"title":"Telegram Entitlement","sidebarTitle":"Telegram","icon":"telegram","href":"/features/entitlements/telegram"},{"title":"Framer Entitlement","sidebarTitle":"Framer","icon":"puzzle-piece","href":"/features/entitlements/framer"},{"title":"Notion Entitlement","sidebarTitle":"Notion","icon":"book","href":"/features/entitlements/notion"}]},{"group":"Payouts and Balances","icon":"wallet","pages":[{"title":"Payouts Process","icon":"money-bill","href":"/features/payouts/payout-structure"},{"title":"Balances","icon":"file-invoice-dollar","href":"/features/account-summary-payout-wallet"}]},{"group":"Account Management","icon":"user","pages":[{"sidebarTitle":"Archive a Business","title":"Archiving a Business","icon":"box-archive","href":"/features/archive-business"},{"sidebarTitle":"Transfer Ownership","title":"Transferring Business Ownership","icon":"people-arrows","href":"/features/ownership-transfer"},{"sidebarTitle":"Entity Transfer","title":"Transferring Your Business to a New Entity","icon":"building","href":"/features/entity-transfer"},{"title":"Multi-Brand Setup","icon":"building-columns","href":"/features/multi-brands"},{"title":"Invoice Management","icon":"file-invoice-dollar","href":"/features/invoice-generation"},{"title":"Team Members","icon":"user-gear","href":"/features/team"},{"sidebarTitle":"Connected Apps","title":"Connected Apps","icon":"plug","href":"/features/connected-apps"},{"title":"Communication Preferences","sidebarTitle":"Communication Preferences","icon":"bell","href":"/features/communication-preferences"},{"title":"My Account","icon":"user-gear","href":"/miscellaneous/accounts"}]},{"group":"Pricing","icon":"dollar-sign","pages":[{"sidebarTitle":"Tax Inclusive Pricing","title":"Tax Inclusive Pricing","icon":"file-invoice","href":"/features/tax-inclusive-pricing"},{"sidebarTitle":"Pay What You Want","title":"Pay What You Want Pricing","icon":"dollar-sign","href":"/features/pay-what-you-want"},{"title":"B2B Payments","icon":"money-bills","href":"/features/b2b-payments"},{"title":"Localized Pricing","sidebarTitle":"Localized Pricing","icon":"earth-americas","href":"/features/localized-pricing"},{"sidebarTitle":"Purchasing Power Parity","title":"Purchasing Power Parity","icon":"money-bill-trend-up","href":"/features/purchasing-power-parity"},{"sidebarTitle":"Charm Pricing","title":"Charm Pricing","icon":"tag","href":"/features/charm-pricing"},{"sidebarTitle":"Cart Value Limit","title":"Cart Value Limit","icon":"cart-shopping","href":"/features/cart-value-limit"}]},{"sidebarTitle":"Checkout","title":"Checkout Features","icon":"cart-shopping","href":"/features/checkout"},{"sidebarTitle":"Single Page Checkout","title":"Single Page Checkout","icon":"window-maximize","tag":"BETA","href":"/features/single-page-checkout"},{"sidebarTitle":"Design","title":"Design \u0026 Theme Customization","icon":"palette","href":"/features/design"},{"group":"Payment Methods","icon":"money-bill-wave","pages":[{"title":"Payment Methods","sidebarTitle":"Overview","icon":"layer-group","href":"/features/payment-methods"},{"title":"Credit \u0026 Debit Cards","sidebarTitle":"Cards","icon":"credit-card","href":"/features/payment-methods/cards"},{"title":"Digital Wallets","sidebarTitle":"Digital Wallets","icon":"wallet","href":"/features/payment-methods/digital-wallets"},{"title":"Buy Now Pay Later (BNPL)","sidebarTitle":"BNPL","icon":"calendar-days","href":"/features/payment-methods/bnpl"},{"title":"ACH Direct Debit","sidebarTitle":"ACH Direct Debit","icon":"building-columns","href":"/features/payment-methods/ach"},{"title":"India Payment Methods","sidebarTitle":"India","icon":"indian-rupee-sign","href":"/features/payment-methods/india"},{"title":"European Payment Methods","sidebarTitle":"Europe","icon":"euro-sign","href":"/features/payment-methods/europe"},{"title":"South Korea Payment Methods","sidebarTitle":"South Korea","icon":"won-sign","href":"/features/payment-methods/south-korea"},{"title":"Asia-Pacific Payment Methods","sidebarTitle":"Asia-Pacific","icon":"earth-asia","href":"/features/payment-methods/asia-pacific"},{"title":"Pix","sidebarTitle":"Pix","icon":"brazilian-real-sign","href":"/features/payment-methods/pix"},{"title":"Stablecoins","sidebarTitle":"Stablecoins","icon":"dollar-sign","href":"/features/payment-methods/stablecoins"},{"title":"WeChat Pay","sidebarTitle":"WeChat Pay","icon":"comment-dollar","href":"/features/payment-methods/wechat"}]},{"title":"Third-Party Analytics","sidebarTitle":"Third-Party Analytics","icon":"chart-line","href":"/features/analytics"},{"sidebarTitle":"Adaptive Currency","title":"Adaptive Currency","icon":"money-bill-transfer","href":"/features/adaptive-currency"},{"group":"BYOP","icon":"shuffle","tag":"BETA","pages":[{"title":"Bring Your Own Processor (BYOP)","sidebarTitle":"Overview","tag":"BETA","icon":"boxes-stacked","href":"/features/byop"},{"title":"Stripe - Connect \u0026 Raw Card API Access","sidebarTitle":"Stripe","icon":"stripe","href":"/features/byop/stripe"},{"title":"Adyen - Connect \u0026 Raw Card API Access","sidebarTitle":"Adyen","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/adyen.svg","href":"/features/byop/adyen"}]},{"title":"Storefront","icon":"store","href":"/features/storefront"},{"title":"Affiliates","icon":"users-line","href":"/features/affiliates"},{"title":"Moderation API","icon":"shield-check","tag":"NEW","href":"/features/moderation"},{"title":"Selling Digital Goods on iOS","icon":"mobile","href":"/features/appstore-digital-goods"},{"title":"Dashboard Analytics","sidebarTitle":"Dashboard Analytics","icon":"chart-line","href":"/features/analytics-and-reporting"},{"title":"Reports","sidebarTitle":"Reports","icon":"file-invoice","href":"/features/reports"}]},{"group":"Integrate","pages":[{"group":"SDKs","icon":"box-open","pages":[{"sidebarTitle":"Overview","title":"Official SDKs","icon":"box","href":"/developer-resources/dodo-payments-sdks"},{"title":"TypeScript","icon":"js","href":"/developer-resources/sdks/typescript"},{"title":"Python","icon":"python","href":"/developer-resources/sdks/python"},{"title":"Go","icon":"golang","href":"/developer-resources/sdks/go"},{"title":"Ruby","icon":"gem","href":"/developer-resources/sdks/ruby"},{"title":"Java","icon":"java","href":"/developer-resources/sdks/java"},{"title":"Kotlin","icon":"k","href":"/developer-resources/sdks/kotlin"},{"title":"PHP","icon":"php","href":"/developer-resources/sdks/php"},{"title":"C#","icon":"c","href":"/developer-resources/sdks/csharp"},{"title":"Rust","icon":"rust","href":"/developer-resources/sdks/rust"}]},{"group":"Mobile Checkout SDKs","icon":"mobile","pages":[{"title":"Mobile Integration Guide","sidebarTitle":"Integration Guide","icon":"mobile","href":"/developer-resources/mobile-integration"},{"title":"Android","sidebarTitle":"Android","icon":"android","href":"/developer-resources/sdks/android"},{"title":"iOS","sidebarTitle":"iOS","icon":"apple","href":"/developer-resources/sdks/ios"},{"title":"React Native","sidebarTitle":"React Native","icon":"react","href":"/developer-resources/sdks/react-native"},{"title":"Flutter","sidebarTitle":"Flutter","icon":"layer-group","href":"/developer-resources/sdks/flutter"}]},{"group":"Framework Adaptors","icon":"frame","pages":[{"sidebarTitle":"Overview","title":"Framework Adaptors Overview","icon":"box","href":"/developer-resources/framework-adaptors"},{"title":"Next.js Adaptor","icon":"code-merge","href":"/developer-resources/nextjs-adaptor"},{"title":"Better Auth Adaptor","icon":"code-merge","href":"/developer-resources/better-auth-adaptor"},{"title":"Convex Component","icon":"code-merge","href":"/developer-resources/convex-component"},{"title":"TanStack Adaptor","icon":"code-merge","href":"/developer-resources/tanstack-adaptor"},{"title":"Nuxt Adaptor","icon":"code-merge","href":"/developer-resources/nuxt-adaptor"},{"title":"Express Adaptor","icon":"code-merge","href":"/developer-resources/express-adaptor"},{"title":"Astro Adaptor","icon":"code-merge","href":"/developer-resources/astro-adaptor"},{"title":"SvelteKit Adaptor","icon":"code-merge","href":"/developer-resources/sveltekit-adaptor"},{"title":"Hono Adaptor","icon":"code-merge","href":"/developer-resources/hono-adaptor"},{"title":"Remix Adaptor","icon":"code-merge","href":"/developer-resources/remix-adaptor"},{"title":"Fastify Adaptor","icon":"code-merge","href":"/developer-resources/fastify-adaptor"},{"title":"Bun Adaptor","icon":"code-merge","href":"/developer-resources/bun-adaptor"}]},{"group":"Apps","icon":"puzzle-piece","pages":[{"sidebarTitle":"Build an app","title":"Build an App","icon":"puzzle-piece","href":"/developer-resources/build-an-app"}]},{"group":"Webhooks","icon":"webhook","pages":[{"sidebarTitle":"Overview","title":"Webhooks","icon":"webhook","href":"/developer-resources/webhooks"},{"title":"Webhook Events Guide","icon":"bell","href":"/developer-resources/webhooks/intents/webhook-events-guide"},{"group":"Webhook Payloads","icon":"code","pages":[{"title":"Payment","icon":"credit-card","href":"/developer-resources/webhooks/intents/payment"},{"sidebarTitle":"Subscription","title":"Subscription Webhooks","icon":"repeat","href":"/developer-resources/webhooks/intents/subscription"},{"title":"Refund","icon":"rotate-left","href":"/developer-resources/webhooks/intents/refund"},{"sidebarTitle":"Dispute","title":"Dispute Webhooks","icon":"circle-exclamation","href":"/developer-resources/webhooks/intents/dispute"},{"title":"License Key","icon":"key","href":"/developer-resources/webhooks/intents/license-key"},{"title":"Entitlement Grant","icon":"gift","href":"/developer-resources/webhooks/intents/entitlement-grant"},{"sidebarTitle":"Credit-Based Billing","title":"Credit-Based Billing Webhooks","icon":"coins","href":"/developer-resources/webhooks/intents/credit"},{"title":"Recovery","icon":"rotate","href":"/developer-resources/webhooks/intents/recovery"},{"sidebarTitle":"Payout","title":"Payout Webhooks","icon":"money-bill-transfer","href":"/developer-resources/webhooks/intents/payout"}]},{"group":"Deploy to Cloud","icon":"rocket","pages":[{"title":"Vercel Functions","icon":"triangle","href":"/developer-resources/webhooks/examples/vercel-example"},{"title":"Cloudflare Workers","icon":"cloud","href":"/developer-resources/webhooks/examples/cloudflare-example"},{"title":"Supabase Edge Functions","icon":"bolt","href":"/developer-resources/webhooks/examples/supabase-example"},{"title":"Netlify Functions","icon":"diamond","href":"/developer-resources/webhooks/examples/netlify-example"}]}]},{"group":"Workload Identity","icon":"id-badge","tag":"NEW","pages":[{"sidebarTitle":"Overview","title":"Workload Identity Federation","icon":"id-badge","tag":"NEW","href":"/developer-resources/workload-identity/overview"},{"sidebarTitle":"Dashboard Setup","title":"Set Up Workload Identity in the Dashboard","icon":"sliders","href":"/developer-resources/workload-identity/dashboard-setup"},{"sidebarTitle":"SDK Usage","title":"Use Workload Identity with the SDKs","icon":"code","href":"/developer-resources/workload-identity/sdk-usage"},{"sidebarTitle":"Terraform","title":"Use Workload Identity with the Terraform Provider","icon":"code-branch","href":"/developer-resources/workload-identity/terraform"},{"group":"Provider Guides","icon":"list-check","pages":[{"sidebarTitle":"GitHub Actions","title":"Workload Identity for GitHub Actions","icon":"github","href":"/developer-resources/workload-identity/providers/github-actions"},{"sidebarTitle":"GitLab","title":"Workload Identity for GitLab CI/CD","icon":"gitlab","href":"/developer-resources/workload-identity/providers/gitlab"},{"sidebarTitle":"Terraform Cloud","title":"Workload Identity for HCP Terraform","icon":"cloud","href":"/developer-resources/workload-identity/providers/terraform-cloud"},{"sidebarTitle":"Google Cloud","title":"Workload Identity for Google Cloud","icon":"google","href":"/developer-resources/workload-identity/providers/google-cloud"},{"sidebarTitle":"Vercel","title":"Workload Identity for Vercel","icon":"triangle","href":"/developer-resources/workload-identity/providers/vercel"},{"sidebarTitle":"Kubernetes and EKS","title":"Workload Identity for Kubernetes and Amazon EKS","icon":"dharmachakra","href":"/developer-resources/workload-identity/providers/kubernetes"},{"sidebarTitle":"AWS","title":"Workload Identity for AWS","icon":"aws","href":"/developer-resources/workload-identity/providers/aws"},{"sidebarTitle":"Custom OIDC","title":"Workload Identity for a Custom OIDC Issuer","icon":"key","href":"/developer-resources/workload-identity/providers/custom-oidc"}]}]},{"group":"Testing \u0026 Demo Tools","icon":"flask","pages":[{"title":"Test Mode vs Live Mode","icon":"toggle-on","href":"/miscellaneous/test-mode-vs-live-mode"},{"title":"Testing Process","icon":"flask","href":"/miscellaneous/testing-process"},{"title":"Atlas Demo Product","icon":"palette","href":"/features/atlas-demo-website"}]},{"group":"Boilerplates","icon":"box-open","pages":[{"sidebarTitle":"Expo","title":"Expo Boilerplate","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/expo.svg","href":"/developer-resources/expo-boilerplate"},{"sidebarTitle":"Supabase","title":"Supabase Boilerplate","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/supabase.svg","href":"/developer-resources/supabase-boilerplate"},{"sidebarTitle":"Figma Plugin","title":"Figma Plugin","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/figma.svg","href":"/integrations/figma-plugin"},{"sidebarTitle":"Next.js","title":"Next.js Minimal Boilerplate","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/nextjs.svg","href":"/developer-resources/nextjs-boilerplate"},{"sidebarTitle":"Astro","title":"Astro Minimal Boilerplate","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/astro.svg","href":"/developer-resources/astro-boilerplate"},{"sidebarTitle":"FastAPI","title":"FastAPI Boilerplate","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/fastapi.svg","href":"/developer-resources/fastapi-boilerplate"},{"sidebarTitle":"Go","title":"Go Boilerplate","icon":"golang","href":"/developer-resources/go-boilerplate"}]},{"title":"Dodo CLI","icon":"terminal","href":"/developer-resources/sdks/cli"},{"sidebarTitle":"Terraform Provider","title":"Pricing as Code with Terraform","icon":"code-branch","tag":"NEW","href":"/developer-resources/terraform-provider"},{"title":"Overlay Checkout","icon":"cart-shopping","href":"/developer-resources/overlay-checkout"},{"title":"Inline Checkout","icon":"credit-card","href":"/developer-resources/inline-checkout"},{"title":"Billing SDK","icon":"boxes-stacked","href":"/developer-resources/billingsdk"},{"title":"Dodo Payments MCP Server","icon":"server","href":"/developer-resources/mcp-server"},{"title":"Agent Skills","icon":"wand-magic-sparkles","href":"/developer-resources/agent-skills"},{"sidebarTitle":"Database Sync","title":"Sync with Your Database","icon":"database","href":"/developer-resources/dodo-sync"},{"sidebarTitle":"Subscription Migration","title":"Subscription Migration to Dodo Payments","icon":"file-import","href":"/miscellaneous/subscription-migration"},{"sidebarTitle":"Card Data Export","title":"Request a Card Data Export","icon":"file-export","href":"/miscellaneous/card-data-export"}]},{"group":"Merchant of Record","pages":[{"sidebarTitle":"What Is MoR?","title":"Introduction","icon":"building-columns","href":"/features/mor-introduction"},{"title":"MoR vs PG","icon":"scale-balanced","href":"/features/mor-vs-pg"},{"title":"Countries Eligible for Payment Acceptance","icon":"globe","href":"/miscellaneous/list-of-countries-we-accept-payments-from"},{"title":"Merchant Acceptance Policy","icon":"building-shield","href":"/miscellaneous/merchant-acceptance"},{"title":"Countries Eligible for Merchant Acceptance","icon":"globe","href":"/miscellaneous/accepted-countries-and-territories"},{"title":"Review \u0026 Monitoring Policy","icon":"magnifying-glass","href":"/miscellaneous/review-monitoring-policy"},{"sidebarTitle":"Bypass of App Store Fees","title":"Bypassing App Store \u0026 Play Store Fees Using Dodo Payments","icon":"shield-check","href":"/features/bypassing-app-store-fees"}]},{"group":"Miscellaneous","pages":[{"group":"Support Channels","icon":"headset","pages":[{"title":"Help and Support","icon":"headset","href":"/miscellaneous/help-support"},{"title":"Feature Request and Roadmap","icon":"lightbulb","href":"/features/feature-request"}]},{"title":"Mobile \u0026 Desktop Apps","icon":"mobile","href":"/features/mobile-app"},{"title":"FAQs","icon":"circle-question","href":"/miscellaneous/faq"},{"title":"Security Reporting Policy","icon":"shield","href":"/miscellaneous/security-policy"}]}]},{"tab":"Guides","icon":"compass","pages":[{"title":"Guides","href":"/developer-resources/integration-guide"}]},{"tab":"API Reference","icon":"rectangle-code","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]},{"tab":"External Integrations","icon":"plug","pages":[{"title":"External Integrations","href":"/integrations/introduction"}]},{"tab":"Changelog","icon":"calendar-days","pages":[{"title":"Changelog","href":"/changelog/introduction"}]},{"tab":"Community Projects","icon":"users","pages":[{"title":"Community Projects","href":"/community/overview"}]}]},{"language":"es","pages":[{"title":"es","href":"/es/features/entitlements/discord"}]},{"language":"ar","pages":[{"title":"ar","href":"/ar/features/entitlements/discord"}]},{"language":"fr","pages":[{"title":"fr","href":"/fr/features/entitlements/discord"}]},{"language":"de","pages":[{"title":"de","href":"/de/features/entitlements/discord"}]},{"language":"id","pages":[{"title":"id","href":"/id/features/entitlements/discord"}]},{"language":"ja","pages":[{"title":"ja","href":"/ja/features/entitlements/discord"}]},{"language":"ko","pages":[{"title":"ko","href":"/ko/features/entitlements/discord"}]},{"language":"pt-BR","pages":[{"title":"pt-BR","href":"/pt-BR/features/entitlements/discord"}]},{"language":"vi","pages":[{"title":"vi","href":"/vi/features/entitlements/discord"}]},{"language":"cn","pages":[{"title":"cn","href":"/cn/features/entitlements/discord"}]},{"language":"hi","pages":[{"title":"hi","href":"/hi/features/entitlements/discord"}]},{"language":"it","pages":[{"title":"it","href":"/it/features/entitlements/discord"}]},{"language":"sv","pages":[{"title":"sv","href":"/sv/features/entitlements/discord"}]}]},"basePath":"","title":"Discord Entitlement - Dodo Payments Documentation","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-u3J1-UOn.js","DynamicMarkdown-B-f2cqXQ.js","zoom-image-lightbox-DTFzvaXJ.js","lightbox-handle-r17bVUz3.js"]}