Skip to main content
Le chiavi di licenza sono il tipo di entitlement License Key. Crea una volta un entitlement License Key con il limite di attivazione, la scadenza e il messaggio di attivazione desiderati, quindi collegalo a qualsiasi prodotto. Per impostazione predefinita, Dodo Payments genera e invia tramite email una chiave per ogni unità acquistata o per ogni posto dell’abbonamento.

Cosa sono le chiavi di licenza?

Una chiave di licenza è un token univoco che autorizza l’accesso al tuo prodotto. Usa le chiavi di licenza per:
  • Licenze software: app desktop, plugin e CLI.
  • Controlli per posto: limita le attivazioni per utente o dispositivo.
  • Prodotti digitali: limita l’accesso a download, aggiornamenti o funzionalità premium.
Dodo Payments gestisce le chiavi di licenza tramite Entitlements. Gli stessi eventi di pagamento e abbonamento che gestiscono gli altri entitlement gestiscono il ciclo di vita di ogni chiave: creazione, scadenza, revoca e nuova assegnazione.

Create a License Key Entitlement

1

Open Entitlements

Vai a Entitlements nella dashboard e fai clic su + per creare un entitlement.
2

Choose License Key

Seleziona License Keys, inserisci un Name e configura il comportamento di ogni chiave emessa:
  • Fulfillment Mode: Automatic (impostazione predefinita) genera e invia tramite email ogni chiave. Manual consente di fornire personalmente ogni chiave. Consulta Manual Fulfillment.
  • Activations Limit: il numero massimo di attivazioni attive per chiave, ad esempio 1 per un singolo utente o 5 per una licenza di team. Seleziona Unlimited per non applicare alcun limite.
  • License Length: per quanto tempo una chiave rimane valida dopo l’emissione, ad esempio 30 giorni o 1 anno, oppure No expiration. Per i prodotti in abbonamento, scegli No expiration: le chiavi emesse per un abbonamento non scadono e la loro validità segue lo stato dell’abbonamento.
  • Activation Message: istruzioni opzionali rivolte al cliente, fino a 2.500 caratteri, incluse nell’email che consegna la chiave. Ad esempio: Paste the key in Settings → License o Run: mycli activate <key>.
New License Key entitlement form with name, fulfillment mode, license length, activations limit, and activation message
3

Save the Entitlement

Fai clic su Create Entitlement. Ora puoi collegare l’entitlement a qualsiasi prodotto.

Attach to Products

Apri un prodotto, vai alla sezione Entitlements e seleziona il tuo entitlement License Key. Un prodotto può fornire una chiave di licenza insieme ad altri entitlement nello stesso acquisto, come l’accesso a Discord, il download di file o l’accesso a un repository GitHub.
Product entitlements panel with License Key selected

Selecting the License Key entitlement in the product entitlements panel.


How Keys Are Issued

L’emissione delle chiavi segue il normale ciclo di vita delle concessioni. Ogni evento influisce sulle chiavi di licenza come segue:

Comportamento della quantità

Il numero di chiavi dipende dall’origine della concessione. Ogni chiave riceve la propria concessione.
  • Prodotti in abbonamento emettono una chiave per ogni posto (subscriptions.quantity).
  • Prodotti una tantum emettono una chiave per ogni unità dell’articolo nella riga del carrello (product_cart.quantity).
  • Concessioni API manuali emettono esattamente una chiave.

Modalità di evasione

Ogni entitlement License Key ha un fulfillment_mode che determina chi fornisce la chiave:
  • auto (predefinito, Automatic nella dashboard): Dodo Payments genera e invia tramite email la chiave al momento del pagamento o dell’abbonamento. Questo è il comportamento mostrato nella tabella precedente e si applica quando fulfillment_mode viene omesso.
  • manual (Manual nella dashboard): ogni unità acquistata crea una concessione Pending senza chiave e devi fornire il valore di ogni chiave. Consulta Manual Fulfillment.

Evasione manuale

Con l’evasione manuale, fornisci ogni chiave di licenza invece di lasciare che la generi Dodo Payments. L’acquisto crea una concessione Pending senza chiave, ti invia una notifica tramite webhook e attende che tu invii il valore della chiave. Usala quando le chiavi provengono dal tuo sistema, da un fornitore di terze parti o da un insieme limitato di codici prestampati.
Per una procedura dettagliata, dalla creazione del prodotto alla consegna della chiave, consulta la Manual License Key Fulfillment Integration Guide.

Quando usarla

L’evasione automatica è adatta alla maggior parte delle licenze software. Scegli l’evasione manuale quando Dodo Payments non può generare direttamente la chiave:
  • Usa le tue chiavi: la tua applicazione, un prodotto desktop o il tuo license server genera la chiave.
  • Fornitori di terze parti: rivendi chiavi emesse da un fornitore a monte, come una chiave di gioco, una credenziale API o una licenza per una piattaforma partner.
  • Inventario limitato: distribuisci codici da un insieme pre-allocato e li assegni uno alla volta.
  • Revisione manuale: vuoi controllare un acquisto prima di concedere l’accesso.

