pending y espera a que tú suministres 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
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.

Set Fulfillment Mode to Manual
Abre el menú desplegable Modo de Cumplimiento y cámbialo de Automático a Manual. Esta es la configuración que impulsa toda esta guía — sin ella, 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 para que tú la cumplas. Haz clic en Crear Derecho 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.
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í.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.
Escucha el webhook
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.integration_type: "license_key", para que puedas reconocer una concesión de clave de licencia sin una búsqueda adicional. Consulta la Referencia del webhook de Concesión de Derechos para ver el payload completo.
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:
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
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.
Límite de activación por clave. Vuelve a la configuración del derecho cuando se omite.
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.
El cliente recibe un correo electrónico con la clave de licencia, el producto, el límite de activación, el vencimiento y tus instrucciones de activación:

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:| Estado | Significado | Qué hacer |
|---|---|---|
200 | Clave entregada, la concesión ahora es delivered. | Listo. |
400 | No es una concesión de clave de licencia, o la clave está vacía/solo contiene espacios. | Corrige la solicitud; no reintentes tal cual. |
404 | No hay concesión con ese ID para tu negocio. | Verifica el grant_id. |
409 | Concesión no está esperando cumplimiento (ya entregada o ya tiene una clave), o el valor de la clave ya existe. | Si ya se entregó, trata como éxito. Si es una clave duplicada, proporciona una clave diferente. |
422 | El cuerpo de la solicitud falló en la validación (por ejemplo, activations_limit < 1). | Corrige el campo y reintenta. |
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.
Una vez entregada, el cliente puede activar y validar la clave contra los puntos finales públicos de licencia exactamente como una clave auto-generada.
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
Create the License Key entitlement with
fulfillment_mode: manual.List Grants
Filter by
integration_type and status to find pending grants.Fulfill License Key Grant
Deliver the key value and transition the grant to delivered.
Entitlement Grant Webhooks
The
entitlement_grant.* events that signal pending and delivered grants.