Pending y espera a que tú proporciones el valor de la clave desde tu propio sistema, un proveedor externo o un conjunto finito de códigos.
Al final tendrás:
- Un producto con un derecho de Clave de Licencia configurado para cumplimiento
manual. - Un receptor de webhooks que detecta cuando un cliente está esperando una clave.
- Una llamada de cumplimiento que entrega la clave y notifica automáticamente al cliente.
License Keys overview
El ciclo de vida completo de la clave de licencia y la configuración
fulfillment_mode.Fulfill License Key Grant API
Referencia de API para el punto final que llamas para entregar una clave.
Cómo Funciona
El cumplimiento manual solo cambia el paso de emisión. Activación, validación, desactivación, vencimiento y revocación se comportan exactamente como una clave auto-generada una vez entregada.Prerrequisitos
Para seguir esta guía necesitarás:- Una cuenta de comerciante de Dodo Payments.
- Tu clave API (
DODO_PAYMENTS_API_KEY) y la clave secreta del webhook desde el panel de control. Consulta la guía de generación de claves API. - Un punto final backend que pueda recibir webhooks.
Usa
https://test.dodopayments.com y credenciales de modo de prueba mientras desarrollas. Cambia a https://live.dodopayments.com y claves en vivo cuando vayas a producción.Paso 1 — Crear un Derecho de Clave de Licencia en Modo Manual
Un derecho es una definición reutilizable de lo que entregas. Crea un derecho de Clave de Licencia y configura sufulfillment_mode en manual.
- Dashboard
- API
1
Open Entitlements
Ve a Derechos en tu panel de control y haz clic en + para crear un nuevo derecho.
2
Choose License Key
Selecciona Clave de Licencia como la integración y dale un Nombre. El formulario expone estos campos:
- Modo de Cumplimiento —
Automaticpor defecto. Esta es la configuración que permite el cumplimiento manual; la cambiarás en el siguiente paso. - Duración de la Licencia — cuánto tiempo se mantiene válida cada clave emitida, o Sin vencimiento.
- Límite de Activaciones — activaciones máximas por clave, o Ilimitado.
- Mensaje de Activación — mensaje opcional de cara al cliente que se muestra cuando activan la clave.

