Entregue chaves de licença, arquivos para download, feature flags e acesso ao Discord, GitHub, Telegram, Framer e Notion automaticamente quando os clientes pagarem.
Entitlements transformam um pagamento bem-sucedido ou uma assinatura ativa em acesso: uma chave de licença na caixa de entrada do seu cliente, uma feature flag que seu aplicativo verifica, uma função no Discord, um repositório do GitHub, um template do Notion, um link de remix do Framer, um convite para um chat do Telegram ou um pacote de arquivos para download. O Dodo Payments emite, acompanha e revoga esse acesso automaticamente conforme o ciclo de vida do pagamento muda.
The Entitlements dashboard. Each entitlement is a reusable template; the right pane shows individual customer grants.
Um entitlement é uma definição reutilizável de algo que você entrega a um cliente, como uma chave de licença Pro, uma função “Patrons” no Discord, acesso ao seu repositório privado do GitHub ou um pacote de e-books para download. Você associa entitlements a produtos, e o Dodo Payments os entrega quando um cliente paga.Quando um cliente compra o produto, o Dodo Payments cria um grant: a emissão desse entitlement para um cliente. Um grant tem um de quatro status: Pending enquanto a entrega está em andamento, Delivered quando o cliente obtém acesso, Failed se a entrega não puder ser concluída e Revoked quando o acesso é retirado.
Entitlements controlam o fulfillment (o cliente tem acesso?). Credits controlam o consumption (quanto o cliente pode usar?). Você pode associar ambos ao mesmo produto. Consulte Credit-Based Billing para saber mais sobre credits.
Os grants seguem os mesmos eventos de pagamento e assinatura que você recebe como webhooks. O Dodo Payments cria e revoga grants automaticamente para compras, com base no ciclo de vida do pagamento, portanto você não precisa chamar a grant API por conta própria.
O Dodo Payments cria um grant quando um pagamento é concluído ou quando uma assinatura se torna ativa. Grants de feature flags começam como Delivered. Grants de chaves de licença também começam como Delivered quando o entitlement usa fulfillment_mode: auto (o padrão). Em fulfillment_mode: manual, o grant começa como Pending sem uma chave, até que você forneça uma usando Fulfill License Key Grant. Todas as outras integrações começam como Pending.Integrações baseadas em OAuth (Discord, GitHub, Notion) expõem um oauth_url que o cliente acessa para dar consentimento. O Dodo Payments tenta gerar essa URL quando cria o grant. Se falhar, o campo permanece como null até que o cliente inicie o fluxo de aceitação pelo e-mail de entrega ou pelo Customer Portal. Integrações diretas da plataforma (Telegram, Framer, Digital Files) permanecem como Pending apenas enquanto a entrega é provisionada e depois passam para Delivered.
2
Delivered
Quando a entrega é concluída, o grant passa para Delivered e delivered_at é definido. A entrega é concluída quando a chave de licença é gerada, a função é atribuída, o acesso ao repositório é concedido, os links dos arquivos são resolvidos ou o fluxo OAuth é finalizado.
3
Failed
Se a chamada da integração retornar um erro que não pode ser repetido, como um token OAuth revogado, uma permissão negada ou um arquivo que não existe mais, o grant passará para Failed. Os campos error_code e error_message registram o motivo.
4
Revoked
Quando o acesso é retirado, por exemplo porque uma assinatura foi cancelada, um reembolso foi emitido ou você revogou o grant, o grant passa para Revoked. O campo revocation_reason registra o gatilho.
Cada evento de pagamento e assinatura altera os grants da seguinte forma:
Evento
Comportamento
payment.succeeded (pagamento único)
Emite um grant para cada entitlement associado. Um entitlement de License Key emite um grant por chave.
payment.succeeded (pagamento associado a uma assinatura)
Nenhuma alteração. Os eventos de assinatura abaixo controlam esses grants.
subscription.active
Emite grants para quaisquer entitlements associados que ainda não tenham um e reemite grants anteriormente revogados para a mesma assinatura. Grants revogados com manual, refund ou platform_external não são reemitidos.
subscription.renewed
Nenhuma alteração. Os grants existentes persistem entre as renovações.
subscription.past_due
Nenhuma alteração. Os grants permanecem entregues durante todo o período de carência.
subscription.on_hold
Revoga todos os grants entregues e pendentes com revocation_reason: subscription_on_hold.
subscription.paused
Revoga todos os grants entregues e pendentes com revocation_reason: SubscriptionPaused. Diferentemente dos outros motivos de assinatura, esse valor usa PascalCase; portanto, corresponda a ele exatamente.
subscription.unpaused
Reemite grants anteriormente revogados para a mesma assinatura, da mesma forma que subscription.active.
subscription.cancelled
Revoga todos os grants com revocation_reason: subscription_cancelled.
subscription.expired
Revoga todos os grants com revocation_reason: subscription_expired.
subscription.plan_changed
Revoga todos os grants atuais com revocation_reason: plan_changed e emite grants para os entitlements do novo plano.
refund.succeeded (pagamento único)
Revoga os grants desse pagamento com revocation_reason: refund.
Revogação manual pela API
Revoga o grant com revocation_reason: manual. Revogações manuais não são reemitidas automaticamente na renovação da assinatura.
Chave de licença desativada
Para grants de chaves de licença, desativar a chave subjacente revoga o grant com revocation_reason: license_key_disabled. Reativar a chave restaura o grant automaticamente.
Drift da plataforma detectado
Se o lado da plataforma de uma integração ficar dessincronizado, como quando uma função do Discord é removida manualmente, o GitHub App perde acesso ao repositório ou uma etapa de reconciliação encontra um destino ausente, o Dodo Payments revoga o grant com revocation_reason: platform_external. Ele não é reemitido automaticamente na renovação da assinatura até que o problema da plataforma seja resolvido.
Grants controlados por assinatura são idempotentes por (entitlement, customer, subscription), portanto renovações e reativações não criam grants duplicados. Grants únicos são idempotentes por (entitlement, customer, payment).
Acesse Entitlements no dashboard e clique em + para criar um entitlement.
2
Pick an Integration
Escolha o tipo de integração: License Key, Digital Files, Feature Flag, Discord, GitHub, Telegram, Figma, Framer ou Notion. Para uma integração de plataforma, conecte sua conta primeiro, caso ainda não tenha feito isso.
3
Configure Delivery
Preencha os campos da integração. Por exemplo, o GitHub solicita um repositório e um nível de permissão, o Discord solicita um servidor e uma função opcional, e License Key solicita um limite de ativações e uma duração da licença.
Creating a GitHub entitlement. Each integration shows the fields it needs.
4
Save
Clique em Create Entitlement. Agora você pode associar o entitlement a qualquer produto.
Abra um produto, acesse a seção Entitlements e selecione os entitlements a serem entregues quando o produto for comprado. Um produto pode entregar vários entitlements ao mesmo tempo. Por exemplo, um plano Pro pode incluir uma chave de licença, acesso ao GitHub e uma função no Discord.
Attaching entitlements to a product. Selected entitlements are delivered on every successful purchase or active subscription.
Após uma compra, o cliente recebe um e-mail de entrega com a chave de licença, links para download, links de convite OAuth ou o convite da plataforma aplicável aos entitlements do produto. Os mesmos detalhes continuam disponíveis no Customer Portal, no histórico de pedidos, enquanto o grant estiver ativo.
O acesso de assinantes ao Discord, GitHub e Notion exige que o cliente autorize o Dodo Payments a conceder esse acesso. Esses grants permanecem como Pending até que o cliente conclua o fluxo OAuth pelo link no e-mail ou no Customer Portal. Depois que o cliente autoriza, o grant passa para Delivered e o Dodo Payments provisiona o acesso à plataforma.
Quando um grant é revogado, o Dodo Payments remove o acesso na plataforma: remove a função do Discord, remove o colaborador do GitHub ou desativa a chave de licença. O cliente vê a alteração no Customer Portal.
Para Digital Files, a revogação impede novos URLs de download pré-assinados, mas não invalida cópias que o cliente já tenha baixado. Planeje o controle de acesso ao seu conteúdo levando isso em consideração.
Abra qualquer entitlement no dashboard para ver seus grants. O painel de detalhes mostra o total concedido, um filtro de status e uma linha por grant com o cliente, a data de acesso, o status e uma ação Revoke.Para gerenciar grants programaticamente, liste-os com o filtro status e revogue um único grant pelo ID:
import DodoPayments from 'dodopayments';const client = new DodoPayments({ bearerToken: process.env['DODO_PAYMENTS_API_KEY'],});// List grants for an entitlementconst grants = await client.entitlements.grants.list('ent_abc123', { status: 'Delivered',});// Revoke a single grantawait client.entitlements.grants.revoke('entg_xyz789', { id: 'ent_abc123',});
O Dodo Payments envia quatro eventos de webhook para o ciclo de vida do grant. Inscreva-se neles para manter seu aplicativo sincronizado com aquilo a que cada cliente pode ter acesso.
Evento
Ocorre quando
entitlement_grant.created
Um grant é criado. Grants de chaves de licença preenchidos automaticamente e grants de feature flags chegam como Delivered. Grants de chaves de licença preenchidos manualmente e todas as outras integrações chegam como Pending e depois passam para Delivered quando a chamada da plataforma é bem-sucedida ou, para integrações baseadas em OAuth, quando o cliente autoriza.
entitlement_grant.delivered
Um grant existente passa para Delivered, então o cliente obtém acesso. Um grant que já esteja como Delivered na criação dispara apenas created.
entitlement_grant.failed
Não foi possível entregar o grant. Verifique error_code e error_message.
entitlement_grant.revoked
O acesso foi retirado. Verifique revocation_reason.
Entitlement Grant Webhook Payloads
Veja o schema completo do payload, exemplos de eventos e a referência de revocation_reason.
Use um entitlement por canal de entrega. Não compartilhe um entitlement do Discord entre produtos com intenções de função diferentes. Crie um entitlement por função para que a revogação permaneça limpa.
Faça testes primeiro no modo de teste. Crie o entitlement, associe-o a um produto de teste, execute um checkout e observe o grant passar de Pending para Delivered. Depois, cancele a assinatura de teste e confirme que o grant foi revogado.
Escute entitlement_grant.delivered, não payment.succeeded. Um pagamento pode ser bem-sucedido antes que o fulfillment seja concluído, especialmente em fluxos OAuth. Aguarde o grant chegar a Delivered antes de desbloquear funcionalidades dependentes em seus próprios sistemas. Um grant entregue na criação, como uma chave de licença preenchida automaticamente ou uma feature flag, chega como entitlement_grant.created com status: "Delivered".
Trate entitlement_grant.failed como acionável. Um grant com falha significa que um cliente pagou, mas não obteve acesso. Apresente esses grants à sua equipe de suporte ou acione uma nova emissão.
Mapeie revocation_reason para seus fluxos de retenção. Uma revogação subscription_on_hold pode ser recuperada, pois o cliente pode atualizar o cartão. Uma revogação manual é intencional. Trate-as de forma diferente nas mensagens aos clientes.
Não revogue o acesso em subscription.past_due. Esse evento inicia um período de carência, e o cliente mantém o acesso até o fim da janela. Aguarde subscription.on_hold ou subscription.cancelled.
Última modificação em 26 de setembro de 2026
Esta página foi útil?
⌘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":"6af5ba080b3858d5ef254c97","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"en","tag":"API Reference","count":181},{"language":"en","tag":"Docs","count":178},{"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":87},{"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":75},{"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":24},{"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":"pt-BR/features/entitlements/introduction","slug":"/pt-BR/features/entitlements/introduction","pageMetadata":{"title":"Introduction","sidebarTitle":"Introduction","description":"Entregue chaves de licença, arquivos para download, feature flags e acesso ao Discord, GitHub, Telegram, Framer e Notion automaticamente quando os clientes pagarem.","icon":"box-archive","keywords":["Dodo Payments","entitlements","fulfillment","license keys","digital delivery","platform access"],"href":"/pt-BR/features/entitlements/introduction"},"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: \"Entregue chaves de licença, arquivos para download, feature flags e acesso ao Discord, GitHub, Telegram, Framer e Notion automaticamente quando os clientes pagarem.\"\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`,hr:`hr`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Card,CardGroup,CodeBlock,CodeGroup,Frame,Heading,Info,Note,OptimizedImage,Step,Steps,Table,Tip,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,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(!Note)_missingMdxReference(`Note`,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);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Info,{children:_jsx(_components.p,{children:`Entitlements transformam um pagamento bem-sucedido ou uma assinatura ativa em acesso: uma chave de licença na caixa de entrada do seu cliente, uma feature flag que seu aplicativo verifica, uma função no Discord, um repositório do GitHub, um template do Notion, um link de remix do Framer, um convite para um chat do Telegram ou um pacote de arquivos para download. O Dodo Payments emite, acompanha e revoga esse acesso automaticamente conforme o ciclo de vida do pagamento muda.`})}),`\n`,_jsx(Frame,{caption:`The Entitlements dashboard. Each entitlement is a reusable template; the right pane shows individual customer grants.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/list.png?fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=12a326205f64d1e71485bce46114d296`,alt:`Entitlements dashboard with a list of entitlements on the left and grant activity on the right`,style:{maxHeight:`500px`,width:`auto`},\"data-og-width\":`2000`,width:`2000`,\"data-og-height\":`1195`,height:`1195`,\"data-path\":`images/entitlements/list.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/list.png?w=280\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=d12b37e6f3daedbb84e544d08513207e 280w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/list.png?w=560\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=70afcf57fcdd38039179d3054a5eb73f 560w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/list.png?w=840\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=b1cb6ba70f564db87c9bd19f50b21f44 840w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/list.png?w=1100\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=463a9ba560357d16a43e39c23ea5a042 1100w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/list.png?w=1650\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=8b695099d64c9bc75bef9fa1bef28541 1650w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/list.png?w=2500\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=9e86c8dff013279ce9c94de2b5d48338 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`o-que-são-entitlements`,children:`O que são Entitlements?`}),`\n`,_jsxs(_components.p,{children:[`Um `,_jsx(_components.strong,{children:`entitlement`}),` é uma definição reutilizável de algo que você entrega a um cliente, como uma chave de licença Pro, uma função “Patrons” no Discord, acesso ao seu repositório privado do GitHub ou um pacote de e-books para download. Você associa entitlements a produtos, e o Dodo Payments os entrega quando um cliente paga.`]}),`\n`,_jsxs(_components.p,{children:[`Quando um cliente compra o produto, o Dodo Payments cria um `,_jsx(_components.strong,{children:`grant`}),`: a emissão desse entitlement para um cliente. Um grant tem um de quatro status: `,_jsx(_components.code,{children:`Pending`}),` enquanto a entrega está em andamento, `,_jsx(_components.code,{children:`Delivered`}),` quando o cliente obtém acesso, `,_jsx(_components.code,{children:`Failed`}),` se a entrega não puder ser concluída e `,_jsx(_components.code,{children:`Revoked`}),` quando o acesso é retirado.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Entitlements controlam o `,_jsx(_components.strong,{children:`fulfillment`}),` (o cliente tem acesso?). Credits controlam o `,_jsx(_components.strong,{children:`consumption`}),` (quanto o cliente pode usar?). Você pode associar ambos ao mesmo produto. Consulte `,_jsx(_components.a,{href:`/features/credit-based-billing`,children:`Credit-Based Billing`}),` para saber mais sobre credits.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`available-integrations`,children:`Available Integrations`}),`\n`,_jsx(_components.p,{children:`Cada entitlement é entregue por meio de uma integração. Escolha a integração que corresponde ao que você vende.`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`License Keys`,icon:`key`,href:`/features/license-keys`,children:_jsx(_components.p,{children:`Generate unique license keys with activation limits and expiry. Best for software, plugins, and CLIs.`})}),_jsx(Card,{title:`Digital Files`,icon:`download`,href:`/features/digital-product-delivery`,children:_jsx(_components.p,{children:`Entregue arquivos para download, como e-books, templates e mídia, com URLs de download pré-assinadas e instruções opcionais.`})}),_jsx(Card,{title:`Feature Flags`,icon:`flag`,href:`/features/entitlements/feature-flags`,children:_jsx(_components.p,{children:`Controle funcionalidades no seu próprio aplicativo com base em uma compra. Entregue na criação, verifique por meio da API e revogue no cancelamento.`})}),_jsx(Card,{title:`Discord`,icon:`discord`,href:`/features/entitlements/discord`,children:_jsx(_components.p,{children:`Dê uma função a um cliente no seu servidor do Discord quando ele comprar. A função será removida automaticamente no cancelamento.`})}),_jsx(Card,{title:`GitHub`,icon:`github`,href:`/features/entitlements/github`,children:_jsx(_components.p,{children:`Add customers as collaborators to a private repository at the permission level you choose.`})}),_jsx(Card,{title:`Telegram`,icon:`telegram`,href:`/features/entitlements/telegram`,children:_jsx(_components.p,{children:`Add customers to a private Telegram chat or channel after purchase.`})}),_jsx(Card,{title:`Framer`,icon:`puzzle-piece`,href:`/features/entitlements/framer`,children:_jsx(_components.p,{children:`Unlock a Framer template remix link for paying customers.`})}),_jsx(Card,{title:`Notion`,icon:`book`,href:`/features/entitlements/notion`,children:_jsx(_components.p,{children:`Duplicate a Notion template into the customer’s workspace on purchase.`})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`how-grants-work`,children:`How Grants Work`}),`\n`,_jsx(_components.p,{children:`Os grants seguem os mesmos eventos de pagamento e assinatura que você recebe como webhooks. O Dodo Payments cria e revoga grants automaticamente para compras, com base no ciclo de vida do pagamento, portanto você não precisa chamar a grant API por conta própria.`}),`\n`,_jsx(Heading,{level:`3`,id:`grant-lifecycle`,children:`Grant Lifecycle`}),`\n`,_jsx(_components.p,{children:`Um grant passa pelos seguintes status:`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Created`,children:[_jsxs(_components.p,{children:[`O Dodo Payments cria um grant quando um pagamento é concluído ou quando uma assinatura se torna ativa. Grants de feature flags começam como `,_jsx(_components.code,{children:`Delivered`}),`. Grants de chaves de licença também começam como `,_jsx(_components.code,{children:`Delivered`}),` quando o entitlement usa `,_jsx(_components.code,{children:`fulfillment_mode: auto`}),` (o padrão). Em `,_jsx(_components.code,{children:`fulfillment_mode: manual`}),`, o grant começa como `,_jsx(_components.code,{children:`Pending`}),` sem uma chave, até que você forneça uma usando `,_jsx(_components.a,{href:`/api-reference/entitlements/fulfill-license-key`,children:`Fulfill License Key Grant`}),`. Todas as outras integrações começam como `,_jsx(_components.code,{children:`Pending`}),`.`]}),_jsxs(_components.p,{children:[`Integrações baseadas em OAuth (Discord, GitHub, Notion) expõem um `,_jsx(_components.code,{children:`oauth_url`}),` que o cliente acessa para dar consentimento. O Dodo Payments tenta gerar essa URL quando cria o grant. Se falhar, o campo permanece como `,_jsx(_components.code,{children:`null`}),` até que o cliente inicie o fluxo de aceitação pelo e-mail de entrega ou pelo Customer Portal. Integrações diretas da plataforma (Telegram, Framer, Digital Files) permanecem como `,_jsx(_components.code,{children:`Pending`}),` apenas enquanto a entrega é provisionada e depois passam para `,_jsx(_components.code,{children:`Delivered`}),`.`]})]}),_jsx(Step,{title:`Delivered`,children:_jsxs(_components.p,{children:[`Quando a entrega é concluída, o grant passa para `,_jsx(_components.code,{children:`Delivered`}),` e `,_jsx(_components.code,{children:`delivered_at`}),` é definido. A entrega é concluída quando a chave de licença é gerada, a função é atribuída, o acesso ao repositório é concedido, os links dos arquivos são resolvidos ou o fluxo OAuth é finalizado.`]})}),_jsx(Step,{title:`Failed`,children:_jsxs(_components.p,{children:[`Se a chamada da integração retornar um erro que não pode ser repetido, como um token OAuth revogado, uma permissão negada ou um arquivo que não existe mais, o grant passará para `,_jsx(_components.code,{children:`Failed`}),`. Os campos `,_jsx(_components.code,{children:`error_code`}),` e `,_jsx(_components.code,{children:`error_message`}),` registram o motivo.`]})}),_jsx(Step,{title:`Revoked`,children:_jsxs(_components.p,{children:[`Quando o acesso é retirado, por exemplo porque uma assinatura foi cancelada, um reembolso foi emitido ou você revogou o grant, o grant passa para `,_jsx(_components.code,{children:`Revoked`}),`. O campo `,_jsx(_components.code,{children:`revocation_reason`}),` registra o gatilho.`]})})]}),`\n`,_jsx(Heading,{level:`3`,id:`comportamento-dos-grants-por-evento`,children:`Comportamento dos Grants por Evento`}),`\n`,_jsx(_components.p,{children:`Cada evento de pagamento e assinatura altera os grants da seguinte forma:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Evento`}),_jsx(_components.th,{children:`Comportamento`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`payment.succeeded`}),` (pagamento único)`]}),_jsx(_components.td,{children:`Emite um grant para cada entitlement associado. Um entitlement de License Key emite um grant por chave.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`payment.succeeded`}),` (pagamento associado a uma assinatura)`]}),_jsx(_components.td,{children:`Nenhuma alteração. Os eventos de assinatura abaixo controlam esses grants.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`subscription.active`})}),_jsxs(_components.td,{children:[`Emite grants para quaisquer entitlements associados que ainda não tenham um e reemite grants anteriormente revogados para a mesma assinatura. Grants revogados com `,_jsx(_components.code,{children:`manual`}),`, `,_jsx(_components.code,{children:`refund`}),` ou `,_jsx(_components.code,{children:`platform_external`}),` não são reemitidos.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`subscription.renewed`})}),_jsx(_components.td,{children:`Nenhuma alteração. Os grants existentes persistem entre as renovações.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`subscription.past_due`})}),_jsxs(_components.td,{children:[`Nenhuma alteração. Os grants permanecem entregues durante todo o `,_jsx(_components.a,{href:`/features/subscription#grace-period`,children:`período de carência`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`subscription.on_hold`})}),_jsxs(_components.td,{children:[`Revoga todos os grants entregues e pendentes com `,_jsx(_components.code,{children:`revocation_reason: subscription_on_hold`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`subscription.paused`})}),_jsxs(_components.td,{children:[`Revoga todos os grants entregues e pendentes com `,_jsx(_components.code,{children:`revocation_reason: SubscriptionPaused`}),`. Diferentemente dos outros motivos de assinatura, esse valor usa PascalCase; portanto, corresponda a ele exatamente.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`subscription.unpaused`})}),_jsxs(_components.td,{children:[`Reemite grants anteriormente revogados para a mesma assinatura, da mesma forma que `,_jsx(_components.code,{children:`subscription.active`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`subscription.cancelled`})}),_jsxs(_components.td,{children:[`Revoga todos os grants com `,_jsx(_components.code,{children:`revocation_reason: subscription_cancelled`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`subscription.expired`})}),_jsxs(_components.td,{children:[`Revoga todos os grants com `,_jsx(_components.code,{children:`revocation_reason: subscription_expired`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`subscription.plan_changed`})}),_jsxs(_components.td,{children:[`Revoga todos os grants atuais com `,_jsx(_components.code,{children:`revocation_reason: plan_changed`}),` e emite grants para os entitlements do novo plano.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`refund.succeeded`}),` (pagamento único)`]}),_jsxs(_components.td,{children:[`Revoga os grants desse pagamento com `,_jsx(_components.code,{children:`revocation_reason: refund`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Revogação manual pela API`}),_jsxs(_components.td,{children:[`Revoga o grant com `,_jsx(_components.code,{children:`revocation_reason: manual`}),`. Revogações manuais não são reemitidas automaticamente na renovação da assinatura.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Chave de licença desativada`}),_jsxs(_components.td,{children:[`Para grants de chaves de licença, desativar a chave subjacente revoga o grant com `,_jsx(_components.code,{children:`revocation_reason: license_key_disabled`}),`. Reativar a chave restaura o grant automaticamente.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Drift da plataforma detectado`}),_jsxs(_components.td,{children:[`Se o lado da plataforma de uma integração ficar dessincronizado, como quando uma função do Discord é removida manualmente, o GitHub App perde acesso ao repositório ou uma etapa de reconciliação encontra um destino ausente, o Dodo Payments revoga o grant com `,_jsx(_components.code,{children:`revocation_reason: platform_external`}),`. Ele não é reemitido automaticamente na renovação da assinatura até que o problema da plataforma seja resolvido.`]})]})]})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Grants controlados por assinatura são idempotentes por `,_jsx(_components.code,{children:`(entitlement, customer, subscription)`}),`, portanto renovações e reativações não criam grants duplicados. Grants únicos são idempotentes por `,_jsx(_components.code,{children:`(entitlement, customer, payment)`}),`.`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`crie-seu-primeiro-entitlement`,children:`Crie seu primeiro entitlement`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open Entitlements`,children:_jsxs(_components.p,{children:[`Acesse `,_jsx(_components.strong,{children:`Entitlements`}),` no dashboard e clique em `,_jsx(_components.strong,{children:`+`}),` para criar um entitlement.`]})}),_jsx(Step,{title:`Pick an Integration`,children:_jsx(_components.p,{children:`Escolha o tipo de integração: License Key, Digital Files, Feature Flag, Discord, GitHub, Telegram, Figma, Framer ou Notion. Para uma integração de plataforma, conecte sua conta primeiro, caso ainda não tenha feito isso.`})}),_jsxs(Step,{title:`Configure Delivery`,children:[_jsx(_components.p,{children:`Preencha os campos da integração. Por exemplo, o GitHub solicita um repositório e um nível de permissão, o Discord solicita um servidor e uma função opcional, e License Key solicita um limite de ativações e uma duração da licença.`}),_jsx(Frame,{caption:`Creating a GitHub entitlement. Each integration shows the fields it needs.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/github/create.png?fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=722e925ec5158a5d16c58213132ccb9d`,alt:`Formulário New Entitlement com seletor de integração e campos de configuração`,style:{maxHeight:`500px`,width:`auto`},\"data-og-width\":`2000`,width:`2000`,\"data-og-height\":`1130`,height:`1130`,\"data-path\":`images/entitlements/github/create.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/github/create.png?w=280\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=27f80ec98d393359ca3136524a0ad9d8 280w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/github/create.png?w=560\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=6cf0a907fa86298b9ad896b1a604fa0b 560w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/github/create.png?w=840\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=a34a563dad17160d3c13067e3a349f3c 840w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/github/create.png?w=1100\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=fc893072e5f07d021b962b0bdd87933c 1100w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/github/create.png?w=1650\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=222cfaf3c0ac63f69d8494d7387d3e22 1650w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/github/create.png?w=2500\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=f6b547a74f61c76b6735d3e92c4960d8 2500w`})})]}),_jsx(Step,{title:`Save`,children:_jsxs(_components.p,{children:[`Clique em `,_jsx(_components.strong,{children:`Create Entitlement`}),`. Agora você pode associar o entitlement a qualquer produto.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`associe-entitlements-a-produtos`,children:`Associe Entitlements a Produtos`}),`\n`,_jsxs(_components.p,{children:[`Abra um produto, acesse a seção `,_jsx(_components.strong,{children:`Entitlements`}),` e selecione os entitlements a serem entregues quando o produto for comprado. Um produto pode entregar vários entitlements ao mesmo tempo. Por exemplo, um plano Pro pode incluir uma chave de licença, acesso ao GitHub e uma função no Discord.`]}),`\n`,_jsx(Frame,{caption:`Attaching entitlements to a product. Selected entitlements are delivered on every successful purchase or active subscription.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/attach-to-product.png?fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=965ad78262791fa8dbb712b4fdf89538`,alt:`Painel de seleção de entitlements do produto mostrando caixas de seleção para cada entitlement disponível`,style:{maxHeight:`500px`,width:`auto`},\"data-og-width\":`2000`,width:`2000`,\"data-og-height\":`1197`,height:`1197`,\"data-path\":`images/entitlements/attach-to-product.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/attach-to-product.png?w=280\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=4b98785a408414890f3247f318c96740 280w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/attach-to-product.png?w=560\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=64f89fb68e337ec53ff48c75f0c4dc4e 560w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/attach-to-product.png?w=840\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=2c289e402cf161b27d7c0f90b81ccd6f 840w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/attach-to-product.png?w=1100\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=0632a046cb6d1c5e6529f3d63911f5d8 1100w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/attach-to-product.png?w=1650\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=7e9d6f96690fcd3e53eebef77df2d279 1650w, https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/attach-to-product.png?w=2500\u0026fit=max\u0026auto=format\u0026n=do-W-dMDGVB_xzr_\u0026q=85\u0026s=adbc6c5a189350107f9faf43b2a47224 2500w`})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`experiência-do-cliente`,children:`Experiência do Cliente`}),`\n`,_jsx(Heading,{level:`3`,id:`e-mail-e-customer-portal`,children:`E-mail e Customer Portal`}),`\n`,_jsxs(_components.p,{children:[`Após uma compra, o cliente recebe um e-mail de entrega com a chave de licença, links para download, links de convite OAuth ou o convite da plataforma aplicável aos entitlements do produto. Os mesmos detalhes continuam disponíveis no `,_jsx(_components.a,{href:`/features/customer-portal`,children:`Customer Portal`}),`, no histórico de pedidos, enquanto o grant estiver ativo.`]}),`\n`,_jsx(Heading,{level:`3`,id:`entrega-baseada-em-oauth`,children:`Entrega baseada em OAuth`}),`\n`,_jsxs(_components.p,{children:[`O acesso de assinantes ao Discord, GitHub e Notion exige que o cliente autorize o Dodo Payments a conceder esse acesso. Esses grants permanecem como `,_jsx(_components.code,{children:`Pending`}),` até que o cliente conclua o fluxo OAuth pelo link no e-mail ou no Customer Portal. Depois que o cliente autoriza, o grant passa para `,_jsx(_components.code,{children:`Delivered`}),` e o Dodo Payments provisiona o acesso à plataforma.`]}),`\n`,_jsx(Heading,{level:`3`,id:`revogação`,children:`Revogação`}),`\n`,_jsx(_components.p,{children:`Quando um grant é revogado, o Dodo Payments remove o acesso na plataforma: remove a função do Discord, remove o colaborador do GitHub ou desativa a chave de licença. O cliente vê a alteração no Customer Portal.`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Para Digital Files, a revogação impede novos URLs de download pré-assinados, mas não invalida cópias que o cliente já tenha baixado. Planeje o controle de acesso ao seu conteúdo levando isso em consideração.`})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`gerenciar-grants`,children:`Gerenciar Grants`}),`\n`,_jsxs(_components.p,{children:[`Abra qualquer entitlement no dashboard para ver seus grants. O painel de detalhes mostra o total concedido, um filtro de status e uma linha por grant com o cliente, a data de acesso, o status e uma ação `,_jsx(_components.strong,{children:`Revoke`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Para gerenciar grants programaticamente, liste-os com o filtro `,_jsx(_components.code,{children:`status`}),` e revogue um único grant pelo ID:`]}),`\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`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`});`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// List grants for an entitlement`})}),`\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:` grants`}),_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:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`grants`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`list`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'ent_abc123'`}),_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:` status:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Delivered'`}),_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`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Revoke a single grant`})}),`\n`,_jsxs(_components.span,{className:`line`,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:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`grants`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`revoke`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'entg_xyz789'`}),_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:` id:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'ent_abc123'`}),_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:`10`,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:`10`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# Assumes client = DodoPayments(bearer_token=os.environ[\"DODO_PAYMENTS_API_KEY\"])`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`grants `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` client.entitlements.grants.list(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"ent_abc123\"`}),_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:` status`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Delivered\"`}),_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`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`client.entitlements.grants.revoke(`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"entg_xyz789\"`}),_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:` id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ent_abc123\"`}),_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:`13`,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:`13`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Assumes client := dodopayments.NewClient() and ctx := context.Background().`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`grants`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},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:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Grants`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`List`}),_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:` ctx`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ent_abc123\"`}),_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:`EntitlementGrantListParams`}),_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:` Status`}),_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:`EntitlementGrantListParamsStatusDelivered`}),_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`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` !=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` nil`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` panic`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Error`}),_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`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`fmt`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Println`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`len`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`grants`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Items`}),_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\":`#9CDCFE`},children:`_`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`err`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},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:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Grants`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Revoke`}),_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:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ent_abc123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"entg_xyz789\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`gerenciamento-pela-api`,children:`Gerenciamento pela API`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Create Entitlement`,icon:`plus`,href:`/api-reference/entitlements/create-entitlement`,children:_jsx(_components.p,{children:`Crie um entitlement de qualquer tipo de integração.`})}),_jsx(Card,{title:`List Entitlements`,icon:`list`,href:`/api-reference/entitlements/list-entitlements`,children:_jsx(_components.p,{children:`Liste entitlements filtrados por tipo de integração.`})}),_jsx(Card,{title:`Get Entitlement`,icon:`magnifying-glass`,href:`/api-reference/entitlements/get-entitlement`,children:_jsx(_components.p,{children:`Recupere um entitlement e sua configuração resolvida.`})}),_jsx(Card,{title:`Update Entitlement`,icon:`pen`,href:`/api-reference/entitlements/update-entitlement`,children:_jsx(_components.p,{children:`Atualize o nome, a descrição ou a configuração da integração.`})}),_jsx(Card,{title:`Delete Entitlement`,icon:`trash`,href:`/api-reference/entitlements/delete-entitlement`,children:_jsx(_components.p,{children:`Exclua logicamente um entitlement. Os grants existentes não são revogados, mas o Dodo Payments deixa de gerenciá-los.`})}),_jsx(Card,{title:`Upload File`,icon:`upload`,href:`/api-reference/entitlements/upload-file`,children:_jsx(_components.p,{children:`Faça upload de um arquivo de até 500 MiB para um entitlement de Digital Files.`})}),_jsx(Card,{title:`List Grants`,icon:`users`,href:`/api-reference/entitlements/list-grants`,children:_jsx(_components.p,{children:`Liste os grants de um entitlement, filtrados por status e cliente.`})}),_jsx(Card,{title:`Revoke Grant`,icon:`ban`,href:`/api-reference/entitlements/revoke-grant`,children:_jsx(_components.p,{children:`Revogue um único grant manualmente.`})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`webhooks`,children:`Webhooks`}),`\n`,_jsx(_components.p,{children:`O Dodo Payments envia quatro eventos de webhook para o ciclo de vida do grant. Inscreva-se neles para manter seu aplicativo sincronizado com aquilo a que cada cliente pode ter acesso.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Evento`}),_jsx(_components.th,{children:`Ocorre quando`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`entitlement_grant.created`})}),_jsxs(_components.td,{children:[`Um grant é criado. Grants de chaves de licença preenchidos automaticamente e grants de feature flags chegam como `,_jsx(_components.code,{children:`Delivered`}),`. Grants de chaves de licença preenchidos manualmente e todas as outras integrações chegam como `,_jsx(_components.code,{children:`Pending`}),` e depois passam para `,_jsx(_components.code,{children:`Delivered`}),` quando a chamada da plataforma é bem-sucedida ou, para integrações baseadas em OAuth, quando o cliente autoriza.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`entitlement_grant.delivered`})}),_jsxs(_components.td,{children:[`Um grant existente passa para `,_jsx(_components.code,{children:`Delivered`}),`, então o cliente obtém acesso. Um grant que já esteja como `,_jsx(_components.code,{children:`Delivered`}),` na criação dispara apenas `,_jsx(_components.code,{children:`created`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`entitlement_grant.failed`})}),_jsxs(_components.td,{children:[`Não foi possível entregar o grant. Verifique `,_jsx(_components.code,{children:`error_code`}),` e `,_jsx(_components.code,{children:`error_message`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`entitlement_grant.revoked`})}),_jsxs(_components.td,{children:[`O acesso foi retirado. Verifique `,_jsx(_components.code,{children:`revocation_reason`}),`.`]})]})]})]}),`\n`,_jsx(Card,{title:`Entitlement Grant Webhook Payloads`,icon:`bell`,href:`/developer-resources/webhooks/intents/entitlement-grant`,children:_jsxs(_components.p,{children:[`Veja o schema completo do payload, exemplos de eventos e a referência de `,_jsx(_components.code,{children:`revocation_reason`}),`.`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`boas-práticas`,children:`Boas práticas`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Use um entitlement por canal de entrega.`}),` Não compartilhe um entitlement do Discord entre produtos com intenções de função diferentes. Crie um entitlement por função para que a revogação permaneça limpa.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Faça testes primeiro no modo de teste.`}),` Crie o entitlement, associe-o a um produto de teste, execute um checkout e observe o grant passar de `,_jsx(_components.code,{children:`Pending`}),` para `,_jsx(_components.code,{children:`Delivered`}),`. Depois, cancele a assinatura de teste e confirme que o grant foi revogado.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Escute `,_jsx(_components.code,{children:`entitlement_grant.delivered`}),`, não `,_jsx(_components.code,{children:`payment.succeeded`}),`.`]}),` Um pagamento pode ser bem-sucedido antes que o fulfillment seja concluído, especialmente em fluxos OAuth. Aguarde o grant chegar a `,_jsx(_components.code,{children:`Delivered`}),` antes de desbloquear funcionalidades dependentes em seus próprios sistemas. Um grant entregue na criação, como uma chave de licença preenchida automaticamente ou uma feature flag, chega como `,_jsx(_components.code,{children:`entitlement_grant.created`}),` com `,_jsx(_components.code,{children:`status: \"Delivered\"`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Trate `,_jsx(_components.code,{children:`entitlement_grant.failed`}),` como acionável.`]}),` Um grant com falha significa que um cliente pagou, mas não obteve acesso. Apresente esses grants à sua equipe de suporte ou acione uma nova emissão.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Mapeie `,_jsx(_components.code,{children:`revocation_reason`}),` para seus fluxos de retenção.`]}),` Uma revogação `,_jsx(_components.code,{children:`subscription_on_hold`}),` pode ser recuperada, pois o cliente pode atualizar o cartão. Uma revogação `,_jsx(_components.code,{children:`manual`}),` é intencional. Trate-as de forma diferente nas mensagens aos clientes.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Não revogue o acesso em `,_jsx(_components.code,{children:`subscription.past_due`}),`.`]}),` Esse evento inicia um `,_jsx(_components.a,{href:`/features/subscription#grace-period`,children:`período de carência`}),`, e o cliente mantém o acesso até o fim da janela. Aguarde `,_jsx(_components.code,{children:`subscription.on_hold`}),` ou `,_jsx(_components.code,{children:`subscription.cancelled`}),`.`]}),`\n`]})]})}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":"Introduction","sidebarTitle":"Introduction","description":"Entregue chaves de licença, arquivos para download, feature flags e acesso ao Discord, GitHub, Telegram, Framer e Notion automaticamente quando os clientes pagarem.","icon":"box-archive","keywords":["Dodo Payments","entitlements","fulfillment","license keys","digital delivery","platform access"],"href":"/pt-BR/features/entitlements/introduction"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"O que são Entitlements?","slug":"o-que-são-entitlements","depth":2,"children":[]},{"title":"Available Integrations","slug":"available-integrations","depth":2,"children":[]},{"title":"How Grants Work","slug":"how-grants-work","depth":2,"children":[{"title":"Grant Lifecycle","slug":"grant-lifecycle","depth":3,"children":[]},{"title":"Comportamento dos Grants por Evento","slug":"comportamento-dos-grants-por-evento","depth":3,"children":[]}]},{"title":"Crie seu primeiro entitlement","slug":"crie-seu-primeiro-entitlement","depth":2,"children":[]},{"title":"Associe Entitlements a Produtos","slug":"associe-entitlements-a-produtos","depth":2,"children":[]},{"title":"Experiência do Cliente","slug":"experiência-do-cliente","depth":2,"children":[{"title":"E-mail e Customer Portal","slug":"e-mail-e-customer-portal","depth":3,"children":[]},{"title":"Entrega baseada em OAuth","slug":"entrega-baseada-em-oauth","depth":3,"children":[]},{"title":"Revogação","slug":"revogação","depth":3,"children":[]}]},{"title":"Gerenciar Grants","slug":"gerenciar-grants","depth":2,"children":[]},{"title":"Gerenciamento pela API","slug":"gerenciamento-pela-api","depth":2,"children":[]},{"title":"Webhooks","slug":"webhooks","depth":2,"children":[]},{"title":"Boas práticas","slug":"boas-práticas","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":"Introduction - Dodo Payments Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/features/entitlements/introduction","matchLevel":1},"es":{"href":"/es/features/entitlements/introduction","matchLevel":1},"ar":{"href":"/ar/features/entitlements/introduction","matchLevel":1},"fr":{"href":"/fr/features/entitlements/introduction","matchLevel":1},"de":{"href":"/de/features/entitlements/introduction","matchLevel":1},"id":{"href":"/id/features/entitlements/introduction","matchLevel":1},"ja":{"href":"/ja/features/entitlements/introduction","matchLevel":1},"ko":{"href":"/ko/features/entitlements/introduction","matchLevel":1},"pt-BR":{"href":"/pt-BR/features/entitlements/introduction","matchLevel":0},"vi":{"href":"/vi/features/entitlements/introduction","matchLevel":1},"cn":{"href":"/cn/features/entitlements/introduction","matchLevel":1},"hi":{"href":"/hi/features/entitlements/introduction","matchLevel":1},"it":{"href":"/it/features/entitlements/introduction","matchLevel":1},"sv":{"href":"/sv/features/entitlements/introduction","matchLevel":1}}},"lastModified":"2026-09-26T16:06:28.332Z","gitLastModified":"2026-09-26T16:03:47.000Z","originalFileLocation":"pt-BR/features/entitlements/introduction.mdx","locale":"pt-BR"},"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=\"Entregue chaves de licença, arquivos para download, feature flags e acesso ao Discord, GitHub, Telegram, Framer e Notion automaticamente quando os clientes pagarem.\">\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=\"Introduction - Dodo Payments Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Entregue chaves de licença, arquivos para download, feature flags e acesso ao Discord, GitHub, Telegram, Framer e Notion automaticamente quando os clientes pagarem.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Dodo Payments Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.dodopayments.com/pt-BR/features/entitlements/introduction\">\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=Introduction\u0026amp;description=Entregue+chaves+de+licen%C3%A7a%2C+arquivos+para+download%2C+feature+flags+e+acesso+ao+Discord%2C+GitHub%2C+Telegram%2C+Framer+e+Notion+automaticamente+quando+os+clientes+paga\u0026amp;theme=fcc3a546490e883f7462a320\u0026amp;signature=288f737d3de8b0a3f9f5c647771bc637a444d24c73f2121f1889124dfa853777\">\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=\"Introduction - Dodo Payments Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Entregue chaves de licença, arquivos para download, feature flags e acesso ao Discord, GitHub, Telegram, Framer e Notion automaticamente quando os clientes pagarem.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://dodopayments.mintlify.site/_mintlify/api/og/v2?division=Entitlements\u0026amp;title=Introduction\u0026amp;description=Entregue+chaves+de+licen%C3%A7a%2C+arquivos+para+download%2C+feature+flags+e+acesso+ao+Discord%2C+GitHub%2C+Telegram%2C+Framer+e+Notion+automaticamente+quando+os+clientes+paga\u0026amp;theme=fcc3a546490e883f7462a320\u0026amp;signature=288f737d3de8b0a3f9f5c647771bc637a444d24c73f2121f1889124dfa853777\">\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/pt-BR/features/entitlements/introduction\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/pt-BR/features/entitlements/introduction.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"pt-BR\" href=\"https://docs.dodopayments.com/pt-BR/features/entitlements/introduction\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.dodopayments.com/features/entitlements/introduction\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"es\" href=\"https://docs.dodopayments.com/es/features/entitlements/introduction\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ar\" href=\"https://docs.dodopayments.com/ar/features/entitlements/introduction\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"fr\" href=\"https://docs.dodopayments.com/fr/features/entitlements/introduction\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"de\" href=\"https://docs.dodopayments.com/de/features/entitlements/introduction\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"id\" href=\"https://docs.dodopayments.com/id/features/entitlements/introduction\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://docs.dodopayments.com/ja/features/entitlements/introduction\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://docs.dodopayments.com/ko/features/entitlements/introduction\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"vi\" href=\"https://docs.dodopayments.com/vi/features/entitlements/introduction\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://docs.dodopayments.com/cn/features/entitlements/introduction\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"hi\" href=\"https://docs.dodopayments.com/hi/features/entitlements/introduction\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"it\" href=\"https://docs.dodopayments.com/it/features/entitlements/introduction\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"sv\" href=\"https://docs.dodopayments.com/sv/features/entitlements/introduction\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.dodopayments.com/features/entitlements/introduction\">\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/pt-BR/features/entitlements/introduction#webpage\",\"url\":\"https://docs.dodopayments.com/pt-BR/features/entitlements/introduction\",\"name\":\"Introduction\",\"description\":\"Entregue chaves de licença, arquivos para download, feature flags e acesso ao Discord, GitHub, Telegram, Framer e Notion automaticamente quando os clientes pagarem.\",\"dateModified\":\"2026-09-26T16:03:47.000Z\",\"isPartOf\":{\"@id\":\"https://docs.dodopayments.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.dodopayments.com/pt-BR/features/entitlements/introduction#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.dodopayments.com/pt-BR/features/entitlements/introduction#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Features\",\"item\":\"https://docs.dodopayments.com/pt-BR/features/products\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introduction\",\"item\":\"https://docs.dodopayments.com/pt-BR/features/entitlements/introduction\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.dodopayments.com/pt-BR/features/entitlements/introduction#article\",\"headline\":\"Introduction\",\"name\":\"Introduction\",\"description\":\"Entregue chaves de licença, arquivos para download, feature flags e acesso ao Discord, GitHub, Telegram, Framer e Notion automaticamente quando os clientes pagarem.\",\"url\":\"https://docs.dodopayments.com/pt-BR/features/entitlements/introduction\",\"mainEntityOfPage\":{\"@id\":\"https://docs.dodopayments.com/pt-BR/features/entitlements/introduction#webpage\"},\"dateModified\":\"2026-09-26T16:03:47.000Z\",\"keywords\":\"Dodo Payments, entitlements, fulfillment, license keys, digital delivery, platform 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":"/pt-BR/features/entitlements/introduction.md","siteName":"Dodo Payments Documentation","nav":{"global":null,"languages":[{"language":"en","pages":[{"title":"en","href":"/features/entitlements/introduction"}]},{"language":"es","pages":[{"title":"es","href":"/es/features/entitlements/introduction"}]},{"language":"ar","pages":[{"title":"ar","href":"/ar/features/entitlements/introduction"}]},{"language":"fr","pages":[{"title":"fr","href":"/fr/features/entitlements/introduction"}]},{"language":"de","pages":[{"title":"de","href":"/de/features/entitlements/introduction"}]},{"language":"id","pages":[{"title":"id","href":"/id/features/entitlements/introduction"}]},{"language":"ja","pages":[{"title":"ja","href":"/ja/features/entitlements/introduction"}]},{"language":"ko","pages":[{"title":"ko","href":"/ko/features/entitlements/introduction"}]},{"language":"pt-BR","tabs":[{"tab":"Docs","icon":"book","groups":[{"group":"Getting Started","pages":[{"title":"Welcome to Dodo Payments","sidebarTitle":"Introduction","icon":"rocket","href":"/pt-BR/introduction"},{"title":"Build with AI Coding Agents","sidebarTitle":"AI Coding Agents","icon":"robot","href":"/pt-BR/developer-resources/build-with-ai-coding-agents"},{"title":"Migrar para Dodo Payments","icon":"arrow-right-arrow-left","href":"/pt-BR/migrate-to-dodo"},{"title":"Account Verification","icon":"id-card","href":"/pt-BR/miscellaneous/verification-process"}]},{"group":"Features","pages":[{"sidebarTitle":"Produtos","title":"Produtos","icon":"box","href":"/pt-BR/features/products"},{"sidebarTitle":"Coleções de Produtos","title":"Coleções de Produtos","icon":"layer-group","href":"/pt-BR/features/product-collections"},{"sidebarTitle":"Pagamentos únicos","title":"Pagamentos únicos","icon":"credit-card","href":"/pt-BR/features/one-time-payment-products"},{"group":"Subscriptions","icon":"infinity","pages":[{"sidebarTitle":"Subscriptions","title":"Subscriptions","icon":"repeat","href":"/pt-BR/features/subscription"},{"sidebarTitle":"Complementos","title":"Complementos para Assinaturas","icon":"puzzle","href":"/pt-BR/features/addons"},{"title":"On-Demand Subscriptions","icon":"bolt","href":"/pt-BR/developer-resources/ondemand-subscriptions"}]},{"group":"Usage Based Billing","icon":"arrow-trend-up","pages":[{"sidebarTitle":"Introdução","title":"Cobrança baseada em uso","icon":"box","href":"/pt-BR/features/usage-based-billing/introduction"},{"sidebarTitle":"Medidores","title":"Medidores","icon":"sliders","href":"/pt-BR/features/usage-based-billing/meters"},{"sidebarTitle":"Ingestão de Eventos","title":"Ingestão de Eventos","icon":"bolt","href":"/pt-BR/features/usage-based-billing/event-ingestion"},{"group":"Ingestion Blueprints","icon":"copy","pages":[{"sidebarTitle":"Introdução","title":"Blueprints de Ingestão","icon":"box","href":"/pt-BR/features/usage-based-billing/ingestion-blueprints"},{"title":"Blueprint de LLM","icon":"brain-circuit","href":"/pt-BR/developer-resources/ingestion-blueprints/llm"},{"title":"Blueprint do API Gateway","icon":"cloud","href":"/pt-BR/developer-resources/ingestion-blueprints/api-gateway"},{"title":"Blueprint de Armazenamento de Objetos","icon":"box-archive","href":"/pt-BR/developer-resources/ingestion-blueprints/object-storage"},{"title":"Stream Blueprint","icon":"tower-broadcast","href":"/pt-BR/developer-resources/ingestion-blueprints/stream"},{"title":"Modelo de Intervalo de Tempo","icon":"clock","href":"/pt-BR/developer-resources/ingestion-blueprints/time-range"}]}]},{"sidebarTitle":"Credit-Based Billing","title":"Credit-Based Billing","icon":"coins","tag":"NEW","href":"/pt-BR/features/credit-based-billing"},{"sidebarTitle":"Cobrança Baseada em Assentos","title":"Cobrança Baseada em Assentos","icon":"users","href":"/pt-BR/features/seat-based-billing"},{"sidebarTitle":"Cobrança híbrida","title":"Modelos de cobrança híbrida","icon":"layer-group","href":"/pt-BR/features/hybrid-billing"},{"title":"Upsells \u0026 Downsells","icon":"arrow-up-right-dots","href":"/pt-BR/features/upsells-and-downsells"},{"group":"Customers","icon":"user-group","pages":[{"title":"Customer Management","icon":"user-group","href":"/pt-BR/features/customers"},{"sidebarTitle":"Portal do Cliente","title":"Portal do Cliente","icon":"id-card","href":"/pt-BR/features/customer-portal"},{"title":"Carteiras de clientes","icon":"wallet","tag":"NEW","href":"/pt-BR/features/customer-wallet"},{"sidebarTitle":"E-mails enviados","title":"Registros de e-mails de clientes","icon":"envelope","tag":"NEW","href":"/pt-BR/features/email-logs"},{"sidebarTitle":"Lista de bloqueio de clientes","title":"Lista de bloqueio de clientes","icon":"user-slash","tag":"NEW","href":"/pt-BR/features/customer-blocklist"}]},{"sidebarTitle":"Descontos","title":"Descontos","icon":"percent","href":"/pt-BR/features/discount-codes"},{"group":"Recovery","icon":"rotate","tag":"NEW","pages":[{"sidebarTitle":"Visão Geral","title":"Recuperação de Receita","icon":"rotate","href":"/pt-BR/features/recovery/overview"},{"sidebarTitle":"Recuperação de Carrinho Abandonado","title":"Recuperação de Carrinho Abandonado","icon":"cart-shopping","href":"/pt-BR/features/recovery/abandoned-cart-recovery"},{"sidebarTitle":"Gestão de Inscrições","title":"Gestão de Inscrições","icon":"repeat","href":"/pt-BR/features/recovery/subscription-dunning"},{"sidebarTitle":"Novas tentativas de pagamento de assinaturas","title":"Novas tentativas de pagamento de assinaturas","icon":"arrow-rotate-right","href":"/pt-BR/features/recovery/payment-retries"},{"sidebarTitle":"Retry manual","title":"Retry manual de pagamento","icon":"hand-pointer","tag":"NEW","href":"/pt-BR/features/recovery/manual-retry"}]},{"group":"Transactions","icon":"credit-card","pages":[{"title":"Pagamentos","icon":"money-bill-transfer","href":"/pt-BR/features/transactions/payments"},{"title":"Reembolsos","icon":"rotate-left","href":"/pt-BR/features/transactions/refunds"},{"title":"Disputes","description":"Veja e responda a disputas na página Transactions e interrompa chargebacks antes que sejam registrados com Visa RDR, Ethoca alerts e deflections.","icon":"circle-exclamation","href":"/pt-BR/features/transactions/disputes"}]},{"group":"Entitlements","icon":"gift","tag":"NEW","pages":[{"title":"Introduction","sidebarTitle":"Introduction","icon":"box-archive","href":"/pt-BR/features/entitlements/introduction"},{"title":"Chaves de Licença","description":"Emita chaves de licença com limites de ativação e expiração por meio do entitlement License Key e, em seguida, ative, valide e desative-as no seu software.","icon":"key","href":"/pt-BR/features/license-keys"},{"title":"Entrega de Produtos Digitais","sidebarTitle":"Produtos Digitais","icon":"download","href":"/pt-BR/features/digital-product-delivery"},{"title":"Entitlement de Feature Flag","sidebarTitle":"Feature Flags","icon":"flag","tag":"NEW","href":"/pt-BR/features/entitlements/feature-flags"},{"title":"Discord Entitlement","sidebarTitle":"Discord","icon":"discord","href":"/pt-BR/features/entitlements/discord"},{"title":"GitHub Entitlement","sidebarTitle":"GitHub","icon":"github","href":"/pt-BR/features/entitlements/github"},{"title":"Telegram Entitlement","sidebarTitle":"Telegram","icon":"telegram","href":"/pt-BR/features/entitlements/telegram"},{"title":"Entitlement do Framer","sidebarTitle":"Framer","icon":"puzzle-piece","href":"/pt-BR/features/entitlements/framer"},{"title":"Notion Entitlement","sidebarTitle":"Notion","icon":"book","href":"/pt-BR/features/entitlements/notion"}]},{"group":"Payouts and Balances","icon":"wallet","pages":[{"title":"Processo de Pagamentos","icon":"money-bill","href":"/pt-BR/features/payouts/payout-structure"},{"title":"Saldos","icon":"file-invoice-dollar","href":"/pt-BR/features/account-summary-payout-wallet"}]},{"group":"Account Management","icon":"user","pages":[{"sidebarTitle":"Arquivar uma empresa","title":"Arquivando uma empresa","icon":"box-archive","tag":"NEW","href":"/pt-BR/features/archive-business"},{"title":"Configuração Multi-Brand","icon":"building-columns","href":"/pt-BR/features/multi-brands"},{"title":"Gerenciamento de Faturas","icon":"file-invoice-dollar","href":"/pt-BR/features/invoice-generation"},{"title":"Membros da Equipe","icon":"user-gear","href":"/pt-BR/features/team"},{"title":"Preferências de Comunicação","sidebarTitle":"Preferências de Comunicação","icon":"bell","tag":"NEW","href":"/pt-BR/features/communication-preferences"},{"title":"Minha Conta","icon":"user-gear","href":"/pt-BR/miscellaneous/accounts"}]},{"group":"Pricing","icon":"dollar-sign","pages":[{"sidebarTitle":"Preços com Impostos Inclusos","title":"Preços com Impostos Inclusos","icon":"file-invoice","href":"/pt-BR/features/tax-inclusive-pricing"},{"sidebarTitle":"Pague o Que Quiser","title":"Preços Pague o Que Quiser","icon":"dollar-sign","href":"/pt-BR/features/pay-what-you-want"},{"title":"Pagamentos B2B","icon":"money-bills","href":"/pt-BR/features/b2b-payments"},{"title":"Preços Localizados","sidebarTitle":"Preços Localizados","icon":"earth-americas","href":"/pt-BR/features/localized-pricing"},{"sidebarTitle":"Paridade do Poder de Compra","title":"Purchasing Power Parity","tag":"NEW","icon":"money-bill-trend-up","href":"/pt-BR/features/purchasing-power-parity"},{"sidebarTitle":"Charm Pricing","title":"Charm Pricing","tag":"NEW","icon":"tag","href":"/pt-BR/features/charm-pricing"}]},{"sidebarTitle":"Finalização de Compra","title":"Recursos de Finalização de Compra","icon":"cart-shopping","href":"/pt-BR/features/checkout"},{"sidebarTitle":"Design","title":"Design \u0026 Theme Customization","icon":"palette","tag":"NEW","href":"/pt-BR/features/design"},{"group":"Payment Methods","icon":"money-bill-wave","pages":[{"title":"Payment Methods","sidebarTitle":"Overview","icon":"layer-group","href":"/pt-BR/features/payment-methods"},{"title":"Cartões de crédito e débito","sidebarTitle":"Cartões","icon":"credit-card","href":"/pt-BR/features/payment-methods/cards"},{"title":"Carteiras Digitais","sidebarTitle":"Carteiras Digitais","icon":"wallet","href":"/pt-BR/features/payment-methods/digital-wallets"},{"title":"Buy Now Pay Later (BNPL)","sidebarTitle":"BNPL","icon":"calendar-days","href":"/pt-BR/features/payment-methods/bnpl"},{"title":"ACH Direct Debit","sidebarTitle":"ACH Direct Debit","icon":"building-columns","href":"/pt-BR/features/payment-methods/ach"},{"title":"Métodos de pagamento na Índia","sidebarTitle":"Índia","icon":"indian-rupee-sign","href":"/pt-BR/features/payment-methods/india"},{"title":"Métodos de Pagamento Europeus","sidebarTitle":"Europa","icon":"euro-sign","href":"/pt-BR/features/payment-methods/europe"},{"title":"Métodos de Pagamento na Coreia do Sul","sidebarTitle":"Coreia do Sul","icon":"won-sign","href":"/pt-BR/features/payment-methods/south-korea"},{"title":"Métodos de pagamento da Ásia-Pacífico","sidebarTitle":"Ásia-Pacífico","icon":"earth-asia","href":"/pt-BR/features/payment-methods/asia-pacific"},{"title":"Pix","sidebarTitle":"Pix","icon":"brazilian-real-sign","href":"/pt-BR/features/payment-methods/pix"},{"title":"Stablecoins","sidebarTitle":"Stablecoins","icon":"dollar-sign","href":"/pt-BR/features/payment-methods/stablecoins"},{"title":"WeChat Pay","sidebarTitle":"WeChat Pay","icon":"comment-dollar","href":"/pt-BR/features/payment-methods/wechat"}]},{"title":"Analytics de terceiros","sidebarTitle":"Analytics de terceiros","icon":"chart-line","tag":"NEW","href":"/pt-BR/features/analytics"},{"sidebarTitle":"Moeda Adaptativa","title":"Moeda Adaptativa","icon":"money-bill-transfer","href":"/pt-BR/features/adaptive-currency"},{"group":"BYOP","icon":"shuffle","tag":"BETA","pages":[{"title":"Traga Seu Próprio Processador (BYOP)","sidebarTitle":"Visão geral","tag":"BETA","icon":"boxes-stacked","href":"/pt-BR/features/byop"},{"title":"Stripe - Conectar \u0026 Acesso à API Raw Card","sidebarTitle":"Stripe","icon":"stripe","href":"/pt-BR/features/byop/stripe"},{"title":"Adyen - Conexão e Acesso à API de Cartão Bruto","sidebarTitle":"Adyen","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/adyen.svg","href":"/pt-BR/features/byop/adyen"}]},{"title":"Loja Virtual","icon":"store","href":"/pt-BR/features/storefront"},{"title":"Afiliados","icon":"users-line","href":"/pt-BR/features/affiliates"},{"title":"API de moderação","icon":"shield-check","tag":"NEW","href":"/pt-BR/features/moderation"},{"title":"Vendendo Bens Digitais no iOS","icon":"mobile","href":"/pt-BR/features/appstore-digital-goods"},{"title":"Analytics do Painel","sidebarTitle":"Analytics do Painel","icon":"chart-line","href":"/pt-BR/features/analytics-and-reporting"},{"title":"Relatórios","sidebarTitle":"Relatórios","icon":"file-invoice","href":"/pt-BR/features/reports"}]},{"group":"Integrate","pages":[{"group":"SDKs","icon":"box-open","pages":[{"sidebarTitle":"Visão Geral","title":"SDKs oficiais","icon":"box","href":"/pt-BR/developer-resources/dodo-payments-sdks"},{"title":"TypeScript","icon":"js","href":"/pt-BR/developer-resources/sdks/typescript"},{"title":"Python","icon":"python","href":"/pt-BR/developer-resources/sdks/python"},{"title":"Go","icon":"golang","href":"/pt-BR/developer-resources/sdks/go"},{"title":"Ruby","icon":"gem","href":"/pt-BR/developer-resources/sdks/ruby"},{"title":"Java","icon":"java","href":"/pt-BR/developer-resources/sdks/java"},{"title":"Kotlin","icon":"k","href":"/pt-BR/developer-resources/sdks/kotlin"},{"title":"PHP","icon":"php","href":"/pt-BR/developer-resources/sdks/php"},{"title":"C#","icon":"c","href":"/pt-BR/developer-resources/sdks/csharp"},{"title":"Rust","icon":"rust","href":"/pt-BR/developer-resources/sdks/rust"}]},{"group":"Mobile Checkout SDKs","icon":"mobile","pages":[{"title":"Mobile Integration Guide","sidebarTitle":"Integration Guide","icon":"mobile","href":"/pt-BR/developer-resources/mobile-integration"},{"title":"Android","sidebarTitle":"Android","tag":"NEW","icon":"android","href":"/pt-BR/developer-resources/sdks/android"},{"title":"iOS","sidebarTitle":"iOS","tag":"NEW","icon":"apple","href":"/pt-BR/developer-resources/sdks/ios"},{"title":"React Native","sidebarTitle":"React Native","tag":"NEW","icon":"react","href":"/pt-BR/developer-resources/sdks/react-native"},{"title":"Flutter","sidebarTitle":"Flutter","tag":"NEW","icon":"layer-group","href":"/pt-BR/developer-resources/sdks/flutter"}]},{"group":"Framework Adaptors","icon":"frame","pages":[{"sidebarTitle":"Visão Geral","title":"Visão Geral dos Adaptadores de Framework","icon":"box","href":"/pt-BR/developer-resources/framework-adaptors"},{"title":"Next.js Adaptor","icon":"code-merge","href":"/pt-BR/developer-resources/nextjs-adaptor"},{"title":"Adaptador do Better Auth","icon":"code-merge","href":"/pt-BR/developer-resources/better-auth-adaptor"},{"title":"Componente Convex","icon":"code-merge","href":"/pt-BR/developer-resources/convex-component"},{"title":"TanStack Adaptor","icon":"code-merge","href":"/pt-BR/developer-resources/tanstack-adaptor"},{"title":"Adaptador para Nuxt","icon":"code-merge","href":"/pt-BR/developer-resources/nuxt-adaptor"},{"title":"Adaptador Express","icon":"code-merge","href":"/pt-BR/developer-resources/express-adaptor"},{"title":"Astro Adaptor","icon":"code-merge","href":"/pt-BR/developer-resources/astro-adaptor"},{"title":"Adaptador SvelteKit","icon":"code-merge","href":"/pt-BR/developer-resources/sveltekit-adaptor"},{"title":"Hono Adaptor","icon":"code-merge","href":"/pt-BR/developer-resources/hono-adaptor"},{"title":"Remix Adaptor","icon":"code-merge","href":"/pt-BR/developer-resources/remix-adaptor"},{"title":"Adaptador Fastify","icon":"code-merge","href":"/pt-BR/developer-resources/fastify-adaptor"},{"title":"Bun Adaptor","icon":"code-merge","href":"/pt-BR/developer-resources/bun-adaptor"}]},{"group":"Webhooks","icon":"webhook","pages":[{"sidebarTitle":"Overview","title":"Webhooks","icon":"webhook","href":"/pt-BR/developer-resources/webhooks"},{"title":"Guia de eventos de Webhook","icon":"bell","href":"/pt-BR/developer-resources/webhooks/intents/webhook-events-guide"},{"group":"Webhook Payloads","icon":"code","pages":[{"title":"Pagamento","icon":"credit-card","href":"/pt-BR/developer-resources/webhooks/intents/payment"},{"sidebarTitle":"Assinatura","title":"Webhooks de assinatura","icon":"repeat","href":"/pt-BR/developer-resources/webhooks/intents/subscription"},{"title":"Reembolso","icon":"rotate-left","href":"/pt-BR/developer-resources/webhooks/intents/refund"},{"sidebarTitle":"Disputa","title":"Webhooks de Disputas","icon":"circle-exclamation","href":"/pt-BR/developer-resources/webhooks/intents/dispute"},{"title":"Chave de Licença","icon":"key","href":"/pt-BR/developer-resources/webhooks/intents/license-key"},{"title":"Concessão de Direitos","icon":"gift","href":"/pt-BR/developer-resources/webhooks/intents/entitlement-grant"},{"sidebarTitle":"Faturamento baseado em créditos","title":"Webhooks de faturamento baseado em créditos","icon":"coins","href":"/pt-BR/developer-resources/webhooks/intents/credit"},{"title":"Recuperação","icon":"rotate","href":"/pt-BR/developer-resources/webhooks/intents/recovery"},{"sidebarTitle":"Payout","title":"Payout Webhooks","icon":"money-bill-transfer","href":"/pt-BR/developer-resources/webhooks/intents/payout"}]},{"group":"Deploy to Cloud","icon":"rocket","pages":[{"title":"Funções Vercel","icon":"triangle","href":"/pt-BR/developer-resources/webhooks/examples/vercel-example"},{"title":"Cloudflare Workers","icon":"cloud","href":"/pt-BR/developer-resources/webhooks/examples/cloudflare-example"},{"title":"Supabase Edge Functions","icon":"bolt","href":"/pt-BR/developer-resources/webhooks/examples/supabase-example"},{"title":"Funções do Netlify","icon":"diamond","href":"/pt-BR/developer-resources/webhooks/examples/netlify-example"}]}]},{"group":"Testing \u0026 Demo Tools","icon":"flask","pages":[{"title":"Modo de Teste vs Modo Ao Vivo","icon":"toggle-on","href":"/pt-BR/miscellaneous/test-mode-vs-live-mode"},{"title":"Testing Process","icon":"flask","href":"/pt-BR/miscellaneous/testing-process"},{"title":"Produto de Demonstração Atlas","icon":"palette","href":"/pt-BR/features/atlas-demo-website"}]},{"group":"Boilerplates","icon":"box-open","pages":[{"sidebarTitle":"Expo","title":"Boilerplate do Expo","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/expo.svg","tag":"NEW","href":"/pt-BR/developer-resources/expo-boilerplate"},{"sidebarTitle":"Supabase","title":"Boilerplate do Supabase","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/supabase.svg","href":"/pt-BR/developer-resources/supabase-boilerplate"},{"sidebarTitle":"Plugin Figma","title":"Plugin do Figma","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/figma.svg","href":"/pt-BR/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":"/pt-BR/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":"/pt-BR/developer-resources/astro-boilerplate"},{"sidebarTitle":"FastAPI","title":"FastAPI Boilerplate","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/fastapi.svg","tag":"NEW","href":"/pt-BR/developer-resources/fastapi-boilerplate"},{"sidebarTitle":"Go","title":"Go Boilerplate","icon":"golang","tag":"NEW","href":"/pt-BR/developer-resources/go-boilerplate"}]},{"title":"Dodo CLI","icon":"terminal","tag":"NEW","href":"/pt-BR/developer-resources/sdks/cli"},{"title":"Overlay Checkout","icon":"cart-shopping","href":"/pt-BR/developer-resources/overlay-checkout"},{"title":"Checkout Inline","icon":"credit-card","href":"/pt-BR/developer-resources/inline-checkout"},{"title":"Billing SDK","icon":"boxes-stacked","href":"/pt-BR/developer-resources/billingsdk"},{"title":"Dodo Payments MCP Server","icon":"server","href":"/pt-BR/developer-resources/mcp-server"},{"title":"Agent Skills","icon":"wand-magic-sparkles","href":"/pt-BR/developer-resources/agent-skills"},{"sidebarTitle":"Sincronização de Banco de Dados","title":"Sincronize com seu banco de dados","icon":"database","href":"/pt-BR/developer-resources/dodo-sync"},{"sidebarTitle":"Migração de Assinaturas","title":"Migração de Assinaturas para Dodo Payments","icon":"file-import","href":"/pt-BR/miscellaneous/subscription-migration"}]},{"group":"Merchant of Record","pages":[{"sidebarTitle":"O que é MoR?","title":"Introdução","icon":"building-columns","href":"/pt-BR/features/mor-introduction"},{"title":"MoR vs PG","icon":"scale-balanced","href":"/pt-BR/features/mor-vs-pg"},{"title":"Países elegíveis para aceitação de comerciantes","icon":"globe","href":"/pt-BR/miscellaneous/accepted-countries-and-territories"},{"title":"Política de Revisão e Monitoramento","icon":"magnifying-glass","href":"/pt-BR/miscellaneous/review-monitoring-policy"},{"sidebarTitle":"Bypass of App Store Fees","title":"Como evitar as taxas da App Store e da Play Store usando Dodo Payments","icon":"shield-check","href":"/pt-BR/features/bypassing-app-store-fees"}]},{"group":"Miscellaneous","pages":[{"group":"Support Channels","icon":"headset","pages":[{"title":"Ajuda e Suporte","icon":"headset","href":"/pt-BR/miscellaneous/help-support"},{"title":"Solicitação de Funcionalidade e Roteiro","icon":"lightbulb","href":"/pt-BR/features/feature-request"}]},{"title":"Apps para Mobile e Desktop","icon":"mobile","href":"/pt-BR/features/mobile-app"},{"title":"Política de Relato de Segurança","icon":"shield","href":"/pt-BR/miscellaneous/security-policy"}]}]},{"tab":"Guides","icon":"compass","pages":[{"title":"Guides","href":"/pt-BR/developer-resources/integration-guide"}]},{"tab":"API Reference","icon":"rectangle-code","pages":[{"title":"API Reference","href":"/pt-BR/api-reference/introduction"}]},{"tab":"External Integrations","icon":"plug","pages":[{"title":"External Integrations","href":"/pt-BR/integrations/introduction"}]},{"tab":"Changelog","icon":"calendar-days","pages":[{"title":"Changelog","href":"/pt-BR/changelog/introduction"}]},{"tab":"Community Projects","icon":"users","pages":[{"title":"Community Projects","href":"/pt-BR/community/overview"}]}]},{"language":"vi","pages":[{"title":"vi","href":"/vi/features/entitlements/introduction"}]},{"language":"cn","pages":[{"title":"cn","href":"/cn/features/entitlements/introduction"}]},{"language":"hi","pages":[{"title":"hi","href":"/hi/features/entitlements/introduction"}]},{"language":"it","pages":[{"title":"it","href":"/it/features/entitlements/introduction"}]},{"language":"sv","pages":[{"title":"sv","href":"/sv/features/entitlements/introduction"}]}]},"basePath":"","title":"Introduction - 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"]}