Abilitare l’evasione manuale

Per abilitare l’evasione manuale tramite API, imposta fulfillment_mode: "manual" nell’integration_config dell’entitlement License Key. Nella dashboard, imposta Fulfillment Mode su Manual.
fulfillment_mode è retrocompatibile. Gli entitlement creati prima dell’introduzione di questa impostazione non hanno fulfillment_mode e si comportano come auto. Il passaggio a manual influisce solo sulle concessioni create dopo la modifica. Le chiavi già consegnate non cambiano.

Trovare le concessioni in attesa di evasione

Quando un cliente acquista un prodotto con un entitlement in modalità manuale, Dodo Payments crea la concessione nello stato Pending senza chiave e invia un webhook entitlement_grant.created con integration_type: "license_key" e status: "Pending". Rispondi a quel webhook oppure interroga l’endpoint List Customer Grants con i filtri integration_type e status:

Consegnare la chiave

Per consegnare una chiave, inviala all’endpoint Fulfill License Key Grant. La concessione passa a Delivered e Dodo Payments invia la chiave al cliente tramite email. È la stessa email che il cliente riceve con l’evasione automatica.
cURL
activations_limit e expires_at sono opzionali. Se li ometti, Dodo Payments usa la configurazione dell’entitlement. Ogni concessione può essere evasa una sola volta: riprovare con una concessione già evasa restituisce 409 invece di emettere una seconda chiave.
Non devi inviare personalmente la chiave tramite email. Dodo Payments la consegna quando la concessione viene evasa. L’importazione delle chiavi con POST /license_keys funziona in modo diverso: non invia alcuna notifica al cliente.

Attivazione, convalida e disattivazione

Il tuo software gestisce una chiave durante l’esecuzione tramite tre endpoint. L’attivazione registra un dispositivo o un’installazione associata alla chiave, la convalida verifica che la chiave sia utilizzabile e la disattivazione libera un’attivazione.
Endpoint pubblici: gli endpoint pubblici per attivare, disattivare e convalidare le licenze non richiedono una API key. Chiamali direttamente da software desktop, CLI o client basati su browser senza esporre le credenziali API. I costruttori SDK richiedono comunque un valore bearer token, quindi gli esempi SDK passano un segnaposto.

Attivare una licenza

L’attivazione crea un’istanza di attivazione per la chiave e la restituisce con un ID lki_. Salva questo ID, perché ti serve per disattivare l’istanza. La richiesta restituisce 403 se la chiave non è attiva, 404 se la chiave non esiste e 422 se la chiave ha raggiunto il limite di attivazione.

Convalidare una licenza

La convalida restituisce valid: true quando lo stato della chiave è active e la chiave non è scaduta. Per verificare anche che una specifica istanza di attivazione esista ancora, invia il relativo license_key_instance_id.

Disattivare un’istanza di attivazione

La disattivazione rimuove un’istanza di attivazione e libera un’attivazione sulla chiave. Invia la chiave e l’ID dell’istanza restituito dall’attivazione. La richiesta restituisce 403 se l’istanza non appartiene alla chiave e 404 se la chiave non esiste.

Gestire le chiavi

Per visualizzare le chiavi emesse, apri l’entitlement License Key in Entitlements. L’elenco delle concessioni mostra una riga per ogni chiave cliente, con il cliente, la data di accesso, lo stato e un’azione Revoke. Per vedere la scadenza, il numero di attivazioni e il limite di attivazione di una chiave, aprila in Sales → License Keys. Per elencare programmaticamente le concessioni, chiama List Grants. In ogni concessione con chiave di licenza, l’oggetto license_key contiene la chiave, lo stato, la scadenza, le attivazioni utilizzate e il limite di attivazioni. L’oggetto è null in una concessione in modalità manuale ancora Pending.

Importare chiavi di licenza esistenti tramite API

Per migrare le chiavi di licenza da un altro sistema, importale con l’API Create License Key. I tuoi clienti continuano ad attivare, convalidare e disattivare le stesse stringhe di chiave, quindi non devi emettere nuovamente le chiavi.
Le chiavi di licenza create o aggiornate tramite API non attivano notifiche email ai clienti. Per informare i clienti di una chiave importata, invia una notifica dalla tua applicazione.
La richiesta richiede key, customer_id e product_id. Ometti activations_limit per attivazioni illimitate e ometti expires_at per una chiave che non scade mai. L’importazione di una stringa di chiave già esistente restituisce 409.

Differenze tra le chiavi in base all’origine

Il campo source registra come è stata creata ogni chiave di licenza: Usa source per distinguere le chiavi migrate ed evase manualmente da quelle generate da Dodo Payments, ad esempio durante la riconciliazione o l’audit delle chiavi. Il campo è presente nei record delle chiavi di licenza, come nella risposta POST /license_keys. L’oggetto license_key nelle concessioni restituite da List Grants non lo include. L’endpoint legacy GET /license_keys, che restituisce source e accetta un filtro source, è deprecato.
Stai migrando da Polar.sh o Lemon Squeezy? La CLI dodo-migrate importa in blocco prodotti, clienti, sconti e chiavi di licenza con un solo comando e associa gli ID esterni agli ID di Dodo Payments.