3
Set Fulfillment Mode to Manual
Abre el menú desplegable Fulfillment Mode y cámbialo de Automatic a Manual. Este es el ajuste que determina toda esta guía: sin él, las claves se generan y envían por correo electrónico automáticamente y no se crea ninguna concesión pendiente. Con Manual seleccionado, cada compra crea una concesión
Pending que debes completar. Haz clic en Create Entitlement para guardar.La
fulfillment_mode tiene un valor predeterminado de auto. Omitirlo, o dejar un derecho existente sin cambios, mantiene el comportamiento automático. Solo los derechos configurados explícitamente en manual crean concesiones pendientes.Paso 2 — Adjuntar el Derecho a un Producto
Abre el producto que deseas vender, expande Configuración Avanzada → Derechos & Créditos, y selecciona el derecho de Clave de Licencia que configuraste en Manual en el Paso 1. Un solo producto puede entregar esta clave de licencia junto a otros derechos en la misma compra.
Selecting the License Key entitlement in the product entitlements panel.
El modo de cumplimiento es una propiedad del derecho, no del producto. Debido a que lo configuraste en Manual en el Paso 1, cada producto al que se adjunta este derecho crea concesiones de clave de licencia
pending en la compra — no hay nada extra que configurar aquí.El modo de entrega es una propiedad de la concesión, no del producto. Como lo estableciste en Manual en el Paso 1, cada producto al que esté asociada esta concesión crea concesiones de claves de licencia
Pending al realizar la compra; no hay nada más que configurar aquí.Paso 3 — Detectar Concesiones Pendientes
Cuando un cliente compra el producto, Dodo Payments crea una concesión en estadopending sin clave adjunta y activa un webhook entitlement_grant.created. Esta es tu señal de que un cliente está esperando una clave.
Cuando un cliente compra el producto, Dodo Payments crea una concesión con estado Pending sin ninguna clave asociada y activa un webhook entitlement_grant.created. Esta es la señal de que un cliente está esperando una clave.
Configura un punto final de webhook (Desarrollador → Webhooks en el panel de control) y actúa sobre concesiones de claves de licencia pendientes. La implementación sigue la especificación de Standard Webhooks.
O consulta la API de Listado de Concesiones
Si prefieres no depender de webhooks, lista concesiones para el derecho y filtra porintegration_type e status:
Si prefieres no depender de webhooks, lista las concesiones para tu derecho de Clave de Licencia y filtra por status. Cada concesión en un derecho de Clave de Licencia es ya una concesión de clave de licencia, por lo que no se necesita el filtro integration_type:
Node.js
Node.js
cURL
Paso 4 — Entregar la Clave
Obtén el valor de la clave de tu propio sistema, luego envíala con el punto final Fulfill License Key Grant. Esto requiere tu clave API secreta (permiso de Editor); no es uno de los puntos finales públicos de licencia.Campos de solicitud
string
requerido
La cadena de la clave de licencia para entregar al cliente. Se recorta el espacio en blanco; se rechaza un valor vacío o solo de espacios en blanco.
integer
Límite de activación por clave. Vuelve a la configuración del derecho cuando se omite.
string
Vencimiento por clave (ISO 8601). Vuelve a la duración de la configuración del derecho cuando se omite. Para concesiones emitidas por suscripción, la validez sigue estando ligada a la suscripción sin importar nada.
delivered, el cliente recibe automáticamente la clave (el mismo correo electrónico que recibiría bajo cumplimiento automático), y se activa entitlement_grant.delivered.
Cuando la operación tiene éxito, la concesión pasa a Delivered, el cliente recibe la clave automáticamente (el mismo correo electrónico que recibiría con la entrega automática) y se activan los eventos de webhook license_key.created y entitlement_grant.delivered.

The license key email the customer receives once you fulfill the grant.
No necesitas enviar tú mismo el correo electrónico con la clave — la entrega ocurre automáticamente cuando se cumple la concesión.
Paso 5 — Manejar Errores y Reintentos
El punto final valida la concesión antes de entregar nada. Maneja estas respuestas:Verifica el Flujo
- Compra el producto en modo de prueba (consulta las guías de pago).
-
Confirma que tu webhook recibió
entitlement_grant.createdconstatus: "pending"eintegration_type: "license_key", o que la concesión aparece en la respuesta de List Grants con esos filtros. - Llama al punto final de cumplimiento con una clave de prueba.
-
Confirma que la respuesta muestra
status: "delivered"conlicense_keypoblado, el cliente recibe el correo electrónico con la clave y se activaentitlement_grant.delivered. - Compra el producto en modo de prueba (consulta las guías de checkout).
-
Confirma que tu webhook recibió
entitlement_grant.createdconstatus: "Pending"yintegration_type: "license_key", o que la concesión aparece en la respuesta de List Grants con esos filtros. - Llama al endpoint de entrega con una clave de prueba.
-
Confirma que la respuesta muestra
status: "Delivered"con unlicense_keycompletado, que el cliente recibe el correo electrónico con la clave y que se activaentitlement_grant.delivered.
Referencia de API Relacionada
Create Entitlement
Crea el derecho de Clave de Licencia con
fulfillment_mode: manual.List Grants
Filtra por
integration_type e status para encontrar concesiones pendientes.Fulfill License Key Grant
Entrega el valor de la clave y transiciona la concesión a entregada.
Entitlement Grant Webhooks
Los eventos
entitlement_grant.* que indican concesiones pendientes y entregadas.Create Entitlement
Crea la concesión de License Key con
fulfillment_mode: manual.List Grants
Filtra por
status y customer_id para encontrar las concesiones pendientes.Fulfill License Key Grant
Entrega el valor de la clave y cambia la concesión al estado entregado.
Entitlement Grant Webhooks
Los eventos
entitlement_grant.* que indican que las concesiones están pendientes y entregadas.