Consegna automaticamente chiavi di licenza, file scaricabili, feature flag e accesso a Discord, GitHub, Telegram, Framer e Notion quando i clienti effettuano un pagamento.
Gli entitlement trasformano un pagamento completato o un abbonamento attivo in accesso: una chiave di licenza nella casella di posta del cliente, un feature flag verificato dalla tua app, un ruolo Discord, un repository GitHub, un template Notion, un link per il remix su Framer, un invito a una chat Telegram o un pacchetto di file scaricabili. Dodo Payments emette, monitora e revoca automaticamente questo accesso quando cambia il ciclo di vita del pagamento.
The Entitlements dashboard. Each entitlement is a reusable template; the right pane shows individual customer grants.
Un entitlement è una definizione riutilizzabile di qualcosa che fornisci a un cliente, ad esempio una chiave di licenza Pro, un ruolo Discord “Patrons”, l’accesso al tuo repository GitHub privato o un pacchetto di e-book scaricabili. Colleghi gli entitlement ai prodotti e Dodo Payments li consegna quando un cliente paga.Quando un cliente acquista il prodotto, Dodo Payments crea un grant: l’emissione di quell’entitlement per un singolo cliente. Un grant ha uno di quattro stati: Pending mentre la consegna è in corso, Delivered quando il cliente ha ottenuto l’accesso, Failed se la consegna non è stata completata e Revoked quando l’accesso viene ritirato.
Gli entitlement regolano il fulfillment (il cliente ha accesso?). I crediti regolano il consumo (quanto può utilizzarne?). Puoi collegare entrambi allo stesso prodotto. Consulta Credit-Based Billing per i crediti.
I grant seguono gli stessi eventi di pagamento e abbonamento che ricevi come webhook. Dodo Payments crea e revoca automaticamente i grant per gli acquisti, in base al ciclo di vita del pagamento, quindi non devi chiamare personalmente l’API dei grant.
Dodo Payments crea un grant quando un pagamento viene completato o un abbonamento diventa attivo. I grant dei feature flag iniziano come Delivered. Anche i grant delle chiavi di licenza iniziano come Delivered quando l’entitlement utilizza fulfillment_mode: auto (il valore predefinito). Con fulfillment_mode: manual, il grant inizia come Pending senza chiave, finché non ne fornisci una tramite Fulfill License Key Grant. Ogni altra integrazione inizia come Pending.Le integrazioni basate su OAuth (Discord, GitHub, Notion) espongono un oauth_url che il cliente visita per prestare il consenso. Dodo Payments tenta di generare questo URL quando crea il grant. Se l’operazione fallisce, il campo rimane null finché il cliente non avvia il flusso di accettazione dall’e-mail di consegna o dal Customer Portal. Le integrazioni dirette alla piattaforma (Telegram, Framer, Digital Files) rimangono Pending solo mentre la consegna viene predisposta, poi passano a Delivered.
2
Delivered
Quando la consegna viene completata, il grant passa a Delivered e viene impostato delivered_at. La consegna è completa quando viene generata la chiave di licenza, viene assegnato il ruolo, viene concesso l’accesso al repository, vengono risolti i link ai file o viene completato il flusso OAuth.
3
Failed
Se la chiamata all’integrazione restituisce un errore non ritentabile, come un token OAuth revocato, un’autorizzazione negata o un file che non esiste più, il grant passa a Failed. I campi error_code e error_message registrano il motivo.
4
Revoked
Quando l’accesso viene ritirato, ad esempio perché un abbonamento viene cancellato, viene emesso un rimborso o revochi il grant, il grant passa a Revoked. Il campo revocation_reason registra il fattore scatenante.
Ogni evento di pagamento e abbonamento modifica i grant come segue:
Evento
Comportamento
payment.succeeded (pagamento una tantum)
Emette un grant per ogni entitlement collegato. Un entitlement License Key emette un grant per ogni chiave.
payment.succeeded (pagamento collegato a un abbonamento)
Nessuna modifica. Gli eventi dell’abbonamento riportati di seguito gestiscono questi grant.
subscription.active
Emette grant per gli entitlement collegati che non ne hanno ancora uno e riemette i grant precedentemente revocati per lo stesso abbonamento. I grant revocati con manual, refund o platform_external non vengono riemessi.
subscription.renewed
Nessuna modifica. I grant esistenti persistono tra i rinnovi.
Revoca tutti i grant consegnati e in sospeso con revocation_reason: subscription_on_hold.
subscription.paused
Revoca tutti i grant consegnati e in sospeso con revocation_reason: SubscriptionPaused. A differenza degli altri motivi dell’abbonamento, questo valore usa PascalCase, quindi deve corrispondere esattamente.
subscription.unpaused
Riemette i grant precedentemente revocati per lo stesso abbonamento, come fa subscription.active.
subscription.cancelled
Revoca tutti i grant con revocation_reason: subscription_cancelled.
subscription.expired
Revoca tutti i grant con revocation_reason: subscription_expired.
subscription.plan_changed
Revoca tutti i grant attuali con revocation_reason: plan_changed, quindi emette grant per gli entitlement del nuovo piano.
refund.succeeded (pagamento una tantum)
Revoca i grant relativi a quel pagamento con revocation_reason: refund.
Revoca manuale tramite API
Revoca il grant con revocation_reason: manual. Le revoche manuali non vengono riemesse automaticamente al rinnovo dell’abbonamento.
Chiave di licenza disabilitata
Per i grant delle chiavi di licenza, la disabilitazione della chiave sottostante revoca il grant con revocation_reason: license_key_disabled. Riabilitando la chiave, il grant viene ripristinato automaticamente.
Deriva della piattaforma rilevata
Se il lato della piattaforma di un’integrazione non è più sincronizzato, ad esempio perché un ruolo Discord è stato rimosso manualmente, la GitHub App ha perso l’accesso al repository o un controllo di riconciliazione ha rilevato una destinazione mancante, Dodo Payments revoca il grant con revocation_reason: platform_external. Non viene riemesso automaticamente al rinnovo dell’abbonamento finché il problema della piattaforma non viene risolto.
I grant gestiti dagli abbonamenti sono idempotenti per (entitlement, customer, subscription), quindi rinnovi e riattivazioni non creano grant duplicati. I grant una tantum sono idempotenti per (entitlement, customer, payment).
Vai alla sezione Entitlements nella dashboard e fai clic su + per creare un entitlement.
2
Pick an Integration
Scegli il tipo di integrazione: License Key, Digital Files, Feature Flag, Discord, GitHub, Telegram, Figma, Framer o Notion. Per un’integrazione di piattaforma, collega prima il tuo account se non l’hai già fatto.
3
Configure Delivery
Compila i campi dell’integrazione. Ad esempio, GitHub richiede un repository e un livello di autorizzazione, Discord richiede un server e un ruolo opzionale, mentre License Key richiede un limite di attivazioni e una durata della licenza.
Creating a GitHub entitlement. Each integration shows the fields it needs.
4
Save
Fai clic su Create Entitlement. Ora puoi collegare l’entitlement a qualsiasi prodotto.
Apri un prodotto, vai alla sezione Entitlements e seleziona gli entitlement da consegnare quando il prodotto viene acquistato. Un prodotto può consegnare diversi entitlement contemporaneamente. Ad esempio, un piano Pro può includere una chiave di licenza, l’accesso a GitHub e un ruolo Discord.
Attaching entitlements to a product. Selected entitlements are delivered on every successful purchase or active subscription.
Dopo un acquisto, il cliente riceve un’e-mail di consegna con la chiave di licenza, i link per il download, i link di invito OAuth o l’invito alla piattaforma applicabile agli entitlement del prodotto. Gli stessi dettagli rimangono disponibili nel Customer Portal, nella cronologia degli ordini, finché il grant è attivo.
L’accesso degli abbonati a Discord, GitHub e Notion richiede che il cliente autorizzi Dodo Payments a concedere tale accesso. Questi grant rimangono Pending finché il cliente non completa il flusso OAuth dal link nell’e-mail o nel Customer Portal. Dopo l’autorizzazione del cliente, il grant passa a Delivered e Dodo Payments configura l’accesso alla piattaforma.
Quando un grant viene revocato, Dodo Payments rimuove l’accesso sulla piattaforma: rimuove il ruolo Discord, rimuove il collaboratore GitHub o disabilita la chiave di licenza. Il cliente vede la modifica nel Customer Portal.
Per Digital Files, la revoca impedisce la generazione di nuovi URL di download presigned, ma non invalida le copie che un cliente ha già scaricato. Tienilo presente quando pianifichi la gestione degli accessi ai tuoi contenuti.
Apri qualsiasi entitlement dalla dashboard per visualizzarne i grant. Il pannello dei dettagli mostra il totale dei grant, un filtro per stato e una riga per ogni grant con il cliente, la data di accesso, lo stato e un’azione Revoke.Per gestire i grant a livello programmatico, elencali con il filtro status e revoca un singolo grant tramite 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',});
Dodo Payments invia quattro eventi webhook per il ciclo di vita dei grant. Iscriviti a questi eventi per mantenere la tua applicazione sincronizzata con ciò a cui ogni cliente può accedere.
Evento
Si attiva quando
entitlement_grant.created
Viene creato un grant. I grant delle chiavi di licenza completati automaticamente e i grant dei feature flag arrivano Delivered. I grant delle chiavi di licenza completati manualmente e ogni altra integrazione arrivano Pending, poi passano a Delivered quando la chiamata alla piattaforma ha esito positivo o, per le integrazioni basate su OAuth, quando il cliente autorizza.
entitlement_grant.delivered
Un grant esistente passa a Delivered, quindi il cliente ottiene l’accesso. Un grant che è Delivered alla creazione attiva solo created.
entitlement_grant.failed
Il grant non è stato consegnato. Esamina error_code e error_message.
entitlement_grant.revoked
L’accesso è stato ritirato. Esamina revocation_reason.
Entitlement Grant Webhook Payloads
Visualizza lo schema completo del payload, gli eventi di esempio e il riferimento revocation_reason.
Usa un entitlement per ogni canale di consegna. Non condividere un entitlement Discord tra prodotti con ruoli diversi. Crea un entitlement per ogni ruolo, così la revoca rimane pulita.
Esegui prima i test in modalità test. Crea l’entitlement, collegalo a un prodotto di test, esegui un checkout e osserva il grant passare da Pending a Delivered. Poi cancella l’abbonamento di test e verifica che il grant venga revocato.
Ascolta entitlement_grant.delivered, non payment.succeeded. Un pagamento può avere esito positivo prima che il fulfillment sia completato, soprattutto nei flussi OAuth. Attendi che il grant raggiunga Delivered prima di sbloccare le funzionalità dipendenti nei tuoi sistemi. Un grant consegnato alla creazione, come una chiave di licenza completata automaticamente o un feature flag, arriva come entitlement_grant.created con status: "Delivered".
Considera entitlement_grant.failed un evento che richiede un’azione. Un grant fallito significa che un cliente ha pagato ma non ha ottenuto l’accesso. Segnala questi grant al team di supporto o attiva una nuova emissione.
Collega revocation_reason ai tuoi flussi di fidelizzazione. Una revoca subscription_on_hold è recuperabile, perché il cliente potrebbe aggiornare la propria carta. Una revoca manual è intenzionale. Gestiscile in modo diverso nei messaggi ai clienti.
Non revocare l’accesso su subscription.past_due. Questo evento apre un periodo di tolleranza e il cliente mantiene l’accesso fino alla fine della finestra. Attendi subscription.on_hold o subscription.cancelled.
Ultima modifica il 26 settembre 2026
Questa pagina è stata utile?
⌘I
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"Dodo Payments Documentation","description":"Documentation for Dodo Payments — the all-in-one payments, billing, and merchant of record platform for SaaS, AI, and digital products.","colors":{"primary":"#779812","light":"#C6FE1E","dark":"#166534"},"logo":{"light":"https://mintcdn.com/dodopayments/nM_mJfYkri-OpC5M/logo/light.svg?fit=max\u0026auto=format\u0026n=nM_mJfYkri-OpC5M\u0026q=85\u0026s=23f7a052f7ecb9d6570b7c95ee359a97","dark":"https://mintcdn.com/dodopayments/nM_mJfYkri-OpC5M/logo/dark.svg?fit=max\u0026auto=format\u0026n=nM_mJfYkri-OpC5M\u0026q=85\u0026s=cd6c20238a54526436f21c43fee51b26"},"favicon":"https://mintcdn.com/dodopayments/doYQc9oUE-WNz0cs/favicon.svg?fit=max\u0026auto=format\u0026n=doYQc9oUE-WNz0cs\u0026q=85\u0026s=271c6cc8ce7d6bf4d7f2b9cca029e004","background":{"color":{"light":"#FFFFFF","dark":"#0D0D0D"}},"navbar":{"links":[{"icon":"link","href":"https://docs.dodopayments.com/llms-full.txt","label":"llms-full.txt"},{"icon":"discord","href":"https://discord.gg/bYqAp4ayYh","label":"Community"},{"icon":"house","href":"https://app.dodopayments.com/","label":"Dashboard"}]},"footer":{"socials":{"x":"https://x.com/dodopayments","linkedin":"https://linkedin.com/company/dodopayments","website":"https://dodopayments.com","discord":"https://discord.gg/bYqAp4ayYh","github":"https://github.com/dodopayments","instagram":"https://www.instagram.com/dodo.payments","facebook":"https://www.facebook.com/profile.php?id=61565515607280"}},"seo":{"metatags":{"og:site_name":"Dodo Payments Documentation","twitter:card":"summary_large_image"},"indexing":"navigable"},"fonts":{"heading":{"family":"ApfelGrotezk","weight":400,"source":"fonts/ApfelGrotezk-Regular.woff2","format":"woff2"},"body":{"family":"Inter","weight":400,"source":"fonts/Inter-Variable.woff2","format":"woff2"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","cursor"],"display":"header"},"metadata":{"timestamp":true},"styling":{"latex":true},"navigation":{"languages":[{"language":"en","href":"introduction"},{"language":"es","href":"es/introduction"},{"language":"ar","href":"ar/introduction"},{"language":"fr","href":"fr/introduction"},{"language":"de","href":"de/introduction"},{"language":"id","href":"id/introduction"},{"language":"ja","href":"ja/introduction"},{"language":"ko","href":"ko/introduction"},{"language":"pt-BR","href":"pt-BR/introduction"},{"language":"vi","href":"vi/introduction"},{"language":"cn","href":"cn/introduction"},{"language":"hi","href":"hi/introduction"},{"language":"it","href":"it/introduction"},{"language":"sv","href":"sv/introduction"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"dodopayments","hasAudioNarration":false,"actualSubdomain":"dodopayments","customDomains":["docs.dodopayments.com"],"gitSource":{"type":"github","owner":"dodopayments","repo":"dodo-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":false,"issues":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af4027c778b6a49d3c24d62","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"en","tag":"API Reference","count":181},{"language":"en","tag":"Docs","count":176},{"language":"ar","tag":"Docs","count":153},{"language":"cn","tag":"Docs","count":153},{"language":"de","tag":"Docs","count":153},{"language":"es","tag":"Docs","count":153},{"language":"fr","tag":"Docs","count":153},{"language":"hi","tag":"Docs","count":153},{"language":"id","tag":"Docs","count":153},{"language":"it","tag":"Docs","count":153},{"language":"ja","tag":"Docs","count":153},{"language":"ko","tag":"Docs","count":153},{"language":"pt-BR","tag":"Docs","count":153},{"language":"sv","tag":"Docs","count":153},{"language":"vi","tag":"Docs","count":153},{"language":"ar","tag":"API Reference","count":151},{"language":"cn","tag":"API Reference","count":151},{"language":"de","tag":"API Reference","count":151},{"language":"es","tag":"API Reference","count":151},{"language":"fr","tag":"API Reference","count":151},{"language":"hi","tag":"API Reference","count":151},{"language":"id","tag":"API Reference","count":151},{"language":"it","tag":"API Reference","count":151},{"language":"ja","tag":"API Reference","count":151},{"language":"ko","tag":"API Reference","count":151},{"language":"pt-BR","tag":"API Reference","count":151},{"language":"sv","tag":"API Reference","count":151},{"language":"vi","tag":"API Reference","count":151},{"language":"en","tag":"Features","count":86},{"language":"ar","tag":"Features","count":81},{"language":"cn","tag":"Features","count":81},{"language":"de","tag":"Features","count":81},{"language":"es","tag":"Features","count":81},{"language":"fr","tag":"Features","count":81},{"language":"hi","tag":"Features","count":81},{"language":"id","tag":"Features","count":81},{"language":"it","tag":"Features","count":81},{"language":"ja","tag":"Features","count":81},{"language":"ko","tag":"Features","count":81},{"language":"pt-BR","tag":"Features","count":81},{"language":"sv","tag":"Features","count":81},{"language":"vi","tag":"Features","count":81},{"language":"en","tag":"Integrate","count":74},{"language":"en","tag":"Changelog","count":66},{"language":"ar","tag":"Changelog","count":65},{"language":"cn","tag":"Changelog","count":65},{"language":"de","tag":"Changelog","count":65},{"language":"es","tag":"Changelog","count":65},{"language":"fr","tag":"Changelog","count":65},{"language":"hi","tag":"Changelog","count":65},{"language":"id","tag":"Changelog","count":65},{"language":"it","tag":"Changelog","count":65},{"language":"ja","tag":"Changelog","count":65},{"language":"ko","tag":"Changelog","count":65},{"language":"pt-BR","tag":"Changelog","count":65},{"language":"sv","tag":"Changelog","count":65},{"language":"vi","tag":"Changelog","count":65},{"language":"ar","tag":"Integrate","count":59},{"language":"cn","tag":"Integrate","count":59},{"language":"de","tag":"Integrate","count":59},{"language":"es","tag":"Integrate","count":59},{"language":"fr","tag":"Integrate","count":59},{"language":"hi","tag":"Integrate","count":59},{"language":"id","tag":"Integrate","count":59},{"language":"it","tag":"Integrate","count":59},{"language":"ja","tag":"Integrate","count":59},{"language":"ko","tag":"Integrate","count":59},{"language":"pt-BR","tag":"Integrate","count":59},{"language":"sv","tag":"Integrate","count":59},{"language":"vi","tag":"Integrate","count":59},{"language":"en","tag":"External Integrations","count":33},{"language":"ar","tag":"External Integrations","count":30},{"language":"cn","tag":"External Integrations","count":30},{"language":"de","tag":"External Integrations","count":30},{"language":"es","tag":"External Integrations","count":30},{"language":"fr","tag":"External Integrations","count":30},{"language":"hi","tag":"External Integrations","count":30},{"language":"id","tag":"External Integrations","count":30},{"language":"it","tag":"External Integrations","count":30},{"language":"ja","tag":"External Integrations","count":30},{"language":"ko","tag":"External Integrations","count":30},{"language":"pt-BR","tag":"External Integrations","count":30},{"language":"sv","tag":"External Integrations","count":30},{"language":"vi","tag":"External Integrations","count":30},{"language":"en","tag":"Webhooks","count":23},{"language":"ar","tag":"Webhooks","count":23},{"language":"cn","tag":"Webhooks","count":23},{"language":"de","tag":"Webhooks","count":23},{"language":"es","tag":"Webhooks","count":23},{"language":"fr","tag":"Webhooks","count":23},{"language":"hi","tag":"Webhooks","count":23},{"language":"id","tag":"Webhooks","count":23},{"language":"it","tag":"Webhooks","count":23},{"language":"ja","tag":"Webhooks","count":23},{"language":"ko","tag":"Webhooks","count":23},{"language":"pt-BR","tag":"Webhooks","count":23},{"language":"sv","tag":"Webhooks","count":23},{"language":"vi","tag":"Webhooks","count":23},{"language":"en","tag":"Guides","count":22},{"language":"ar","tag":"Guides","count":22},{"language":"cn","tag":"Guides","count":22},{"language":"de","tag":"Guides","count":22},{"language":"es","tag":"Guides","count":22},{"language":"fr","tag":"Guides","count":22},{"language":"hi","tag":"Guides","count":22},{"language":"id","tag":"Guides","count":22},{"language":"it","tag":"Guides","count":22},{"language":"ja","tag":"Guides","count":22},{"language":"ko","tag":"Guides","count":22},{"language":"pt-BR","tag":"Guides","count":22},{"language":"sv","tag":"Guides","count":22},{"language":"vi","tag":"Guides","count":22},{"language":"en","tag":"Entitlements","count":20},{"language":"ar","tag":"Entitlements","count":20},{"language":"cn","tag":"Entitlements","count":20},{"language":"de","tag":"Entitlements","count":20},{"language":"es","tag":"Entitlements","count":20},{"language":"fr","tag":"Entitlements","count":20},{"language":"hi","tag":"Entitlements","count":20},{"language":"id","tag":"Entitlements","count":20},{"language":"it","tag":"Entitlements","count":20},{"language":"ja","tag":"Entitlements","count":20},{"language":"ko","tag":"Entitlements","count":20},{"language":"pt-BR","tag":"Entitlements","count":20},{"language":"sv","tag":"Entitlements","count":20},{"language":"vi","tag":"Entitlements","count":20},{"language":"en","tag":"Invoices","count":17},{"language":"ar","tag":"Customers","count":16},{"language":"cn","tag":"Customers","count":16},{"language":"de","tag":"Customers","count":16},{"language":"es","tag":"Customers","count":16},{"language":"fr","tag":"Customers","count":16},{"language":"hi","tag":"Customers","count":16},{"language":"id","tag":"Customers","count":16},{"language":"it","tag":"Customers","count":16},{"language":"ja","tag":"Customers","count":16},{"language":"ko","tag":"Customers","count":16},{"language":"pt-BR","tag":"Customers","count":16},{"language":"sv","tag":"Customers","count":16},{"language":"vi","tag":"Customers","count":16}]},"assistantConfig":{"deflection":{"enabled":false,"email":"support@dodopayments.com","showHelpButton":true}},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"styles.css","content":"#content-area{max-width:60rem}h1,h2,h3,h4,h5,h6{letter-spacing:0.05em!important}.welcome-page .card-group{margin:3rem auto 8rem;max-width:70rem;padding-left:1.25rem;padding-right:1.25rem}.welcome-page .card-group .card{padding:1rem}.welcome-hero{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:20vh;text-align:center;margin-top:3rem;margin-bottom:2.5rem}.welcome-hero h1{font-size:2.5rem;font-weight:700;margin-bottom:1rem;line-height:1.2;color:#fff}.welcome-hero p{font-size:1.25rem;max-width:600px;margin:0 auto}.welcome-hero h1{color:rgb(41 42 37 / 1)}.dark .welcome-hero h1{color:rgb(255 255 255 / 1)}.welcome-hero p{color:rgb(83 85 79 / 1)}.dark .welcome-hero p{color:rgb(162 164 158 / 1)}"}],"page":{"pagePath":"it/features/entitlements/introduction","slug":"/it/features/entitlements/introduction","pageMetadata":{"title":"Introduzione","sidebarTitle":"Introduzione","description":"Consegna automaticamente chiavi di licenza, file scaricabili, feature flag e accesso a Discord, GitHub, Telegram, Framer e Notion quando i clienti effettuano un pagamento.","icon":"box-archive","keywords":["Dodo Payments","entitlements","fulfillment","chiavi di licenza","consegna digitale","accesso alla piattaforma"],"href":"/it/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: \"Consegna automaticamente chiavi di licenza, file scaricabili, feature flag e accesso a Discord, GitHub, Telegram, Framer e Notion quando i clienti effettuano un pagamento.\"\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:`Gli entitlement trasformano un pagamento completato o un abbonamento attivo in accesso: una chiave di licenza nella casella di posta del cliente, un feature flag verificato dalla tua app, un ruolo Discord, un repository GitHub, un template Notion, un link per il remix su Framer, un invito a una chat Telegram o un pacchetto di file scaricabili. Dodo Payments emette, monitora e revoca automaticamente questo accesso quando cambia il ciclo di vita del pagamento.`})}),`\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:`Dashboard delle entitlements con un elenco di entitlements a sinistra e l'attività di concessione a destra`,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:`cosa-sono-gli-entitlement`,children:`Cosa sono gli entitlement?`}),`\n`,_jsxs(_components.p,{children:[`Un `,_jsx(_components.strong,{children:`entitlement`}),` è una definizione riutilizzabile di qualcosa che fornisci a un cliente, ad esempio una chiave di licenza Pro, un ruolo Discord “Patrons”, l’accesso al tuo repository GitHub privato o un pacchetto di e-book scaricabili. Colleghi gli entitlement ai prodotti e Dodo Payments li consegna quando un cliente paga.`]}),`\n`,_jsxs(_components.p,{children:[`Quando un cliente acquista il prodotto, Dodo Payments crea un `,_jsx(_components.strong,{children:`grant`}),`: l’emissione di quell’entitlement per un singolo cliente. Un grant ha uno di quattro stati: `,_jsx(_components.code,{children:`Pending`}),` mentre la consegna è in corso, `,_jsx(_components.code,{children:`Delivered`}),` quando il cliente ha ottenuto l’accesso, `,_jsx(_components.code,{children:`Failed`}),` se la consegna non è stata completata e `,_jsx(_components.code,{children:`Revoked`}),` quando l’accesso viene ritirato.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Gli entitlement regolano il `,_jsx(_components.strong,{children:`fulfillment`}),` (il cliente ha accesso?). I crediti regolano il `,_jsx(_components.strong,{children:`consumo`}),` (quanto può utilizzarne?). Puoi collegare entrambi allo stesso prodotto. Consulta `,_jsx(_components.a,{href:`/features/credit-based-billing`,children:`Credit-Based Billing`}),` per i crediti.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`integrazioni-disponibili`,children:`Integrazioni Disponibili`}),`\n`,_jsx(_components.p,{children:`Ogni entitlement viene consegnato tramite una sola integrazione. Scegli l’integrazione più adatta a ciò che vendi.`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`License Keys`,icon:`key`,href:`/features/license-keys`,children:_jsx(_components.p,{children:`Genera chiavi di licenza uniche con limiti di attivazione e scadenza. Ideale per software, plugin e CLI.`})}),_jsx(Card,{title:`Digital Files`,icon:`download`,href:`/features/digital-product-delivery`,children:_jsx(_components.p,{children:`Consegna file scaricabili, come e-book, template e contenuti multimediali, tramite URL di download presigned e istruzioni opzionali.`})}),_jsx(Card,{title:`Feature Flags`,icon:`flag`,href:`/features/entitlements/feature-flags`,children:_jsx(_components.p,{children:`Limita le funzionalità della tua app in base a un acquisto. Viene consegnato alla creazione, verificato tramite API e revocato alla cancellazione.`})}),_jsx(Card,{title:`Discord`,icon:`discord`,href:`/features/entitlements/discord`,children:_jsx(_components.p,{children:`Assegna a un cliente un ruolo nel tuo server Discord quando acquista. Il ruolo viene rimosso automaticamente alla cancellazione.`})}),_jsx(Card,{title:`GitHub`,icon:`github`,href:`/features/entitlements/github`,children:_jsx(_components.p,{children:`Aggiungi i clienti come collaboratori a un repository privato al livello di autorizzazione che scegli.`})}),_jsx(Card,{title:`Telegram`,icon:`telegram`,href:`/features/entitlements/telegram`,children:_jsx(_components.p,{children:`Aggiungi i clienti a una chat o canale privato di Telegram dopo l’acquisto.`})}),_jsx(Card,{title:`Framer`,icon:`puzzle-piece`,href:`/features/entitlements/framer`,children:_jsx(_components.p,{children:`Sblocca un link di remix del modello Framer per i clienti paganti.`})}),_jsx(Card,{title:`Notion`,icon:`book`,href:`/features/entitlements/notion`,children:_jsx(_components.p,{children:`Duplica un modello Notion nello spazio di lavoro del cliente all’acquisto.`})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`come-funzionano-le-concessioni`,children:`Come funzionano le concessioni`}),`\n`,_jsx(_components.p,{children:`I grant seguono gli stessi eventi di pagamento e abbonamento che ricevi come webhook. Dodo Payments crea e revoca automaticamente i grant per gli acquisti, in base al ciclo di vita del pagamento, quindi non devi chiamare personalmente l’API dei grant.`}),`\n`,_jsx(Heading,{level:`3`,id:`ciclo-di-vita-delle-concessioni`,children:`Ciclo di vita delle concessioni`}),`\n`,_jsx(_components.p,{children:`Un grant attraversa questi stati:`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Created`,children:[_jsxs(_components.p,{children:[`Dodo Payments crea un grant quando un pagamento viene completato o un abbonamento diventa attivo. I grant dei feature flag iniziano come `,_jsx(_components.code,{children:`Delivered`}),`. Anche i grant delle chiavi di licenza iniziano come `,_jsx(_components.code,{children:`Delivered`}),` quando l’entitlement utilizza `,_jsx(_components.code,{children:`fulfillment_mode: auto`}),` (il valore predefinito). Con `,_jsx(_components.code,{children:`fulfillment_mode: manual`}),`, il grant inizia come `,_jsx(_components.code,{children:`Pending`}),` senza chiave, finché non ne fornisci una tramite `,_jsx(_components.a,{href:`/api-reference/entitlements/fulfill-license-key`,children:`Fulfill License Key Grant`}),`. Ogni altra integrazione inizia come `,_jsx(_components.code,{children:`Pending`}),`.`]}),_jsxs(_components.p,{children:[`Le integrazioni basate su OAuth (Discord, GitHub, Notion) espongono un `,_jsx(_components.code,{children:`oauth_url`}),` che il cliente visita per prestare il consenso. Dodo Payments tenta di generare questo URL quando crea il grant. Se l’operazione fallisce, il campo rimane `,_jsx(_components.code,{children:`null`}),` finché il cliente non avvia il flusso di accettazione dall’e-mail di consegna o dal Customer Portal. Le integrazioni dirette alla piattaforma (Telegram, Framer, Digital Files) rimangono `,_jsx(_components.code,{children:`Pending`}),` solo mentre la consegna viene predisposta, poi passano a `,_jsx(_components.code,{children:`Delivered`}),`.`]})]}),_jsx(Step,{title:`Delivered`,children:_jsxs(_components.p,{children:[`Quando la consegna viene completata, il grant passa a `,_jsx(_components.code,{children:`Delivered`}),` e viene impostato `,_jsx(_components.code,{children:`delivered_at`}),`. La consegna è completa quando viene generata la chiave di licenza, viene assegnato il ruolo, viene concesso l’accesso al repository, vengono risolti i link ai file o viene completato il flusso OAuth.`]})}),_jsx(Step,{title:`Failed`,children:_jsxs(_components.p,{children:[`Se la chiamata all’integrazione restituisce un errore non ritentabile, come un token OAuth revocato, un’autorizzazione negata o un file che non esiste più, il grant passa a `,_jsx(_components.code,{children:`Failed`}),`. I campi `,_jsx(_components.code,{children:`error_code`}),` e `,_jsx(_components.code,{children:`error_message`}),` registrano il motivo.`]})}),_jsx(Step,{title:`Revoked`,children:_jsxs(_components.p,{children:[`Quando l’accesso viene ritirato, ad esempio perché un abbonamento viene cancellato, viene emesso un rimborso o revochi il grant, il grant passa a `,_jsx(_components.code,{children:`Revoked`}),`. Il campo `,_jsx(_components.code,{children:`revocation_reason`}),` registra il fattore scatenante.`]})})]}),`\n`,_jsx(Heading,{level:`3`,id:`comportamento-dei-grant-in-base-all’evento`,children:`Comportamento dei grant in base all’evento`}),`\n`,_jsx(_components.p,{children:`Ogni evento di pagamento e abbonamento modifica i grant come segue:`}),`\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 una tantum)`]}),_jsx(_components.td,{children:`Emette un grant per ogni entitlement collegato. Un entitlement License Key emette un grant per ogni chiave.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`payment.succeeded`}),` (pagamento collegato a un abbonamento)`]}),_jsx(_components.td,{children:`Nessuna modifica. Gli eventi dell’abbonamento riportati di seguito gestiscono questi grant.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`subscription.active`})}),_jsxs(_components.td,{children:[`Emette grant per gli entitlement collegati che non ne hanno ancora uno e riemette i grant precedentemente revocati per lo stesso abbonamento. I grant revocati con `,_jsx(_components.code,{children:`manual`}),`, `,_jsx(_components.code,{children:`refund`}),` o `,_jsx(_components.code,{children:`platform_external`}),` non vengono riemessi.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`subscription.renewed`})}),_jsx(_components.td,{children:`Nessuna modifica. I grant esistenti persistono tra i rinnovi.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`subscription.past_due`})}),_jsxs(_components.td,{children:[`Nessuna modifica. I grant rimangono consegnati per tutto il `,_jsx(_components.a,{href:`/features/subscription#grace-period`,children:`periodo di tolleranza`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`subscription.on_hold`})}),_jsxs(_components.td,{children:[`Revoca tutti i grant consegnati e in sospeso con `,_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:[`Revoca tutti i grant consegnati e in sospeso con `,_jsx(_components.code,{children:`revocation_reason: SubscriptionPaused`}),`. A differenza degli altri motivi dell’abbonamento, questo valore usa PascalCase, quindi deve corrispondere esattamente.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`subscription.unpaused`})}),_jsxs(_components.td,{children:[`Riemette i grant precedentemente revocati per lo stesso abbonamento, come fa `,_jsx(_components.code,{children:`subscription.active`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`subscription.cancelled`})}),_jsxs(_components.td,{children:[`Revoca tutti i grant con `,_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:[`Revoca tutti i grant con `,_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:[`Revoca tutti i grant attuali con `,_jsx(_components.code,{children:`revocation_reason: plan_changed`}),`, quindi emette grant per gli entitlement del nuovo piano.`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`refund.succeeded`}),` (pagamento una tantum)`]}),_jsxs(_components.td,{children:[`Revoca i grant relativi a quel pagamento con `,_jsx(_components.code,{children:`revocation_reason: refund`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Revoca manuale tramite API`}),_jsxs(_components.td,{children:[`Revoca il grant con `,_jsx(_components.code,{children:`revocation_reason: manual`}),`. Le revoche manuali non vengono riemesse automaticamente al rinnovo dell’abbonamento.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Chiave di licenza disabilitata`}),_jsxs(_components.td,{children:[`Per i grant delle chiavi di licenza, la disabilitazione della chiave sottostante revoca il grant con `,_jsx(_components.code,{children:`revocation_reason: license_key_disabled`}),`. Riabilitando la chiave, il grant viene ripristinato automaticamente.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Deriva della piattaforma rilevata`}),_jsxs(_components.td,{children:[`Se il lato della piattaforma di un’integrazione non è più sincronizzato, ad esempio perché un ruolo Discord è stato rimosso manualmente, la GitHub App ha perso l’accesso al repository o un controllo di riconciliazione ha rilevato una destinazione mancante, Dodo Payments revoca il grant con `,_jsx(_components.code,{children:`revocation_reason: platform_external`}),`. Non viene riemesso automaticamente al rinnovo dell’abbonamento finché il problema della piattaforma non viene risolto.`]})]})]})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`I grant gestiti dagli abbonamenti sono idempotenti per `,_jsx(_components.code,{children:`(entitlement, customer, subscription)`}),`, quindi rinnovi e riattivazioni non creano grant duplicati. I grant una tantum sono idempotenti per `,_jsx(_components.code,{children:`(entitlement, customer, payment)`}),`.`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`crea-il-tuo-primo-entitlement`,children:`Crea il tuo primo entitlement`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open Entitlements`,children:_jsxs(_components.p,{children:[`Vai alla sezione `,_jsx(_components.strong,{children:`Entitlements`}),` nella dashboard e fai clic su `,_jsx(_components.strong,{children:`+`}),` per creare un entitlement.`]})}),_jsx(Step,{title:`Pick an Integration`,children:_jsx(_components.p,{children:`Scegli il tipo di integrazione: License Key, Digital Files, Feature Flag, Discord, GitHub, Telegram, Figma, Framer o Notion. Per un’integrazione di piattaforma, collega prima il tuo account se non l’hai già fatto.`})}),_jsxs(Step,{title:`Configure Delivery`,children:[_jsx(_components.p,{children:`Compila i campi dell’integrazione. Ad esempio, GitHub richiede un repository e un livello di autorizzazione, Discord richiede un server e un ruolo opzionale, mentre License Key richiede un limite di attivazioni e una durata della licenza.`}),_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:`Modulo Nuovo entitlement con selettore dell'integrazione e campi di configurazione`,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:[`Fai clic su `,_jsx(_components.strong,{children:`Create Entitlement`}),`. Ora puoi collegare l’entitlement a qualsiasi prodotto.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`collega-gli-entitlement-ai-prodotti`,children:`Collega gli entitlement ai prodotti`}),`\n`,_jsxs(_components.p,{children:[`Apri un prodotto, vai alla sezione `,_jsx(_components.strong,{children:`Entitlements`}),` e seleziona gli entitlement da consegnare quando il prodotto viene acquistato. Un prodotto può consegnare diversi entitlement contemporaneamente. Ad esempio, un piano Pro può includere una chiave di licenza, l’accesso a GitHub e un ruolo 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:`Pannello di selezione degli entitlement del prodotto con caselle di controllo per ogni entitlement disponibile`,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:`esperienza-del-cliente`,children:`Esperienza del cliente`}),`\n`,_jsx(Heading,{level:`3`,id:`e-mail-e-customer-portal`,children:`E-mail e Customer Portal`}),`\n`,_jsxs(_components.p,{children:[`Dopo un acquisto, il cliente riceve un’e-mail di consegna con la chiave di licenza, i link per il download, i link di invito OAuth o l’invito alla piattaforma applicabile agli entitlement del prodotto. Gli stessi dettagli rimangono disponibili nel `,_jsx(_components.a,{href:`/features/customer-portal`,children:`Customer Portal`}),`, nella cronologia degli ordini, finché il grant è attivo.`]}),`\n`,_jsx(Heading,{level:`3`,id:`consegna-basata-su-oauth`,children:`Consegna basata su OAuth`}),`\n`,_jsxs(_components.p,{children:[`L’accesso degli abbonati a Discord, GitHub e Notion richiede che il cliente autorizzi Dodo Payments a concedere tale accesso. Questi grant rimangono `,_jsx(_components.code,{children:`Pending`}),` finché il cliente non completa il flusso OAuth dal link nell’e-mail o nel Customer Portal. Dopo l’autorizzazione del cliente, il grant passa a `,_jsx(_components.code,{children:`Delivered`}),` e Dodo Payments configura l’accesso alla piattaforma.`]}),`\n`,_jsx(Heading,{level:`3`,id:`revoca`,children:`Revoca`}),`\n`,_jsx(_components.p,{children:`Quando un grant viene revocato, Dodo Payments rimuove l’accesso sulla piattaforma: rimuove il ruolo Discord, rimuove il collaboratore GitHub o disabilita la chiave di licenza. Il cliente vede la modifica nel Customer Portal.`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Per Digital Files, la revoca impedisce la generazione di nuovi URL di download presigned, ma non invalida le copie che un cliente ha già scaricato. Tienilo presente quando pianifichi la gestione degli accessi ai tuoi contenuti.`})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`gestisci-i-grant`,children:`Gestisci i grant`}),`\n`,_jsxs(_components.p,{children:[`Apri qualsiasi entitlement dalla dashboard per visualizzarne i grant. Il pannello dei dettagli mostra il totale dei grant, un filtro per stato e una riga per ogni grant con il cliente, la data di accesso, lo stato e un’azione `,_jsx(_components.strong,{children:`Revoke`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Per gestire i grant a livello programmatico, elencali con il filtro `,_jsx(_components.code,{children:`status`}),` e revoca un singolo grant tramite 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:`gestione-tramite-api`,children:`Gestione tramite 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:`Crea un entitlement di qualsiasi tipo di integrazione.`})}),_jsx(Card,{title:`List Entitlements`,icon:`list`,href:`/api-reference/entitlements/list-entitlements`,children:_jsx(_components.p,{children:`Elenca gli entitlement, filtrati per tipo di integrazione.`})}),_jsx(Card,{title:`Get Entitlement`,icon:`magnifying-glass`,href:`/api-reference/entitlements/get-entitlement`,children:_jsx(_components.p,{children:`Recupera un entitlement e la relativa configurazione risolta.`})}),_jsx(Card,{title:`Update Entitlement`,icon:`pen`,href:`/api-reference/entitlements/update-entitlement`,children:_jsx(_components.p,{children:`Aggiorna il nome, la descrizione o la configurazione dell’integrazione.`})}),_jsx(Card,{title:`Delete Entitlement`,icon:`trash`,href:`/api-reference/entitlements/delete-entitlement`,children:_jsx(_components.p,{children:`Elimina logicamente un entitlement. I grant esistenti non vengono revocati, ma Dodo Payments non li gestisce più.`})}),_jsx(Card,{title:`Upload File`,icon:`upload`,href:`/api-reference/entitlements/upload-file`,children:_jsx(_components.p,{children:`Carica un file fino a 500 MiB in un entitlement Digital Files.`})}),_jsx(Card,{title:`List Grants`,icon:`users`,href:`/api-reference/entitlements/list-grants`,children:_jsx(_components.p,{children:`Elenca i grant di un entitlement, filtrati per stato e cliente.`})}),_jsx(Card,{title:`Revoke Grant`,icon:`ban`,href:`/api-reference/entitlements/revoke-grant`,children:_jsx(_components.p,{children:`Revoca manualmente un singolo grant.`})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`webhook`,children:`Webhook`}),`\n`,_jsx(_components.p,{children:`Dodo Payments invia quattro eventi webhook per il ciclo di vita dei grant. Iscriviti a questi eventi per mantenere la tua applicazione sincronizzata con ciò a cui ogni cliente può accedere.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Evento`}),_jsx(_components.th,{children:`Si attiva quando`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`entitlement_grant.created`})}),_jsxs(_components.td,{children:[`Viene creato un grant. I grant delle chiavi di licenza completati automaticamente e i grant dei feature flag arrivano `,_jsx(_components.code,{children:`Delivered`}),`. I grant delle chiavi di licenza completati manualmente e ogni altra integrazione arrivano `,_jsx(_components.code,{children:`Pending`}),`, poi passano a `,_jsx(_components.code,{children:`Delivered`}),` quando la chiamata alla piattaforma ha esito positivo o, per le integrazioni basate su OAuth, quando il cliente autorizza.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`entitlement_grant.delivered`})}),_jsxs(_components.td,{children:[`Un grant esistente passa a `,_jsx(_components.code,{children:`Delivered`}),`, quindi il cliente ottiene l’accesso. Un grant che è `,_jsx(_components.code,{children:`Delivered`}),` alla creazione attiva solo `,_jsx(_components.code,{children:`created`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`entitlement_grant.failed`})}),_jsxs(_components.td,{children:[`Il grant non è stato consegnato. Esamina `,_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:[`L’accesso è stato ritirato. Esamina `,_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:[`Visualizza lo schema completo del payload, gli eventi di esempio e il riferimento `,_jsx(_components.code,{children:`revocation_reason`}),`.`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`best-practice`,children:`Best practice`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Usa un entitlement per ogni canale di consegna.`}),` Non condividere un entitlement Discord tra prodotti con ruoli diversi. Crea un entitlement per ogni ruolo, così la revoca rimane pulita.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Esegui prima i test in modalità test.`}),` Crea l’entitlement, collegalo a un prodotto di test, esegui un checkout e osserva il grant passare da `,_jsx(_components.code,{children:`Pending`}),` a `,_jsx(_components.code,{children:`Delivered`}),`. Poi cancella l’abbonamento di test e verifica che il grant venga revocato.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Ascolta `,_jsx(_components.code,{children:`entitlement_grant.delivered`}),`, non `,_jsx(_components.code,{children:`payment.succeeded`}),`.`]}),` Un pagamento può avere esito positivo prima che il fulfillment sia completato, soprattutto nei flussi OAuth. Attendi che il grant raggiunga `,_jsx(_components.code,{children:`Delivered`}),` prima di sbloccare le funzionalità dipendenti nei tuoi sistemi. Un grant consegnato alla creazione, come una chiave di licenza completata automaticamente o un feature flag, arriva come `,_jsx(_components.code,{children:`entitlement_grant.created`}),` con `,_jsx(_components.code,{children:`status: \"Delivered\"`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Considera `,_jsx(_components.code,{children:`entitlement_grant.failed`}),` un evento che richiede un’azione.`]}),` Un grant fallito significa che un cliente ha pagato ma non ha ottenuto l’accesso. Segnala questi grant al team di supporto o attiva una nuova emissione.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Collega `,_jsx(_components.code,{children:`revocation_reason`}),` ai tuoi flussi di fidelizzazione.`]}),` Una revoca `,_jsx(_components.code,{children:`subscription_on_hold`}),` è recuperabile, perché il cliente potrebbe aggiornare la propria carta. Una revoca `,_jsx(_components.code,{children:`manual`}),` è intenzionale. Gestiscile in modo diverso nei messaggi ai clienti.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Non revocare l’accesso su `,_jsx(_components.code,{children:`subscription.past_due`}),`.`]}),` Questo evento apre un `,_jsx(_components.a,{href:`/features/subscription#grace-period`,children:`periodo di tolleranza`}),` e il cliente mantiene l’accesso fino alla fine della finestra. Attendi `,_jsx(_components.code,{children:`subscription.on_hold`}),` o `,_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":"Introduzione","sidebarTitle":"Introduzione","description":"Consegna automaticamente chiavi di licenza, file scaricabili, feature flag e accesso a Discord, GitHub, Telegram, Framer e Notion quando i clienti effettuano un pagamento.","icon":"box-archive","keywords":["Dodo Payments","entitlements","fulfillment","chiavi di licenza","consegna digitale","accesso alla piattaforma"],"href":"/it/features/entitlements/introduction"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Cosa sono gli entitlement?","slug":"cosa-sono-gli-entitlement","depth":2,"children":[]},{"title":"Integrazioni Disponibili","slug":"integrazioni-disponibili","depth":2,"children":[]},{"title":"Come funzionano le concessioni","slug":"come-funzionano-le-concessioni","depth":2,"children":[{"title":"Ciclo di vita delle concessioni","slug":"ciclo-di-vita-delle-concessioni","depth":3,"children":[]},{"title":"Comportamento dei grant in base all’evento","slug":"comportamento-dei-grant-in-base-all’evento","depth":3,"children":[]}]},{"title":"Crea il tuo primo entitlement","slug":"crea-il-tuo-primo-entitlement","depth":2,"children":[]},{"title":"Collega gli entitlement ai prodotti","slug":"collega-gli-entitlement-ai-prodotti","depth":2,"children":[]},{"title":"Esperienza del cliente","slug":"esperienza-del-cliente","depth":2,"children":[{"title":"E-mail e Customer Portal","slug":"e-mail-e-customer-portal","depth":3,"children":[]},{"title":"Consegna basata su OAuth","slug":"consegna-basata-su-oauth","depth":3,"children":[]},{"title":"Revoca","slug":"revoca","depth":3,"children":[]}]},{"title":"Gestisci i grant","slug":"gestisci-i-grant","depth":2,"children":[]},{"title":"Gestione tramite API","slug":"gestione-tramite-api","depth":2,"children":[]},{"title":"Webhook","slug":"webhook","depth":2,"children":[]},{"title":"Best practice","slug":"best-practice","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":"Introduzione - 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":1},"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":0},"sv":{"href":"/sv/features/entitlements/introduction","matchLevel":1}}},"lastModified":"2026-09-26T16:06:31.305Z","gitLastModified":"2026-09-26T16:03:47.000Z","originalFileLocation":"it/features/entitlements/introduction.mdx","locale":"it"},"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=\"Consegna automaticamente chiavi di licenza, file scaricabili, feature flag e accesso a Discord, GitHub, Telegram, Framer e Notion quando i clienti effettuano un pagamento.\">\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=\"Introduzione - Dodo Payments Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Consegna automaticamente chiavi di licenza, file scaricabili, feature flag e accesso a Discord, GitHub, Telegram, Framer e Notion quando i clienti effettuano un pagamento.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Dodo Payments Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.dodopayments.com/it/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=Introduzione\u0026amp;description=Consegna+automaticamente+chiavi+di+licenza%2C+file+scaricabili%2C+feature+flag+e+accesso+a+Discord%2C+GitHub%2C+Telegram%2C+Framer+e+Notion+quando+i+clienti+effettuano+un\u0026amp;theme=fcc3a546490e883f7462a320\u0026amp;signature=b4e5928c5b0f37c6cf5bffb307b3eb6cb423c8ff1e7794eba428cb087463c29f\">\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=\"Introduzione - Dodo Payments Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Consegna automaticamente chiavi di licenza, file scaricabili, feature flag e accesso a Discord, GitHub, Telegram, Framer e Notion quando i clienti effettuano un pagamento.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://dodopayments.mintlify.site/_mintlify/api/og/v2?division=Entitlements\u0026amp;title=Introduzione\u0026amp;description=Consegna+automaticamente+chiavi+di+licenza%2C+file+scaricabili%2C+feature+flag+e+accesso+a+Discord%2C+GitHub%2C+Telegram%2C+Framer+e+Notion+quando+i+clienti+effettuano+un\u0026amp;theme=fcc3a546490e883f7462a320\u0026amp;signature=b4e5928c5b0f37c6cf5bffb307b3eb6cb423c8ff1e7794eba428cb087463c29f\">\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/it/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=\"/it/features/entitlements/introduction.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"it\" href=\"https://docs.dodopayments.com/it/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=\"pt-BR\" href=\"https://docs.dodopayments.com/pt-BR/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=\"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/it/features/entitlements/introduction#webpage\",\"url\":\"https://docs.dodopayments.com/it/features/entitlements/introduction\",\"name\":\"Introduzione\",\"description\":\"Consegna automaticamente chiavi di licenza, file scaricabili, feature flag e accesso a Discord, GitHub, Telegram, Framer e Notion quando i clienti effettuano un pagamento.\",\"dateModified\":\"2026-09-26T16:03:47.000Z\",\"isPartOf\":{\"@id\":\"https://docs.dodopayments.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.dodopayments.com/it/features/entitlements/introduction#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.dodopayments.com/it/features/entitlements/introduction#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Features\",\"item\":\"https://docs.dodopayments.com/it/features/products\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introduzione\",\"item\":\"https://docs.dodopayments.com/it/features/entitlements/introduction\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.dodopayments.com/it/features/entitlements/introduction#article\",\"headline\":\"Introduzione\",\"name\":\"Introduzione\",\"description\":\"Consegna automaticamente chiavi di licenza, file scaricabili, feature flag e accesso a Discord, GitHub, Telegram, Framer e Notion quando i clienti effettuano un pagamento.\",\"url\":\"https://docs.dodopayments.com/it/features/entitlements/introduction\",\"mainEntityOfPage\":{\"@id\":\"https://docs.dodopayments.com/it/features/entitlements/introduction#webpage\"},\"dateModified\":\"2026-09-26T16:03:47.000Z\",\"keywords\":\"Dodo Payments, entitlements, fulfillment, chiavi di licenza, consegna digitale, accesso alla piattaforma\",\"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":"/it/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","pages":[{"title":"pt-BR","href":"/pt-BR/features/entitlements/introduction"}]},{"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","tabs":[{"tab":"Docs","icon":"book","groups":[{"group":"Getting Started","pages":[{"title":"Welcome to Dodo Payments","sidebarTitle":"Introduction","icon":"rocket","href":"/it/introduction"},{"title":"Costruisci con agenti di codifica AI","sidebarTitle":"Agenti di codifica AI","icon":"robot","href":"/it/developer-resources/build-with-ai-coding-agents"},{"title":"Migra a Dodo Payments","icon":"arrow-right-arrow-left","href":"/it/migrate-to-dodo"},{"title":"Account Verification","icon":"id-card","href":"/it/miscellaneous/verification-process"}]},{"group":"Features","pages":[{"sidebarTitle":"Prodotti","title":"Prodotti","icon":"box","href":"/it/features/products"},{"sidebarTitle":"Collezioni di Prodotti","title":"Collezioni di Prodotti","icon":"layer-group","href":"/it/features/product-collections"},{"sidebarTitle":"Pagamenti una tantum","title":"Pagamenti una tantum","icon":"credit-card","href":"/it/features/one-time-payment-products"},{"group":"Subscriptions","icon":"infinity","pages":[{"sidebarTitle":"Abbonamenti","title":"Abbonamenti","icon":"repeat","href":"/it/features/subscription"},{"sidebarTitle":"Componenti aggiuntivi","title":"Componenti aggiuntivi per abbonamenti","icon":"puzzle","href":"/it/features/addons"},{"title":"Abbonamenti On-Demand","icon":"bolt","href":"/it/developer-resources/ondemand-subscriptions"}]},{"group":"Usage Based Billing","icon":"arrow-trend-up","pages":[{"sidebarTitle":"Introduzione","title":"Fatturazione basata sull'utilizzo","icon":"box","href":"/it/features/usage-based-billing/introduction"},{"sidebarTitle":"Misuratori","title":"Misuratori","icon":"sliders","href":"/it/features/usage-based-billing/meters"},{"sidebarTitle":"Ingestione Eventi","title":"Ingestione Eventi","icon":"bolt","href":"/it/features/usage-based-billing/event-ingestion"},{"group":"Ingestion Blueprints","icon":"copy","pages":[{"sidebarTitle":"Introduzione","title":"Blueprint di Ingestione","icon":"box","href":"/it/features/usage-based-billing/ingestion-blueprints"},{"title":"LLM Blueprint","icon":"brain-circuit","href":"/it/developer-resources/ingestion-blueprints/llm"},{"title":"API Gateway Blueprint","icon":"cloud","href":"/it/developer-resources/ingestion-blueprints/api-gateway"},{"title":"Blueprint di Archiviazione Oggetti","icon":"box-archive","href":"/it/developer-resources/ingestion-blueprints/object-storage"},{"title":"Stream Blueprint","icon":"tower-broadcast","href":"/it/developer-resources/ingestion-blueprints/stream"},{"title":"Blueprint Intervallo di Tempo","icon":"clock","href":"/it/developer-resources/ingestion-blueprints/time-range"}]}]},{"sidebarTitle":"Fatturazione Basata sui Crediti","title":"Fatturazione Basata sui Crediti","icon":"coins","tag":"NEW","href":"/it/features/credit-based-billing"},{"sidebarTitle":"Fatturazione Basata sui Posti","title":"Fatturazione Basata sui Posti","icon":"users","href":"/it/features/seat-based-billing"},{"sidebarTitle":"Fatturazione ibrida","title":"Modelli di fatturazione ibrida","icon":"layer-group","href":"/it/features/hybrid-billing"},{"title":"Upsell e Downsell","icon":"arrow-up-right-dots","href":"/it/features/upsells-and-downsells"},{"group":"Customers","icon":"user-group","pages":[{"title":"Customer Management","icon":"user-group","href":"/it/features/customers"},{"sidebarTitle":"Customer Portal","title":"Customer Portal","icon":"id-card","href":"/it/features/customer-portal"},{"title":"Customer Wallets","icon":"wallet","tag":"NEW","href":"/it/features/customer-wallet"},{"sidebarTitle":"Email inviate","title":"Registri delle email dei clienti","icon":"envelope","tag":"NEW","href":"/it/features/email-logs"},{"sidebarTitle":"Blocklist clienti","title":"Blocklist clienti","icon":"user-slash","tag":"NEW","href":"/it/features/customer-blocklist"}]},{"sidebarTitle":"Sconti","title":"Sconti","icon":"percent","href":"/it/features/discount-codes"},{"group":"Recovery","icon":"rotate","tag":"NEW","pages":[{"sidebarTitle":"Panoramica","title":"Recupero Entrate","icon":"rotate","href":"/it/features/recovery/overview"},{"sidebarTitle":"Recupero Carrello Abbandonato","title":"Recupero Carrello Abbandonato","icon":"cart-shopping","href":"/it/features/recovery/abandoned-cart-recovery"},{"sidebarTitle":"Gestione degli Abbonamenti","title":"Gestione degli Abbonamenti","icon":"repeat","href":"/it/features/recovery/subscription-dunning"},{"sidebarTitle":"Nuovi tentativi di pagamento degli abbonamenti","title":"Nuovi tentativi di pagamento degli abbonamenti","icon":"arrow-rotate-right","href":"/it/features/recovery/payment-retries"},{"sidebarTitle":"Riprova manuale","title":"Riprova manuale del pagamento","icon":"hand-pointer","tag":"NEW","href":"/it/features/recovery/manual-retry"}]},{"group":"Transactions","icon":"credit-card","pages":[{"title":"Pagamenti","icon":"money-bill-transfer","href":"/it/features/transactions/payments"},{"title":"Rimborsi","icon":"rotate-left","href":"/it/features/transactions/refunds"},{"title":"Disputes","description":"Visualizza e rispondi alle contestazioni dalla pagina Transactions e blocca i chargeback prima che vengano presentati con Visa RDR, gli avvisi Ethoca e le deflection.","icon":"circle-exclamation","href":"/it/features/transactions/disputes"}]},{"group":"Entitlements","icon":"gift","tag":"NEW","pages":[{"title":"Introduzione","sidebarTitle":"Introduzione","icon":"box-archive","href":"/it/features/entitlements/introduction"},{"title":"License Keys","description":"Emetti chiavi di licenza con limiti di attivazione e scadenza tramite l'entitlement License Key, quindi attivale, convalidale e disattivale dal tuo software.","icon":"key","href":"/it/features/license-keys"},{"title":"Consegna di Prodotti Digitali","sidebarTitle":"Prodotti Digitali","icon":"download","href":"/it/features/digital-product-delivery"},{"title":"Feature Flag Entitlement","sidebarTitle":"Feature Flags","icon":"flag","tag":"NEW","href":"/it/features/entitlements/feature-flags"},{"title":"Entitlement Discord","sidebarTitle":"Discord","icon":"discord","href":"/it/features/entitlements/discord"},{"title":"Titolo GitHub","sidebarTitle":"GitHub","icon":"github","href":"/it/features/entitlements/github"},{"title":"Accesso Telegram","sidebarTitle":"Telegram","icon":"telegram","href":"/it/features/entitlements/telegram"},{"title":"Entitlement Framer","sidebarTitle":"Framer","icon":"puzzle-piece","href":"/it/features/entitlements/framer"},{"title":"Notion Entitlement","sidebarTitle":"Notion","icon":"book","href":"/it/features/entitlements/notion"}]},{"group":"Payouts and Balances","icon":"wallet","pages":[{"title":"Processo di Pagamenti","icon":"money-bill","href":"/it/features/payouts/payout-structure"},{"title":"Saldi","icon":"file-invoice-dollar","href":"/it/features/account-summary-payout-wallet"}]},{"group":"Account Management","icon":"user","pages":[{"sidebarTitle":"Archivia un'attività","title":"Archiviazione di un'attività","icon":"box-archive","tag":"NEW","href":"/it/features/archive-business"},{"title":"Impostazione Multi-Brand","icon":"building-columns","href":"/it/features/multi-brands"},{"title":"Gestione Fatture","icon":"file-invoice-dollar","href":"/it/features/invoice-generation"},{"title":"Membri del Team","icon":"user-gear","href":"/it/features/team"},{"title":"Preferenze di comunicazione","sidebarTitle":"Preferenze di comunicazione","icon":"bell","tag":"NEW","href":"/it/features/communication-preferences"},{"title":"Il Mio Account","icon":"user-gear","href":"/it/miscellaneous/accounts"}]},{"group":"Pricing","icon":"dollar-sign","pages":[{"sidebarTitle":"Prezzi Inclusivi di Tassa","title":"Prezzi Inclusivi di Tassa","icon":"file-invoice","href":"/it/features/tax-inclusive-pricing"},{"sidebarTitle":"Paga Quanto Vuoi","title":"Prezzi Paga Quanto Vuoi","icon":"dollar-sign","href":"/it/features/pay-what-you-want"},{"title":"Pagamenti B2B","icon":"money-bills","href":"/it/features/b2b-payments"},{"title":"Prezzi Localizzati","sidebarTitle":"Prezzi Localizzati","icon":"earth-americas","href":"/it/features/localized-pricing"},{"sidebarTitle":"Parità del potere d'acquisto","title":"Parità del Potere d'Acquisto","tag":"NEW","icon":"money-bill-trend-up","href":"/it/features/purchasing-power-parity"},{"sidebarTitle":"Charm Pricing","title":"Charm Pricing","tag":"NEW","icon":"tag","href":"/it/features/charm-pricing"}]},{"sidebarTitle":"Checkout","title":"Caratteristiche del Checkout","icon":"cart-shopping","href":"/it/features/checkout"},{"sidebarTitle":"Design","title":"Personalizzazione del design e del tema","icon":"palette","tag":"NEW","href":"/it/features/design"},{"group":"Payment Methods","icon":"money-bill-wave","pages":[{"title":"Payment Methods","sidebarTitle":"Overview","icon":"layer-group","href":"/it/features/payment-methods"},{"title":"Carte di credito e debito","sidebarTitle":"Carte","icon":"credit-card","href":"/it/features/payment-methods/cards"},{"title":"Digital Wallets","sidebarTitle":"Digital Wallets","icon":"wallet","href":"/it/features/payment-methods/digital-wallets"},{"title":"Compra Ora Paga Dopo (BNPL)","sidebarTitle":"BNPL","icon":"calendar-days","href":"/it/features/payment-methods/bnpl"},{"title":"ACH Direct Debit","sidebarTitle":"ACH Direct Debit","icon":"building-columns","href":"/it/features/payment-methods/ach"},{"title":"Metodi di pagamento in India","sidebarTitle":"India","icon":"indian-rupee-sign","href":"/it/features/payment-methods/india"},{"title":"European Payment Methods","sidebarTitle":"Europe","icon":"euro-sign","href":"/it/features/payment-methods/europe"},{"title":"Metodi di Pagamento in Corea del Sud","sidebarTitle":"Corea del Sud","icon":"won-sign","href":"/it/features/payment-methods/south-korea"},{"title":"Metodi di pagamento nell'area Asia-Pacifico","sidebarTitle":"Asia-Pacifico","icon":"earth-asia","href":"/it/features/payment-methods/asia-pacific"},{"title":"Pix","sidebarTitle":"Pix","icon":"brazilian-real-sign","href":"/it/features/payment-methods/pix"},{"title":"Stablecoin","sidebarTitle":"Stablecoin","icon":"dollar-sign","href":"/it/features/payment-methods/stablecoins"},{"title":"WeChat Pay","sidebarTitle":"WeChat Pay","icon":"comment-dollar","href":"/it/features/payment-methods/wechat"}]},{"title":"Analisi di terze parti","sidebarTitle":"Analisi di terze parti","icon":"chart-line","tag":"NEW","href":"/it/features/analytics"},{"sidebarTitle":"Valuta Adattiva","title":"Valuta Adattiva","icon":"money-bill-transfer","href":"/it/features/adaptive-currency"},{"group":"BYOP","icon":"shuffle","tag":"BETA","pages":[{"title":"Bring Your Own Processor (BYOP)","sidebarTitle":"Panoramica","tag":"BETA","icon":"boxes-stacked","href":"/it/features/byop"},{"title":"Stripe - Connect \u0026 Raw Card API Access","sidebarTitle":"Stripe","icon":"stripe","href":"/it/features/byop/stripe"},{"title":"Adyen - Connect \u0026 Raw Card API Access","sidebarTitle":"Adyen","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/adyen.svg","href":"/it/features/byop/adyen"}]},{"title":"Negozio","icon":"store","href":"/it/features/storefront"},{"title":"Affiliati","icon":"users-line","href":"/it/features/affiliates"},{"title":"Moderation API","icon":"shield-check","tag":"NEW","href":"/it/features/moderation"},{"title":"Vendita di beni digitali su iOS","icon":"mobile","href":"/it/features/appstore-digital-goods"},{"title":"Dashboard Analytics","sidebarTitle":"Dashboard Analytics","icon":"chart-line","href":"/it/features/analytics-and-reporting"},{"title":"Report","sidebarTitle":"Report","icon":"file-invoice","href":"/it/features/reports"}]},{"group":"Integrate","pages":[{"group":"SDKs","icon":"box-open","pages":[{"sidebarTitle":"Panoramica","title":"SDK ufficiali","icon":"box","href":"/it/developer-resources/dodo-payments-sdks"},{"title":"TypeScript","icon":"js","href":"/it/developer-resources/sdks/typescript"},{"title":"Python","icon":"python","href":"/it/developer-resources/sdks/python"},{"title":"Go","icon":"golang","href":"/it/developer-resources/sdks/go"},{"title":"Ruby","icon":"gem","href":"/it/developer-resources/sdks/ruby"},{"title":"Java","icon":"java","href":"/it/developer-resources/sdks/java"},{"title":"Kotlin","icon":"k","href":"/it/developer-resources/sdks/kotlin"},{"title":"PHP","icon":"php","href":"/it/developer-resources/sdks/php"},{"title":"C#","icon":"c","href":"/it/developer-resources/sdks/csharp"},{"title":"Rust","icon":"rust","href":"/it/developer-resources/sdks/rust"}]},{"group":"Mobile Checkout SDKs","icon":"mobile","pages":[{"title":"Mobile Integration Guide","sidebarTitle":"Integration Guide","icon":"mobile","href":"/it/developer-resources/mobile-integration"},{"title":"Android","sidebarTitle":"Android","tag":"NEW","icon":"android","href":"/it/developer-resources/sdks/android"},{"title":"iOS","sidebarTitle":"iOS","tag":"NEW","icon":"apple","href":"/it/developer-resources/sdks/ios"},{"title":"React Native","sidebarTitle":"React Native","tag":"NEW","icon":"react","href":"/it/developer-resources/sdks/react-native"},{"title":"Flutter","sidebarTitle":"Flutter","tag":"NEW","icon":"layer-group","href":"/it/developer-resources/sdks/flutter"}]},{"group":"Framework Adaptors","icon":"frame","pages":[{"sidebarTitle":"Panoramica","title":"Panoramica degli Adattatori del Framework","icon":"box","href":"/it/developer-resources/framework-adaptors"},{"title":"Next.js Adaptor","icon":"code-merge","href":"/it/developer-resources/nextjs-adaptor"},{"title":"Adattatore Better Auth","icon":"code-merge","href":"/it/developer-resources/better-auth-adaptor"},{"title":"Componente Convex","icon":"code-merge","href":"/it/developer-resources/convex-component"},{"title":"TanStack Adaptor","icon":"code-merge","href":"/it/developer-resources/tanstack-adaptor"},{"title":"Adaptor Nuxt","icon":"code-merge","href":"/it/developer-resources/nuxt-adaptor"},{"title":"Express Adaptor","icon":"code-merge","href":"/it/developer-resources/express-adaptor"},{"title":"Astro Adaptor","icon":"code-merge","href":"/it/developer-resources/astro-adaptor"},{"title":"SvelteKit Adaptor","icon":"code-merge","href":"/it/developer-resources/sveltekit-adaptor"},{"title":"Hono Adaptor","icon":"code-merge","href":"/it/developer-resources/hono-adaptor"},{"title":"Remix Adaptor","icon":"code-merge","href":"/it/developer-resources/remix-adaptor"},{"title":"Adattatore Fastify","icon":"code-merge","href":"/it/developer-resources/fastify-adaptor"},{"title":"Adattatore Bun","icon":"code-merge","href":"/it/developer-resources/bun-adaptor"}]},{"group":"Webhooks","icon":"webhook","pages":[{"sidebarTitle":"Overview","title":"Webhooks","icon":"webhook","href":"/it/developer-resources/webhooks"},{"title":"Guida agli eventi Webhook","icon":"bell","href":"/it/developer-resources/webhooks/intents/webhook-events-guide"},{"group":"Webhook Payloads","icon":"code","pages":[{"title":"Pagamento","icon":"credit-card","href":"/it/developer-resources/webhooks/intents/payment"},{"sidebarTitle":"Subscription","title":"Webhook di Subscription","icon":"repeat","href":"/it/developer-resources/webhooks/intents/subscription"},{"title":"Rimborso","icon":"rotate-left","href":"/it/developer-resources/webhooks/intents/refund"},{"sidebarTitle":"Contestazione","title":"Webhook delle contestazioni","icon":"circle-exclamation","href":"/it/developer-resources/webhooks/intents/dispute"},{"title":"Chiave di Licenza","icon":"key","href":"/it/developer-resources/webhooks/intents/license-key"},{"title":"Concessione di Diritti","icon":"gift","href":"/it/developer-resources/webhooks/intents/entitlement-grant"},{"sidebarTitle":"Fatturazione basata sui crediti","title":"Webhook per la fatturazione basata sui crediti","icon":"coins","href":"/it/developer-resources/webhooks/intents/credit"},{"title":"Recupero","icon":"rotate","href":"/it/developer-resources/webhooks/intents/recovery"},{"sidebarTitle":"Payout","title":"Webhook dei payout","icon":"money-bill-transfer","href":"/it/developer-resources/webhooks/intents/payout"}]},{"group":"Deploy to Cloud","icon":"rocket","pages":[{"title":"Vercel Functions","icon":"triangle","href":"/it/developer-resources/webhooks/examples/vercel-example"},{"title":"Cloudflare Workers","icon":"cloud","href":"/it/developer-resources/webhooks/examples/cloudflare-example"},{"title":"Supabase Edge Functions","icon":"bolt","href":"/it/developer-resources/webhooks/examples/supabase-example"},{"title":"Funzioni Netlify","icon":"diamond","href":"/it/developer-resources/webhooks/examples/netlify-example"}]}]},{"group":"Testing \u0026 Demo Tools","icon":"flask","pages":[{"title":"Modalità Test vs Modalità Live","icon":"toggle-on","href":"/it/miscellaneous/test-mode-vs-live-mode"},{"title":"Testing Process","icon":"flask","href":"/it/miscellaneous/testing-process"},{"title":"Prodotto Demo Atlas","icon":"palette","href":"/it/features/atlas-demo-website"}]},{"group":"Boilerplates","icon":"box-open","pages":[{"sidebarTitle":"Expo","title":"Expo Boilerplate","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/expo.svg","tag":"NEW","href":"/it/developer-resources/expo-boilerplate"},{"sidebarTitle":"Supabase","title":"Boilerplate Supabase","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/supabase.svg","href":"/it/developer-resources/supabase-boilerplate"},{"sidebarTitle":"Plugin Figma","title":"Plugin Figma","icon":"https://mintlify.s3.us-west-1.amazonaws.com/dodopayments/images/logos/figma.svg","href":"/it/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":"/it/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":"/it/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":"/it/developer-resources/fastapi-boilerplate"},{"sidebarTitle":"Go","title":"Go Boilerplate","icon":"golang","tag":"NEW","href":"/it/developer-resources/go-boilerplate"}]},{"title":"Dodo CLI","icon":"terminal","tag":"NEW","href":"/it/developer-resources/sdks/cli"},{"title":"Overlay Checkout","icon":"cart-shopping","href":"/it/developer-resources/overlay-checkout"},{"title":"Checkout Inline","icon":"credit-card","href":"/it/developer-resources/inline-checkout"},{"title":"Billing SDK","icon":"boxes-stacked","href":"/it/developer-resources/billingsdk"},{"title":"Dodo Payments MCP Server","icon":"server","href":"/it/developer-resources/mcp-server"},{"title":"Agent Skills","icon":"wand-magic-sparkles","href":"/it/developer-resources/agent-skills"},{"sidebarTitle":"Sincronizzazione del database","title":"Sincronizza con il tuo database","icon":"database","href":"/it/developer-resources/dodo-sync"},{"sidebarTitle":"Subscription Migration","title":"Subscription Migration to Dodo Payments","icon":"file-import","href":"/it/miscellaneous/subscription-migration"}]},{"group":"Merchant of Record","pages":[{"sidebarTitle":"Che cos'è MoR?","title":"Introduzione","icon":"building-columns","href":"/it/features/mor-introduction"},{"title":"MoR vs PG","icon":"scale-balanced","href":"/it/features/mor-vs-pg"},{"title":"Paesi idonei per l'accettazione dei merchant","icon":"globe","href":"/it/miscellaneous/accepted-countries-and-territories"},{"title":"Politica di Revisione e Monitoraggio","icon":"magnifying-glass","href":"/it/miscellaneous/review-monitoring-policy"},{"sidebarTitle":"Bypass of App Store Fees","title":"Come aggirare le commissioni di App Store e Play Store usando Dodo Payments","icon":"shield-check","href":"/it/features/bypassing-app-store-fees"}]},{"group":"Miscellaneous","pages":[{"group":"Support Channels","icon":"headset","pages":[{"title":"Aiuto e Supporto","icon":"headset","href":"/it/miscellaneous/help-support"},{"title":"Richiesta di Funzionalità e Roadmap","icon":"lightbulb","href":"/it/features/feature-request"}]},{"title":"App per dispositivi mobili e desktop","icon":"mobile","href":"/it/features/mobile-app"},{"title":"Politica di Reporting sulla Sicurezza","icon":"shield","href":"/it/miscellaneous/security-policy"}]}]},{"tab":"Guides","icon":"compass","pages":[{"title":"Guides","href":"/it/developer-resources/integration-guide"}]},{"tab":"API Reference","icon":"rectangle-code","pages":[{"title":"API Reference","href":"/it/api-reference/introduction"}]},{"tab":"External Integrations","icon":"plug","pages":[{"title":"External Integrations","href":"/it/integrations/introduction"}]},{"tab":"Changelog","icon":"calendar-days","pages":[{"title":"Changelog","href":"/it/changelog/introduction"}]},{"tab":"Community Projects","icon":"users","pages":[{"title":"Community Projects","href":"/it/community/overview"}]}]},{"language":"sv","pages":[{"title":"sv","href":"/sv/features/entitlements/introduction"}]}]},"basePath":"","title":"Introduzione - 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"]}