Skip to main content
Con el cumplimiento manual de claves de licencia, cada compra crea un grant Pending que espera a que tú proporciones el valor de la clave, en lugar de que Dodo Payments genere una clave al realizar el pago. La clave puede proceder de tu propio sistema, de un proveedor externo o de un conjunto limitado de códigos. Al finalizar esta guía, 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 las claves de licencia y la configuración fulfillment_mode.

Fulfill License Key Grant API

Referencia de la API para el endpoint que utilizas para entregar una clave.

Cómo Funciona

La secuencia siguiente muestra una compra, desde el checkout hasta la entrega de la clave: El cumplimiento manual solo cambia el paso de emisión. Una vez entregada, la clave se comporta como una clave generada automáticamente para la activación, validación, desactivación, expiración y revocación. Una compra de varias unidades crea un grant Pending por unidad, y cada grant necesita su propia clave.

Requisitos previos

Para seguir esta guía, necesitas:
  • Una cuenta de comerciante de Dodo Payments.
  • Una API key, creada en Developer → API Keys y almacenada en DODO_PAYMENTS_API_KEY, y el secreto de firma de webhook de Developer → Webhooks, almacenado en DODO_PAYMENTS_WEBHOOK_KEY. Consulta la guía de generación de API keys.
  • Un endpoint de backend que pueda recibir webhooks.
Utiliza https://test.dodopayments.com y las credenciales del modo de prueba mientras desarrollas. Cuando pases a producción, cambia a https://live.dodopayments.com y utiliza las keys del modo activo.

Paso 1 — Crea un entitlement de License Key en modo manual

Un entitlement es una definición reutilizable de lo que entregas. Crea un entitlement de License Key y establece su fulfillment_mode en manual.
1

Open Entitlements

Ve a Entitlements en el dashboard y haz clic en + para crear un entitlement.
2

Choose License Key

Selecciona License Keys e introduce un Name. El formulario contiene estos campos:
  • Fulfillment Mode: Automatic de forma predeterminada. Esta es la configuración que habilita el cumplimiento manual, y la cambiarás en el siguiente paso.
  • License Length: cuánto tiempo permanece válida cada clave emitida, o No expiration.
  • Activations Limit: el número máximo de activaciones por clave, o Unlimited.
  • Activation Message: un mensaje opcional dirigido al cliente que se muestra cuando este activa la clave y que se incluye en el correo electrónico de la clave de licencia.
Formulario de nuevo entitlement de License Key con nombre, modo de cumplimiento, duración de la licencia, límite de activaciones y mensaje de activación
3

Set Fulfillment Mode to Manual

Abre el menú desplegable Fulfillment Mode y cámbialo de Automatic a Manual. El resto de esta guía depende de esta configuración: sin ella, Dodo Payments genera y envía las claves automáticamente y no crea ningún grant pendiente. Con Manual seleccionado, cada compra crea un grant Pending que debes completar. Haz clic en Create Entitlement para guardar.
fulfillment_mode tiene auto de forma predeterminada. Si lo omites o dejas sin cambios un entitlement existente, este mantiene el cumplimiento automático. Solo los entitlements establecidos explícitamente en manual crean grants pendientes.

Paso 2 — Vincula el entitlement a un producto

Abre el producto que quieres vender, ve a su sección Entitlements y selecciona el entitlement de License Key que estableciste en Manual en el Paso 1. Un producto puede entregar esta clave de licencia junto con otros entitlements en la misma compra. Si todavía no tienes un producto, crea primero un producto de pago único o de suscripción. Para venderlo mediante checkout, consulta la Guía de integración.
Panel de entitlements del producto con License Key seleccionado

Selecting the License Key entitlement in the product entitlements panel.

El modo de cumplimiento es una propiedad del entitlement, no del producto. Como lo estableciste en Manual en el Paso 1, cada producto al que se vincule este entitlement crea grants de claves de licencia Pending al realizar la compra. No necesitas configurar nada más en el producto.

Paso 3 — Detecta los grants pendientes

Cuando un cliente compra el producto, Dodo Payments crea un grant con el estado Pending, sin ninguna clave vinculada, y envía un webhook entitlement_grant.created. Este evento indica que un cliente está esperando una clave.