Chiavi di licenza nell’URL di ritorno

Quando un cliente acquista un prodotto con un entitlement License Key, Dodo Payments aggiunge la chiave generata a return_url come parametro di query license_key. La pagina di successo può mostrare la chiave senza una chiamata API aggiuntiva:
Se l’acquisto genera più di una chiave (quantità superiore a 1), il parametro contiene un elenco separato da virgole. La virgola viene codificata nell’URL come %2C, quindi leggi il parametro con un parser URL, che la decodifica, prima di suddividerlo:
Per gli abbonamenti, l’URL contiene subscription_id e lo stato dell’abbonamento invece di payment_id:
Leggi il parametro license_key nella pagina di ritorno per mostrare la chiave subito dopo l’acquisto.

Gestione API

L’attivazione, la disattivazione e la convalida sono pubbliche e non richiedono una API key.

Activate License

Crea un’istanza di attivazione per una chiave di licenza.

Deactivate License

Rimuovi un’istanza di attivazione per liberare capacità.

Validate License

Verifica che una chiave sia attiva e non scaduta prima di concedere l’accesso.
Crea, elenca, recupera e aggiorna singoli record di chiavi di licenza. Usa questi endpoint per importare chiavi esistenti o leggere i dettagli di utilizzo.
GET /license_keys, GET /license_keys/{id} e PATCH /license_keys/{id} sono deprecati. Per le letture, usa gli endpoint delle concessioni degli entitlement (List Grants, List Customer Grants). POST /license_keys rimane supportato per importare chiavi esistenti.

Create License Key

Crea una chiave di licenza o importane una esistente.

List License Keys

Sfoglia tutte le chiavi con i dettagli sullo stato e sull’utilizzo.

Get License Key

Recupera una chiave specifica e i relativi metadati.

Update License Key

Modifica la scadenza o il limite di attivazione oppure abilita o disabilita una chiave.
Gestisci direttamente l’entitlement License Key: il limite di attivazione, la durata della licenza e il messaggio di attivazione.

Create Entitlement

Crea un entitlement License Key.

Update Entitlement

Aggiorna la configurazione dell’entitlement.

List Grants

Elenca le chiavi emesse per un entitlement.

Revoke Grant

Revoca manualmente la chiave di un cliente.

Webhook

La consegna e la revoca delle chiavi di licenza inviano i quattro eventi webhook entitlement_grant.*. Per le concessioni con chiave di licenza, il payload include un oggetto license_key con la chiave, lo stato, la scadenza, le attivazioni utilizzate e il limite di attivazioni. L’evento legacy license_key.created viene ancora attivato quando viene creato un record di chiave di licenza. Consulta la pagina del payload webhook License Key.
Per le nuove integrazioni, gestisci gli eventi delle concessioni degli entitlement invece di license_key.created. Una chiave evasa automaticamente arriva come entitlement_grant.created con status: "Delivered" e non segue alcun evento entitlement_grant.delivered separato. Una chiave evasa manualmente attiva entitlement_grant.delivered quando la fornisci. Gli stessi eventi coprono ogni entitlement del prodotto, non solo la chiave di licenza.

Chiavi di licenza legacy

I prodotti creati con il precedente flag license_key_enabled sono stati migrati automaticamente a un entitlement License Key. La migrazione è trasparente: le chiavi dei clienti esistenti continuano a funzionare, gli endpoint pubblici /licenses/activate, /licenses/validate e /licenses/deactivate continuano a funzionare e gli endpoint API /license_keys/* leggono e scrivono nello stesso archivio delle chiavi.La sezione autonoma della dashboard Sales → License Keys rimane disponibile come elenco piatto di tutte le chiavi emesse, per audit e ricerca. Per modificare i limiti di attivazione, la durata della licenza o il messaggio di attivazione, modifica l’entitlement License Key migrato in Entitlements.

Best practice

  • Scegli limiti di attivazione chiari: seleziona valori predefiniti come 1 per le app per singolo utente o 3–5 per le licenze di team e documentali per i tuoi clienti.
  • Scrivi messaggi di attivazione precisi: i clienti li copiano dall’email della chiave di licenza, quindi percorsi e comandi esatti evitano richieste all’assistenza.
  • Convalida le chiavi tramite API: per i prodotti connessi alla rete, chiama /licenses/validate invece di affidarti a un’attivazione memorizzata localmente.
  • Usa i webhook per la revoca: gestisci entitlement_grant.revoked per disabilitare le funzionalità nell’app quando un cliente annulla o riceve un rimborso.
  • Testa abbonamenti e acquisti una tantum: il comportamento delle chiavi di licenza differisce tra i due casi; ad esempio, le chiavi degli abbonamenti non scadono, quindi testali entrambi prima della pubblicazione.
Ultima modifica il 26 settembre 2026