Skip to main content
Esta guía explica cómo crear un sistema completo de entrega manual de claves de licencia. En lugar de que Dodo Payments genere automáticamente una clave al realizar el pago, cada compra crea una concesión Pending y espera a que 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 su fulfillment_mode en manual.
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 CumplimientoAutomatic por 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.
New License Key entitlement form with name, fulfillment mode, license length, activations limit, and activation message
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.
Panel de derechos del producto con Clave de Licencia seleccionada

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 estado pending 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 por integration_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.
Al tener éxito, la concesión pasa a 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.
Correo electrónico de clave de licencia al cliente mostrando la clave, producto, límite de activación, vencimiento e instrucciones de activación

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

  1. Compra el producto en modo de prueba (consulta las guías de pago).
  2. Confirma que tu webhook recibió entitlement_grant.created con status: "pending" e integration_type: "license_key", o que la concesión aparece en la respuesta de List Grants con esos filtros.
  3. Llama al punto final de cumplimiento con una clave de prueba.
  4. Confirma que la respuesta muestra status: "delivered" con license_key poblado, el cliente recibe el correo electrónico con la clave y se activa entitlement_grant.delivered.
  5. Compra el producto en modo de prueba (consulta las guías de checkout).
  6. Confirma que tu webhook recibió entitlement_grant.created con status: "Pending" y integration_type: "license_key", o que la concesión aparece en la respuesta de List Grants con esos filtros.
  7. Llama al endpoint de entrega con una clave de prueba.
  8. Confirma que la respuesta muestra status: "Delivered" con un license_key completado, que el cliente recibe el correo electrónico con la clave y que se activa entitlement_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.
Última modificación el 6 de agosto de 2026