Escucha el webhook

Añade un endpoint de webhook en Developer → Webhooks en el dashboard y, a continuación, actúa sobre los grants de claves de licencia pendientes. Los webhooks siguen la especificación de Standard Webhooks, por lo que puedes verificarlos con la biblioteca standardwebhooks:
El payload del grant contiene integration_type: "license_key", por lo que puedes reconocer un grant de clave de licencia sin realizar otra búsqueda. Las entregas de webhooks pueden repetirse, así que omite los eventos cuyo encabezado webhook-id ya hayas procesado. Consulta la referencia del webhook de Entitlement Grant para ver el payload completo.

O consulta la API List Grants

Si prefieres no depender de los webhooks, enumera los grants de tu entitlement de License Key y filtra por status. Cada grant de un entitlement de License Key es un grant de clave de licencia, por lo que no necesitas un filtro integration_type:

Paso 4 — Entrega la clave

Obtén el valor de la clave de tu propio sistema y, a continuación, envíalo al endpoint Fulfill License Key Grant. La llamada requiere tu secret API key con permiso de Editor. No es uno de los endpoints públicos de licencias. Los SDK también lo exponen, por ejemplo como client.entitlements.grants.fulfillLicenseKey() en TypeScript y client.entitlements.grants.fulfill_license_key() en Python.

Campos de la solicitud

string
requerido
La cadena de la clave de licencia que se entregará al cliente, de hasta 255 caracteres. Los espacios en blanco circundantes se eliminan, y se rechaza un valor vacío o compuesto únicamente por espacios en blanco.
integer
Límite de activaciones por clave, como mínimo 1. Si se omite, se aplica el Activations Limit del entitlement.
string
Expiración por clave (ISO 8601). Si se omite, la clave de un grant de pago único expira según el License Length del entitlement, mientras que la clave de un grant de suscripción no expira, por lo que su validez sigue la de la suscripción.
Si tiene éxito, el grant pasa a Delivered, Dodo Payments envía la clave por correo electrónico al cliente (el mismo correo que recibe con el cumplimiento automático) y se activan los eventos de webhook license_key.created e entitlement_grant.delivered. El correo electrónico contiene la clave de licencia, el producto, el límite de activaciones, la expiración y tus instrucciones de activación:
Correo electrónico de clave de licencia para el cliente que muestra la clave, el producto, el límite de activaciones, la expiración y las instrucciones de activación

The license key email the customer receives once you fulfill the grant.

No necesitas enviar la clave por correo electrónico tú mismo. La entrega se realiza automáticamente cuando se completa el grant.

Paso 5 — Gestiona los errores y los reintentos

El endpoint valida el grant antes de entregar nada. Gestiona estas respuestas:
El cumplimiento se puede reintentar de forma segura ante errores transitorios, como tiempos de espera agotados y respuestas 5xx. Cada grant solo se puede completar una vez, por lo que un reintento después de una llamada exitosa pero no confirmada devuelve 409 en lugar de emitir una segunda clave o enviar un correo duplicado. Utiliza id del grant como clave de idempotencia.

Verifica el flujo

Para probar el flujo de principio a fin:
  1. Compra el producto en modo de prueba. Consulta las guías de checkout.
  2. Confirma que tu webhook recibió entitlement_grant.created con status: "Pending" e integration_type: "license_key", o que el grant aparece en la respuesta de List Grants filtrada por status=Pending.
  3. Llama al endpoint de cumplimiento con una clave de prueba.
  4. Confirma que la respuesta muestra status: "Delivered" con un license_key rellenado, que el cliente recibe el correo electrónico con la clave y que se activa entitlement_grant.delivered.
Una vez entregada la clave, el cliente puede activarla y validarla mediante los endpoints públicos de licencias, igual que una clave generada automáticamente.

Referencia de API relacionada

Create Entitlement

Crea el entitlement de License Key con fulfillment_mode: manual.

List Grants

Filtra por status e customer_id para encontrar grants pendientes.

Fulfill License Key Grant

Entrega el valor de la clave y cambia el grant a Delivered.

Entitlement Grant Webhooks

Los eventos entitlement_grant.* que indican los grants pendientes y entregados.
Última modificación el 26 de septiembre de 2026