License Delivery
Referencia de 116 endpoints generados desde mosend-wb-backend/src/modules/license-delivery/license-delivery.controller.ts.
/organizations/:orgId/license-delivery·116 endpoints·Source: mosend-wb-backend/src/modules/license-delivery/license-delivery.controller.ts/organizations/:orgId/license-delivery/settingsConfiguración del módulo de entrega de licencias.
Path params
orgIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/settings' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/settingsActualiza el módulo (habilitar requiere que el plan lo incluya o el add-on).
Path params
orgIdstringrequerido
Body (JSON)
enabledbooleanwompiEnvstringtestprodwompiPublicKeystringwompiPrivateKeystringSe recibe en claro y se guarda cifrada. Enviar '' para borrar.
wompiEventsSecretstringwompiIntegritySecretstringdeliveryTemplateNamestringPlantilla de entrega fuera de 24h. {{1}}=producto {{2}}=llave {{3}}=link.
deliveryTemplateLangstringdeliveryMessagestringMensaje de entrega (sesión) configurable. Variables: {producto} {llave} {link}.
replacementMessagestringMensaje al reemplazar una llave. Variables: {producto} {llave} {link}.
transferEnabledbooleanCobrar por transferencia a una llave (Bre-B / Nequi), sin pasarela.
wompiEnabledbooleanCobro por pasarela (Nequi push y Daviplata). Apagarlo no borra las credenciales: se conservan para cuando se vuelva a encender.
wompiTarjetaEnabledbooleanOfrece el pago con tarjeta por el enlace de Wompi (Web Checkout). Requiere el secreto de integridad.
transferKeystringLlave Bre-B (@usuario, correo, celular) o número Nequi que recibe.
transferHolderstringTitular de la cuenta; se le muestra al cliente antes de que transfiera.
transferInstructionsstringTexto libre que acompaña a la llave en el mensaje al cliente.
transferAmountCodebooleanCódigo de control para identificar la orden cuando hay colisión: se cobra el neto si está libre, y si no, se baja de a un peso.
resendLimitPerDaynumberReenvíos de licencia que el bot puede hacer al mismo cliente por día. 0 = solo una persona.
receiptModestringMANUALAUTOIAMANUAL = los revisa una persona. AUTO = se aprueba si el monto declarado coincide. IA = la IA lee la captura (monto, fecha, banco, destino, referencia) y se aprueba al instante si todo cuadra; si no, una persona.
receiptAiSourcestringMOSENDPROPIACon qué IA se leen los comprobantes en modo IA. MOSEND = Gemini Flash con la clave de Mosend (se cobra cada lectura). PROPIA = uno de los proveedores de IA que configuró el cliente (su clave, sin costo de Mosend).
receiptAiProviderstringSolo PROPIA: proveedor configurado por el cliente (gemini, openai…).
receiptAiModelstringSolo PROPIA: modelo. Vacío = el predeterminado de ese proveedor.
receiptAiMaxCentsnumberModo IA: desde este monto (centavos) el comprobante lo revisa una persona cuando el banco no puede confirmarlo. `null` = sin tope.
transferExpiryHoursnumberHoras que la orden espera la transferencia antes de expirar (1 a 168).
cobroTemplateNamestringPlantilla aprobada para enviar un cobro agrupado con la ventana de 24 h cerrada. Variables: {{1}} nombre, {{2}} pedidos, {{3}} total, {{4}} llave. null la quita.
cobroTemplateLangstringtransferSellWithoutStockbooleanVender también lo que no tiene existencias (lo cierra un asesor).
saldoCompartidoEntreMarcasbooleanEl saldo a favor se gasta en cualquier marca (false = solo en la suya).
sellingCurrencystringCOPUSDMXNMoneda con la que la organización le vende a SUS clientes.
fxMarginPercentnumberMargen sobre la tasa oficial al convertir a otra moneda, en porcentaje.
inboxHoststringBandeja donde caen las notificaciones del banco.
inboxPortnumberinboxUserstringinboxPasswordstringSe recibe en claro y se guarda cifrada. Enviar '' para borrar.
inboxTlsbooleaninboxSenderDomainstringDominio que debe haber FIRMADO el correo para darlo por bueno.
inboxForwarderAddressstringBuzón desde el que se reenvía (p. ej. `alguien@outlook.com`). Vacío = solo vale la firma del banco. Baja el listón: ver el docblock en el esquema.
inboxProcessedFolderstringCarpeta a la que mover los correos ya registrados (p. ej. `Procesados`). Vacío = se quedan en la bandeja de entrada.
inboxDeleteAfterReadbooleantrue = eliminar los correos ya registrados tras leerlos (no llenar la bandeja) en vez de moverlos a una carpeta.
inboxModestringOFFSUGGESTAUTOOFF = no se lee · SUGGEST = propone · AUTO = aprueba y entrega.
matchWindowHoursnumberHoras hacia atrás en las que se busca un pago para una orden (1 a 168).
binanceEnabledbooleanbinancePayIdstringAlias o correo de Binance Pay que se le muestra al cliente. No es secreto.
binanceApiKeystringClave y secreto de API. Se envían solo al cambiarlos; vacío = conservar el guardado. Nunca se devuelven. DEBEN ser de SOLO LECTURA.
binanceApiSecretstringbinanceAssetstringMoneda del cobro (la estable en dólares, por defecto).
binanceExpiryHoursnumberHoras que el pedido espera el pago antes de liberar las llaves (1 a 168).
nombreBinancestringNombre de los medios sin cuenta propia en reportes y webhooks. Vacío o null = el de siempre («Binance», «Nequi», «Daviplata», «Tarjeta»).
nombreNequiPasarelastringnombreDaviplataPasarelastringnombreTarjetaPasarelastringbinanceModestringOFFSUGGESTAUTOOFF = no se lee · SUGGEST = propone · AUTO = confirma y entrega.
lowStockThresholdnumberUmbral de stock bajo (0 = sin alerta).
maxPerCustomernumberMáximo de licencias por cliente en la ventana (0 = sin límite).
maxPerCustomerDaysnumberVentana (días) del límite por cliente.
renewalEnabledbooleanAvisar al cliente antes de que se le venza la licencia.
renewalDaysBeforenumberDías de antelación del primer aviso (1 a 90).
renewalSecondNoticebooleanSegundo aviso el mismo día del vencimiento.
renewalOnlyBusinessHoursbooleanAvisar solo dentro del horario de atención de la organización.
renewalPhoneNumberIdstring · uuidNúmero emisor del aviso para las ventas que no guardan el suyo.
renewalOnYesstringHANDOFFBOTTAGQué hacer cuando el cliente dice que sí.
Respuestas
- 200
curl -X PUT 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/settings' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"enabled": true,"wompiEnv": "test","wompiPublicKey": "<wompiPublicKey>","wompiPrivateKey": "<wompiPrivateKey>","wompiEventsSecret": "<wompiEventsSecret>","wompiIntegritySecret": "<wompiIntegritySecret>","deliveryTemplateName": "<deliveryTemplateName>","deliveryTemplateLang": "<deliveryTemplateLang>","deliveryMessage": "<deliveryMessage>","replacementMessage": "<replacementMessage>","transferEnabled": true,"wompiEnabled": true,"wompiTarjetaEnabled": true,"transferKey": "<transferKey>","transferHolder": "<transferHolder>","transferInstructions": "<transferInstructions>","transferAmountCode": true,"resendLimitPerDay": 0,"receiptMode": "MANUAL","receiptAiSource": "MOSEND","receiptAiProvider": "<receiptAiProvider>","receiptAiModel": "<receiptAiModel>","receiptAiMaxCents": 0,"transferExpiryHours": 0,"cobroTemplateName": "<cobroTemplateName>","cobroTemplateLang": "<cobroTemplateLang>","transferSellWithoutStock": true,"saldoCompartidoEntreMarcas": true,"sellingCurrency": "COP","fxMarginPercent": 0,"inboxHost": "<inboxHost>","inboxPort": 0,"inboxUser": "<inboxUser>","inboxPassword": "<inboxPassword>","inboxTls": true,"inboxSenderDomain": "<inboxSenderDomain>","inboxForwarderAddress": "<inboxForwarderAddress>","inboxProcessedFolder": "<inboxProcessedFolder>","inboxDeleteAfterRead": true,"inboxMode": "OFF","matchWindowHours": 0,"binanceEnabled": true,"binancePayId": "00000000-0000-0000-0000-000000000000","binanceApiKey": "<binanceApiKey>","binanceApiSecret": "<binanceApiSecret>","binanceAsset": "<binanceAsset>","binanceExpiryHours": 0,"nombreBinance": "<nombreBinance>","nombreNequiPasarela": "<nombreNequiPasarela>","nombreDaviplataPasarela": "<nombreDaviplataPasarela>","nombreTarjetaPasarela": "<nombreTarjetaPasarela>","binanceMode": "OFF","lowStockThreshold": 0,"maxPerCustomer": 0,"maxPerCustomerDays": 0,"renewalEnabled": true,"renewalDaysBefore": 0,"renewalSecondNotice": true,"renewalOnlyBusinessHours": true,"renewalPhoneNumberId": "00000000-0000-0000-0000-000000000000","renewalOnYes": "HANDOFF"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/paypalPayPal: si está conectado y encendido (sin el secreto).
Path params
orgIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/paypal' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/paypalConecta PayPal: prueba el Client ID y el Secret, registra el aviso de pagos en la app de PayPal y lo guarda. PayPal cobra solo en dólares.
Path params
orgIdstringrequerido
Body (JSON)
enabledbooleanenvstringlivesandboxclientIdstringsecretstring
Respuestas
- 200
curl -X PUT 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/paypal' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"enabled": true,"env": "live","clientId": "00000000-0000-0000-0000-000000000000","secret": "<secret>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/settings/addonActiva/desactiva el módulo como add-on de tarifa fija mensual (billing:write).
Path params
orgIdstringrequerido
Body (JSON)
enabledbooleanrequerido
Respuestas
- 200
curl -X PUT 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/settings/addon' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"enabled": true}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/selling-readinessEstado de venta autónoma del módulo (activo, Wompi, productos).
Path params
orgIdstringrequerido
Query params
phoneNumberIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/selling-readiness' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/analyticsMétricas de ventas de licencias: ingresos, conversión, top productos y stock.
Path params
orgIdstringrequerido
Query params
daysstringrequeridodesdestringrequeridohastastringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/analytics' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/couponsLista los cupones de descuento.
Path params
orgIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/coupons' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/couponsCrea un cupón de descuento.
Path params
orgIdstringrequerido
Body (JSON)
codestringrequeridodiscountTypestringPERCENTFIXEDdiscountValuenumberrequeridoPERCENT: 1-100 ; FIXED: centavos a descontar.
productIdstring · uuidAcota a un producto; omitir = cualquiera.
activebooleanmaxRedemptionsnumberexpiresAtstringISO date; omitir = sin vencimiento.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/coupons' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"code": "<code>","discountType": "PERCENT","discountValue": 0,"productId": "00000000-0000-0000-0000-000000000000","active": true,"maxRedemptions": 0,"expiresAt": "<expiresAt>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/coupons/:couponIdActualiza un cupón.
Path params
orgIdstringrequeridocouponIdstringrequerido
Body (JSON)
codestringdiscountTypestringPERCENTFIXEDdiscountValuenumberproductIdstring · uuidactivebooleanmaxRedemptionsnumberexpiresAtstring
Respuestas
- 200
curl -X PATCH 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/coupons/00000000-0000-0000-0000-000000000000' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"code": "<code>","discountType": "PERCENT","discountValue": 0,"productId": "00000000-0000-0000-0000-000000000000","active": true,"maxRedemptions": 0,"expiresAt": "<expiresAt>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/coupons/:couponIdElimina un cupón.
Path params
orgIdstringrequeridocouponIdstringrequerido
Respuestas
- 200
curl -X DELETE 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/coupons/00000000-0000-0000-0000-000000000000' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/price-listsListas de precios por etiqueta (proveedores, mayoristas) con sus precios.
Path params
orgIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/price-lists' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/price-listsCrea una lista de precios.
Path params
orgIdstringrequerido
Body (JSON)
namestringrequeridotagNamesstring[]Etiquetas que activan la lista (por nombre, sin distinguir mayúsculas).
discountPercentnumberDescuento general sobre el precio de lista (0-100).
prioritynumberSi varias listas coinciden, gana la de menor prioridad.
activeboolean
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/price-lists' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"name": "<name>","tagNames": [],"discountPercent": 0,"priority": 0,"active": true}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "Clientes activos",
"description": "Contactos con interacción últimos 30 días"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/price-lists/:priceListIdEdita una lista de precios.
Path params
orgIdstringrequeridopriceListIdstringrequerido
Body (JSON)
namestringtagNamesstring[]discountPercentnumberprioritynumberactiveboolean
Respuestas
- 200
curl -X PATCH 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/price-lists/00000000-0000-0000-0000-000000000000' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"name": "<name>","tagNames": [],"discountPercent": 0,"priority": 0,"active": true}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "Clientes activos",
"description": "Contactos con interacción últimos 30 días"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/price-lists/:priceListIdElimina una lista de precios.
Path params
orgIdstringrequeridopriceListIdstringrequerido
Respuestas
- 200
curl -X DELETE 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/price-lists/00000000-0000-0000-0000-000000000000' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/price-lists/:priceListId/itemsFija (o quita, con priceCents null) el precio de un producto/variante en la lista.
Path params
orgIdstringrequeridopriceListIdstringrequerido
Body (JSON)
productIdstring · uuidrequeridovariantIdstring · uuidpriceCentsnumber
Respuestas
- 200
curl -X PUT 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/price-lists/00000000-0000-0000-0000-000000000000/items' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"productId": "00000000-0000-0000-0000-000000000000","variantId": "00000000-0000-0000-0000-000000000000","priceCents": 0}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "Clientes activos",
"description": "Contactos con interacción últimos 30 días"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/productsLista los productos digitales con stock de llaves.
Path params
orgIdstringrequerido
Query params
conversationIdstringrequeridocontactIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/products' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/products/importImport masivo de productos (Excel/CSV): crea los nuevos, salta los que ya existen por nombre o SKU.
Path params
orgIdstringrequerido
Body (JSON)
productsCreateDigitalProductDto[]requeridoProductos a crear en lote (import Excel/CSV desde la UI).
actualizarExistentesbooleanSi un producto ya existe (por SKU o nombre), actualizarlo con lo que trae la fila en vez de saltarlo. Cierra el ciclo exportar → editar en hoja de cálculo → importar.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/products/import' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"products": [],"actualizarExistentes": true}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/products/bulkFija los mismos campos a varios productos (activo, modo de entrega, categoría, vigencia, aviso, dato adicional).
Path params
orgIdstringrequerido
Body (JSON)
patchobjectrequeridoproductIdsstring[]requerido
Respuestas
- 200
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/products/bulk' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"patch": {},"productIds": []}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/products/bulk-priceAjusta el precio base de varios productos (porcentaje, monto o fijo, con redondeo). Con soloVistaPrevia devuelve el antes/después sin guardar.
Path params
orgIdstringrequerido
Body (JSON)
modostringrequeridoPORCENTAJEMONTOFIJOPORCENTAJE: valor = +10 / -15. MONTO: centavos a sumar o restar. FIJO: precio en centavos.
valornumberrequeridoredondeostringPESOCIENMILincluirVariantesbooleanAplicar también a las variantes de esos productos.
soloVistaPreviabooleanSolo calcular el antes/después, sin guardar.
productIdsstring[]requerido
Respuestas
- 200
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/products/bulk-price' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"modo": "PORCENTAJE","valor": 0,"redondeo": "PESO","incluirVariantes": true,"soloVistaPrevia": true,"productIds": []}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/products/bulk-deleteElimina varios productos; los que tienen ventas se informan aparte sin borrarse.
Path params
orgIdstringrequerido
Body (JSON)
productIdsstring[]requerido
Respuestas
- 200
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/products/bulk-delete' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"productIds": []}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/price-lists/:priceListId/items/bulkPrecio propio de varios productos en una lista: porcentaje del base, copiar el base, fijo o quitar.
Path params
orgIdstringrequeridopriceListIdstringrequerido
Body (JSON)
productIdsstring[]requeridomodostringrequeridoPORCENTAJE_DEL_BASECOPIAR_BASEFIJOQUITARPORCENTAJE_DEL_BASE: valor = descuento (15 = 15 % menos). FIJO: centavos.
valornumberredondeostringPESOCIENMILincluirVariantesboolean
Respuestas
- 200
curl -X PUT 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/price-lists/00000000-0000-0000-0000-000000000000/items/bulk' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"productIds": [],"modo": "PORCENTAJE_DEL_BASE","valor": 0,"redondeo": "PESO","incluirVariantes": true}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "Clientes activos",
"description": "Contactos con interacción últimos 30 días"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/productsCrea un producto digital.
Path params
orgIdstringrequerido
Body (JSON)
namestringrequeridodescriptionstringskustringcategorystringCategoría libre para agrupar y filtrar en el panel.
imageUrlstring · uriURLs con @IsUrl http/https: instructionsUrl alimenta un shortlink PÚBLICO en el dominio de la plataforma — sin validar era un open redirect.
priceCentsnumberrequeridoPrecio en centavos de la moneda (evita floats).
durationDaysnumberDías que dura lo vendido, contados desde la ENTREGA. Omitir o `null` = no vence (licencia perpetua), que es como se ha comportado siempre.
renewalNoticeEnabledbooleanSi entra en el aviso de renovación. Hay cosas que se venden una vez.
currencystringCOPUSDMXNMoneda ISO-4217 (3 letras mayúsculas). Por defecto COP.
instructionsUrlstring · urientregaModostringAUTOMATICAASISTIDACONSULTARModo de entrega: AUTOMATICA (entrega una llave del inventario), ASISTIDA (venta automática, la entrega un asesor; no usa inventario) o CONSULTAR (si no hay stock no dice "agotado": deriva a un asesor para reconfirmar).
datoAdicionalLabelstringDato adicional a pedir al cliente para este producto (ej. "correo").
datoAdicionalRequeridobooleanSi ese dato es obligatorio antes de cerrar la venta.
datoAdicionalTipostringCORREOCORREO_PERSONALTEXTOCORREO (se valida y, sin «Cómo se entrega», se activa en ese correo), CORREO_PERSONAL (además, solo Gmail, Outlook, Hotmail, Yahoo, iCloud…) o TEXTO.
datoAdicionalIndicacionstringLo que se le explica al cliente al pedírselo (lo usa el bot).
tipoDeEntregastringLLAVEACTIVACIONCómo se entrega: LLAVE (se pega la llave) o ACTIVACION (se confirma el correo de cada licencia). null = se deduce del dato que pide.
activebooleanivaActivobooleanIVA en las cotizaciones: si está activo se suma al precio. No cambia lo que se cobra al vender.
ivaPorcentajenumber
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/products' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"name": "<name>","description": "<description>","sku": "<sku>","category": "<category>","imageUrl": "https://tu-app.com/endpoint","priceCents": 0,"durationDays": 0,"renewalNoticeEnabled": true,"currency": "COP","instructionsUrl": "https://tu-app.com/endpoint","entregaModo": "AUTOMATICA","datoAdicionalLabel": "<datoAdicionalLabel>","datoAdicionalRequerido": true,"datoAdicionalTipo": "CORREO","datoAdicionalIndicacion": "<datoAdicionalIndicacion>","tipoDeEntrega": "LLAVE","active": true,"ivaActivo": true,"ivaPorcentaje": 0}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/products/:productIdDetalle de un producto digital con su stock.
Path params
orgIdstringrequeridoproductIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/products/00000000-0000-0000-0000-000000000000' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/products/:productIdActualiza un producto digital.
Path params
orgIdstringrequeridoproductIdstringrequerido
Body (JSON)
namestringdescriptionstringskustringcategorystringimageUrlstring · uripriceCentsnumberdurationDaysnumberDías que dura lo vendido, contados desde la ENTREGA. Omitir o `null` = no vence (licencia perpetua), que es como se ha comportado siempre.
renewalNoticeEnabledbooleanSi entra en el aviso de renovación.
currencystringCOPUSDMXNinstructionsUrlstring · urientregaModostringAUTOMATICAASISTIDACONSULTARdatoAdicionalLabelstringdatoAdicionalRequeridobooleandatoAdicionalTipostringCORREOCORREO_PERSONALTEXTOCORREO (se valida y, sin «Cómo se entrega», se activa en ese correo), CORREO_PERSONAL (además, solo Gmail, Outlook, Hotmail, Yahoo, iCloud…) o TEXTO.
datoAdicionalIndicacionstringLo que se le explica al cliente al pedírselo (lo usa el bot).
tipoDeEntregastringLLAVEACTIVACIONCómo se entrega: LLAVE (se pega la llave) o ACTIVACION (se confirma el correo de cada licencia). null = se deduce del dato que pide.
activebooleanivaActivobooleanIVA en las cotizaciones: si está activo se suma al precio. No cambia lo que se cobra al vender.
ivaPorcentajenumber
Respuestas
- 200
curl -X PATCH 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/products/00000000-0000-0000-0000-000000000000' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"name": "<name>","description": "<description>","sku": "<sku>","category": "<category>","imageUrl": "https://tu-app.com/endpoint","priceCents": 0,"durationDays": 0,"renewalNoticeEnabled": true,"currency": "COP","instructionsUrl": "https://tu-app.com/endpoint","entregaModo": "AUTOMATICA","datoAdicionalLabel": "<datoAdicionalLabel>","datoAdicionalRequerido": true,"datoAdicionalTipo": "CORREO","datoAdicionalIndicacion": "<datoAdicionalIndicacion>","tipoDeEntrega": "LLAVE","active": true,"ivaActivo": true,"ivaPorcentaje": 0}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/conversations/:conversationId/cart-previewA cuánto sale cada línea del carrito en la moneda con la que se va a cobrar, antes de cobrar. Usa la misma resolución que la venta.
Path params
orgIdstringrequeridoconversationIdstringrequerido
Body (JSON)
itemsCartItemDto[]requeridocurrencystringCOPUSDMXN
Respuestas
- 200
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/conversations/00000000-0000-0000-0000-000000000000/cart-preview' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"items": [],"currency": "COP"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/products/:productId/pricesFija los precios del producto en otras monedas. Reemplaza el conjunto: lo que no venga se borra. Sin precio para una moneda, se convierte con la tasa del día.
Path params
orgIdstringrequeridoproductIdstringrequerido
Body (JSON)
preciosPrecioEnMonedaDto[]requerido
Respuestas
- 200
curl -X PUT 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/products/00000000-0000-0000-0000-000000000000/prices' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"precios": []}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/products/:productIdElimina un producto y su pool de llaves.
Path params
orgIdstringrequeridoproductIdstringrequerido
Respuestas
- 200
curl -X DELETE 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/products/00000000-0000-0000-0000-000000000000' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/transfer-qrSube el QR de la llave de transferencia (PNG/JPG/WebP).
Path params
orgIdstringrequerido
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/transfer-qr' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderId/captura-de-pagoSube la captura del pago de un pedido (PNG/JPG/WebP/PDF) y devuelve su mediaAssetId para confirmarlo.
Path params
orgIdstringrequeridoorderIdstringrequerido
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000/captura-de-pago' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/transfer-qrQuita el QR de la llave de transferencia.
Path params
orgIdstringrequerido
Respuestas
- 200
curl -X DELETE 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/transfer-qr' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/products/:productId/imageSube la imagen del producto (PNG/JPG/WebP, máx 8 MB) y la sirve pública.
Path params
orgIdstringrequeridoproductIdstringrequerido
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/products/00000000-0000-0000-0000-000000000000/image' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/products/:productId/imageQuita la imagen subida del producto.
Path params
orgIdstringrequeridoproductIdstringrequerido
Respuestas
- 200
curl -X DELETE 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/products/00000000-0000-0000-0000-000000000000/image' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/products/:productId/keysCarga llaves al pool del producto (normaliza y omite duplicadas).
Path params
orgIdstringrequeridoproductIdstringrequerido
Body (JSON)
keysstring[]requeridoLlaves a cargar al pool del producto. Se normalizan (trim) y se ignoran duplicadas (dentro del lote y contra las ya existentes).
variantIdstring · uuidVariante destino de las llaves; omitir = pool general del producto.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/products/00000000-0000-0000-0000-000000000000/keys' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"keys": [],"variantId": "00000000-0000-0000-0000-000000000000"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/products/:productId/keysLista las llaves del pool (filtrable por estado).
Path params
orgIdstringrequeridoproductIdstringrequerido
Query params
statusstringAVAILABLERESERVEDDELIVEREDREVOKED
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/products/00000000-0000-0000-0000-000000000000/keys' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/products/:productId/keys/:keyIdBorra una llave libre del pool (no las entregadas).
Path params
orgIdstringrequeridoproductIdstringrequeridokeyIdstringrequerido
Respuestas
- 200
curl -X DELETE 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/products/00000000-0000-0000-0000-000000000000/keys/00000000-0000-0000-0000-000000000000' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/products/:productId/checkoutCrea una orden y dispara el cobro Nequi push (Wompi).
Path params
orgIdstringrequeridoproductIdstringrequerido
Body (JSON)
variantIdstring · uuidVariante a vender (requerida si el producto tiene variantes).
quantitynumberCantidad de licencias a vender (1 a 50). Por defecto 1.
methodstringNEQUIDAVIPLATATRANSFERENCIABINANCETARJETAPAYPALMétodo de cobro. Por defecto NEQUI. TRANSFERENCIA = el cliente transfiere el monto exacto a la llave y el pago se confirma aparte; no pasa por pasarela.
nequiPhonestringTeléfono Nequi del cliente (10 dígitos CO) — requerido para NEQUI.
transferAccountIdstring · uuidA qué cuenta de banco transfiere. Vacío = la llave, si la hay.
userLegalIdstringCédula del cliente — requerida para DAVIPLATA.
userLegalIdTypestringCCCENITPPTIcustomerEmailstring · emailcouponCodestringCódigo de cupón de descuento (opcional).
contactIdstring · uuidphoneNumberIdstring · uuidNúmero emisor de WhatsApp para entregar la licencia.
recipientWaIdstringWhatsApp destino (waId, sin '+'). Por defecto 57 + Nequi.
currencystringCOPUSDMXNMoneda con la que se le cobra a este cliente.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/products/00000000-0000-0000-0000-000000000000/checkout' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"variantId": "00000000-0000-0000-0000-000000000000","quantity": 0,"method": "NEQUI","nequiPhone": "<nequiPhone>","transferAccountId": "00000000-0000-0000-0000-000000000000","userLegalId": "00000000-0000-0000-0000-000000000000","userLegalIdType": "CC","customerEmail": "persona@empresa.com","couponCode": "<couponCode>","contactId": "00000000-0000-0000-0000-000000000000","phoneNumberId": "00000000-0000-0000-0000-000000000000","recipientWaId": "00000000-0000-0000-0000-000000000000","currency": "COP"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/renewal-templateEstado del aviso de renovación: si hay plantilla elegida, si Meta la aprobó, y el borrador sugerido.
Path params
orgIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/renewal-template' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/renewal-templateCrea la plantilla del aviso contra Meta (queda en revisión) y la deja elegida.
Path params
orgIdstringrequerido
Body (JSON)
wabaIdstring · uuidWABA donde crearla. Obligatorio solo si la organización tiene varias.
namestringNombre de la plantilla en Meta (minúsculas y guiones bajos).
languagestringbodyTextstringTexto del cuerpo, si se editó el sugerido. Debe conservar {{1}} {{2}} {{3}}.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/renewal-template' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"wabaId": "00000000-0000-0000-0000-000000000000","name": "<name>","language": "<language>","bodyText": "<bodyText>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "bienvenida_v1",
"language": "es_CO",
"category": "MARKETING",
"components": []
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/expirationsLicencias vendidas que vencen pronto (o ya vencieron), para poder avisar al cliente a tiempo.
Path params
orgIdstringrequerido
Query params
daysstringrequeridoincludeExpiredstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/expirations' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderId/expirationFija o quita a mano la fecha de vencimiento de una venta (para las anteriores a la vigencia).
Path params
orgIdstringrequeridoorderIdstringrequerido
Body (JSON)
expiresAtstring
Respuestas
- 200
curl -X PATCH 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000/expiration' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"expiresAt": "<expiresAt>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/ordersHistorial de ventas (órdenes) con el producto.
Path params
orgIdstringrequerido
Query params
statusstringPENDING_PAYMENTPAIDDELIVEREDFAILEDEXPIREDCANCELLEDREFUNDEDlimitnumberMáximo de filas (el service lo capa a 500).
contactIdstringFiltra las ventas de un contacto (para el panel del inbox: "ventas de este número").
conversationIdstringFiltra las ventas originadas en una conversación.
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderIdEstado de una orden de compra.
Path params
orgIdstringrequeridoorderIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderId/resendReenvía la licencia de una orden ya entregada (WhatsApp + correo).
Path params
orgIdstringrequeridoorderIdstringrequerido
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000/resend' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderId/keys/:keyId/replaceReemplaza una llave entregada que no le funcionó al cliente: revoca la vieja (la conserva enlazada), entrega una nueva y opcionalmente notifica. Emite el webhook license.key_replaced.
Path params
orgIdstringrequeridoorderIdstringrequeridokeyIdstringrequerido
Body (JSON)
sourcestringinventorymanual'inventory' (por defecto): saca la nueva del pool disponible. 'manual': usa la llave pegada en `replacementValue`.
replacementValuestringLlave nueva a mano (obligatoria si source='manual').
reasonstringMotivo del reemplazo (trazabilidad; ej. "no activó").
notifybooleanEnviar al cliente el aviso de cambio de llave. Por defecto true.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000/keys/00000000-0000-0000-0000-000000000000/replace' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"source": "inventory","replacementValue": "<replacementValue>","reason": "<reason>","notify": true}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderId/cancelCancela una orden pendiente de pago (libera las llaves).
Path params
orgIdstringrequeridoorderIdstringrequerido
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000/cancel' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/inbox/testPrueba la conexión a la bandeja y muestra lo que lee.
Path params
orgIdstringrequerido
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/inbox/test' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/buzonesCorreos donde llegan los avisos de pago, con las llaves que avisan a cada uno y su estado de lectura.
Path params
orgIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/buzones' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/buzonesAgrega un correo de avisos de pago.
Path params
orgIdstringrequerido
Body (JSON)
hoststringServidor IMAP (solo el dominio).
portnumberuserstringUsuario: la dirección del correo.
passwordstringContraseña. Al editar, vacía = se conserva la guardada.
tlsbooleanprocessedFolderstringCarpeta a la que mover los avisos ya registrados.
deleteAfterReadbooleanBorrar los avisos ya registrados.
llaveIdsstring[]Llaves que avisan a este correo (reemplaza la lista). Una llave avisa a un solo correo.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/buzones' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"host": "<host>","port": 0,"user": "<user>","password": "<password>","tls": true,"processedFolder": "<processedFolder>","deleteAfterRead": true,"llaveIds": []}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/buzones/:buzonIdEdita un correo de avisos o sus llaves.
Path params
orgIdstringrequeridobuzonIdstringrequerido
Body (JSON)
hoststringServidor IMAP (solo el dominio).
portnumberuserstringUsuario: la dirección del correo.
passwordstringContraseña. Al editar, vacía = se conserva la guardada.
tlsbooleanprocessedFolderstringCarpeta a la que mover los avisos ya registrados.
deleteAfterReadbooleanBorrar los avisos ya registrados.
llaveIdsstring[]Llaves que avisan a este correo (reemplaza la lista). Una llave avisa a un solo correo.
Respuestas
- 200
curl -X PATCH 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/buzones/00000000-0000-0000-0000-000000000000' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"host": "<host>","port": 0,"user": "<user>","password": "<password>","tls": true,"processedFolder": "<processedFolder>","deleteAfterRead": true,"llaveIds": []}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/buzones/:buzonIdBorra un correo de avisos. Sus llaves dejan de confirmarse solas.
Path params
orgIdstringrequeridobuzonIdstringrequerido
Respuestas
- 200
curl -X DELETE 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/buzones/00000000-0000-0000-0000-000000000000' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/buzones/:buzonId/probarPrueba la conexión a un correo de avisos y muestra lo último que lee, sin guardar nada.
Path params
orgIdstringrequeridobuzonIdstringrequerido
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/buzones/00000000-0000-0000-0000-000000000000/probar' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/inbox/paymentsPagos leídos del correo, con los pedidos que les encajan.
Path params
orgIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/inbox/payments' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/inbox/payments/:pagoId/matchLiga un pago con un pedido y entrega la licencia.
Path params
orgIdstringrequeridopagoIdstringrequerido
Body (JSON)
orderIdstring · uuidrequerido
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/inbox/payments/00000000-0000-0000-0000-000000000000/match' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"orderId": "00000000-0000-0000-0000-000000000000"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/inbox/payments/:pagoId/match-cobroLiga un pago con un cobro agrupado y salda todos sus pedidos.
Path params
orgIdstringrequeridopagoIdstringrequerido
Body (JSON)
cobroIdstring · uuidrequerido
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/inbox/payments/00000000-0000-0000-0000-000000000000/match-cobro' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"cobroId": "00000000-0000-0000-0000-000000000000"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/cobros-agrupados/pendientesPedidos que un cliente debe (fiados y esperando pago) y su cobro agrupado abierto, si tiene.
Path params
orgIdstringrequerido
Query params
contactIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/cobros-agrupados/pendientes' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/cobros-agrupadosCobros agrupados de la organización o de un cliente.
Path params
orgIdstringrequerido
Query params
contactIdstringrequeridostatusstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/cobros-agrupados' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/cobros-agrupadosArma un cobro agrupado (varios pedidos, un solo pago) y se lo envía al cliente por WhatsApp.
Path params
orgIdstringrequerido
Body (JSON)
contactIdstring · uuidrequeridoContacto al que se le cobra.
orderIdsstring[]Pedidos a incluir. Vacío = todos los que el cliente debe (fiados y esperando pago).
conversationIdstring · uuidChat por el que se envía el cobro.
mediostringA dónde paga: `llave:<id>` o `cuenta:<id>`. Vacío = la llave de la marca del número.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/cobros-agrupados' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"contactId": "00000000-0000-0000-0000-000000000000","orderIds": [],"conversationId": "00000000-0000-0000-0000-000000000000","medio": "<medio>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/cobros-libresCobro libre: un concepto y un monto, sin producto, a la llave de la marca del número. Se confirma solo con el aviso del banco.
Path params
orgIdstringrequerido
Body (JSON)
contactIdstring · uuidrequeridoContacto al que se le cobra.
conversationIdstring · uuidChat por el que se envía el cobro.
conceptostringQué se cobra («Hosting 12 meses midominio.com»). Con factura de Mosend puede ir vacío.
montoCentsnumberMonto en centavos de peso colombiano. Con factura de Mosend, vacío = su saldo.
invoiceIdstring · uuidFactura de la plataforma Mosend que abona (solo la organización que opera Mosend).
perfilDeCobroIdstring · uuidMarca que cobra, por encima de la del número (en un número que atiende varias marcas). Vacío = la del número.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/cobros-libres' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"contactId": "00000000-0000-0000-0000-000000000000","conversationId": "00000000-0000-0000-0000-000000000000","concepto": "<concepto>","montoCents": 0,"invoiceId": "00000000-0000-0000-0000-000000000000","perfilDeCobroId": "00000000-0000-0000-0000-000000000000"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/cobros-libres/facturas-mosendFacturas de Mosend que el cliente del chat puede pagar por llave (solo la organización que opera Mosend, con la identidad del cliente verificada).
Path params
orgIdstringrequerido
Query params
contactIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/cobros-libres/facturas-mosend' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/perfiles-de-cobroMarcas que cobran en la organización, con sus números, su llave y sus medios.
Path params
orgIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/perfiles-de-cobro' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/perfiles-de-cobroCrea una marca. La primera crea también la principal, que se queda con la configuración de antes.
Path params
orgIdstringrequerido
Body (JSON)
nombrestringNombre de la marca («Moshipp»).
llaveIdstring · uuidLlave con la que cobra la marca. null = no cobra por llave. La marca principal cobra con la llave activa de la organización.
alPagarstringTAREAFACTURA_MOSENDQué pasa cuando se paga un cobro libre: TAREA (tarea para el equipo) o FACTURA_MOSEND (abona a la factura de la plataforma; solo la organización que opera Mosend).
aceptaWompibooleanSi la marca ofrece la pasarela (Wompi).
aceptaBinancebooleanSi la marca ofrece Binance.
aceptaPaypalbooleanSi la marca cobra en dólares por PayPal (requiere PayPal conectado en Licencias → Cobros).
phoneNumberIdsstring[]Números que atiende la marca (reemplaza la lista). Los que se quitan vuelven a la principal.
ordenDeMediosstring[]Orden en que el asistente ofrece los medios cuando el cliente no pide uno: `llave`, `cuenta:<id>`, `wompi`, `tarjeta`, `paypal`, `binance`. Lo que falte va al final.
wompiEnvstringtestprodwompiPublicKeystringWompi propio: llave pública.
wompiPrivateKeystringWompi propio: llave privada.
wompiEventsSecretstringWompi propio: secreto de eventos.
wompiIntegritySecretstringWompi propio: secreto de integridad.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/perfiles-de-cobro' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"nombre": "<nombre>","llaveId": "00000000-0000-0000-0000-000000000000","alPagar": "TAREA","aceptaWompi": true,"aceptaBinance": true,"aceptaPaypal": true,"phoneNumberIds": [],"ordenDeMedios": [],"wompiEnv": "test","wompiPublicKey": "<wompiPublicKey>","wompiPrivateKey": "<wompiPrivateKey>","wompiEventsSecret": "<wompiEventsSecret>","wompiIntegritySecret": "<wompiIntegritySecret>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/perfiles-de-cobro/:perfilIdEdita una marca: nombre, llave, números, medios.
Path params
orgIdstringrequeridoperfilIdstringrequerido
Body (JSON)
nombrestringNombre de la marca («Moshipp»).
llaveIdstring · uuidLlave con la que cobra la marca. null = no cobra por llave. La marca principal cobra con la llave activa de la organización.
alPagarstringTAREAFACTURA_MOSENDQué pasa cuando se paga un cobro libre: TAREA (tarea para el equipo) o FACTURA_MOSEND (abona a la factura de la plataforma; solo la organización que opera Mosend).
aceptaWompibooleanSi la marca ofrece la pasarela (Wompi).
aceptaBinancebooleanSi la marca ofrece Binance.
aceptaPaypalbooleanSi la marca cobra en dólares por PayPal (requiere PayPal conectado en Licencias → Cobros).
phoneNumberIdsstring[]Números que atiende la marca (reemplaza la lista). Los que se quitan vuelven a la principal.
ordenDeMediosstring[]Orden en que el asistente ofrece los medios cuando el cliente no pide uno: `llave`, `cuenta:<id>`, `wompi`, `tarjeta`, `paypal`, `binance`. Lo que falte va al final.
wompiEnvstringtestprodwompiPublicKeystringWompi propio: llave pública.
wompiPrivateKeystringWompi propio: llave privada.
wompiEventsSecretstringWompi propio: secreto de eventos.
wompiIntegritySecretstringWompi propio: secreto de integridad.
Respuestas
- 200
curl -X PATCH 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/perfiles-de-cobro/00000000-0000-0000-0000-000000000000' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"nombre": "<nombre>","llaveId": "00000000-0000-0000-0000-000000000000","alPagar": "TAREA","aceptaWompi": true,"aceptaBinance": true,"aceptaPaypal": true,"phoneNumberIds": [],"ordenDeMedios": [],"wompiEnv": "test","wompiPublicKey": "<wompiPublicKey>","wompiPrivateKey": "<wompiPrivateKey>","wompiEventsSecret": "<wompiEventsSecret>","wompiIntegritySecret": "<wompiIntegritySecret>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/perfiles-de-cobro/:perfilIdElimina una marca. Sus números y cuentas pasan a la principal.
Path params
orgIdstringrequeridoperfilIdstringrequerido
Respuestas
- 200
curl -X DELETE 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/perfiles-de-cobro/00000000-0000-0000-0000-000000000000' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/perfiles-de-cobro/resumenIngresos por marca en un periodo: cobrado, pedidos, cobros libres y pagos sin pedido.
Path params
orgIdstringrequerido
Query params
diasnumberdesdestringhastastring
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/perfiles-de-cobro/resumen' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/cobros-agrupados/:cobroId/reenviarVuelve a enviar el cobro al cliente.
Path params
orgIdstringrequeridocobroIdstringrequerido
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/cobros-agrupados/00000000-0000-0000-0000-000000000000/reenviar' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/cobros-agrupados/:cobroId/anularAnula el cobro: sus pedidos quedan otra vez por cobrar.
Path params
orgIdstringrequeridocobroIdstringrequerido
Body (JSON)
motivostring
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/cobros-agrupados/00000000-0000-0000-0000-000000000000/anular' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"motivo": "<motivo>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/cobros-agrupados/:cobroId/marcar-pagadoDa el cobro por pagado (llegó por otra vía) y salda sus pedidos.
Path params
orgIdstringrequeridocobroIdstringrequerido
Body (JSON)
orderIdsstring[]Pedidos que pagó. Vacío = todos. Si son algunos, se saldan esos, el cobro se anula y los demás quedan por cobrar.
mediostringPor dónde entró el dinero: `llave:<id>` o `cuenta:<id>`. Vacío = la llave del cobro.
avisarbooleanConfirmarle al cliente «Recibimos tu pago». Por defecto sí.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/cobros-agrupados/00000000-0000-0000-0000-000000000000/marcar-pagado' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"orderIds": [],"medio": "<medio>","avisar": true}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/cobros-agrupados/pago-registradoRegistra que el cliente ya pagó varios pedidos juntos, sin enviarle ningún cobro. Quedan saldados en un cobro PAGADO.
Path params
orgIdstringrequerido
Body (JSON)
orderIdsstring[]requeridoPedidos que pagó (al menos dos).
mediostringPor dónde pagó: `llave:<id>` o `cuenta:<id>`. Vacío = la llave de la marca.
avisarbooleanConfirmarle al cliente «Recibimos tu pago». Por defecto no.
contactIdstring · uuidrequeridoconversationIdstring · uuid
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/cobros-agrupados/pago-registrado' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"orderIds": [],"medio": "<medio>","avisar": true,"contactId": "00000000-0000-0000-0000-000000000000","conversationId": "00000000-0000-0000-0000-000000000000"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/inbox/payments/:pagoId/reassign-optionsPedidos a los que se puede mover un pago ya conciliado (mismo valor, en su ventana, sin pago propio).
Path params
orgIdstringrequeridopagoIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/inbox/payments/00000000-0000-0000-0000-000000000000/reassign-options' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/inbox/payments/:pagoId/reassignMueve un pago ya conciliado a otro pedido. El pedido que lo pierde queda con el cobro pendiente.
Path params
orgIdstringrequeridopagoIdstringrequerido
Body (JSON)
orderIdstring · uuidrequeridoPedido que se queda con el pago.
notastringPor qué se movió; queda en el pago y en la auditoría.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/inbox/payments/00000000-0000-0000-0000-000000000000/reassign' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"orderId": "00000000-0000-0000-0000-000000000000","nota": "<nota>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/inbox/payments/:pagoId/abonar-a-saldoAbona un pago recibido sin pedido al saldo a favor de un cliente (permiso saldo:gestionar).
Path params
orgIdstringrequeridopagoIdstringrequerido
Body (JSON)
contactIdstring · uuidrequeridoperfilDeCobroIdstring · uuidMarca del bolsillo si el pago no dice de cuál es.
notastring
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/inbox/payments/00000000-0000-0000-0000-000000000000/abonar-a-saldo' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"contactId": "00000000-0000-0000-0000-000000000000","perfilDeCobroId": "00000000-0000-0000-0000-000000000000","nota": "<nota>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderId/pagar-con-saldoPaga con el saldo a favor del cliente un pedido pendiente (sin cobro por pasarela en curso) o un fiado.
Path params
orgIdstringrequeridoorderIdstringrequerido
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000/pagar-con-saldo' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/saldo/recargasLe manda al cliente el cobro de una recarga de saldo a favor (a la llave, en COP). Al pagarse, entra a su saldo.
Path params
orgIdstringrequerido
Body (JSON)
contactIdstring · uuidrequeridomontoCentsnumberrequeridoEn centavos de peso (las recargas van a la llave, en COP).
conversationIdstring · uuidperfilDeCobroIdstring · uuid
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/saldo/recargas' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"contactId": "00000000-0000-0000-0000-000000000000","montoCents": 0,"conversationId": "00000000-0000-0000-0000-000000000000","perfilDeCobroId": "00000000-0000-0000-0000-000000000000"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/inbox/payments/:pagoId/ignoreDescarta un pago (no era de una venta).
Path params
orgIdstringrequeridopagoIdstringrequerido
Body (JSON)
notastring
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/inbox/payments/00000000-0000-0000-0000-000000000000/ignore' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"nota": "<nota>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderId/cambiar-medioCambia el medio de pago de un pedido pendiente, venga del medio que venga: a otra cuenta o la llave, a tarjeta, a Nequi (primero la cuenta Nequi de transferencia; la solicitud a la app es el respaldo) o a cripto. La transferencia y la tarjeta conservan el pedido; la solicitud a la app y la cripto crean uno nuevo con el mismo precio. Opcionalmente le manda al cliente los datos nuevos.
Path params
orgIdstringrequeridoorderIdstringrequerido
Body (JSON)
mediostringrequeridollave | transferencia | tarjeta | nequi | nequi_app | daviplata | binance | cuenta:<id>
nequiPhonestringNúmero de la app de Nequi (10 dígitos) para `nequi_app`.
avisarClientebooleanMandarle al cliente los datos nuevos por el chat.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000/cambiar-medio' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"medio": "<medio>","nequiPhone": "<nequiPhone>","avisarCliente": true}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderId/confirm-transferConfirma la transferencia recibida y entrega la licencia.
Path params
orgIdstringrequeridoorderIdstringrequerido
Body (JSON)
mediostringPor dónde entró el dinero: `llave:<id>` o `cuenta:<id>`. El pedido pasa a ese medio; sin el dato se queda con el que tenía.
comprobanteMediaIdstring · uuidCaptura del pago (id de un archivo subido a la organización). Queda como comprobante aprobado.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000/confirm-transfer' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"medio": "<medio>","comprobanteMediaId": "00000000-0000-0000-0000-000000000000"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderId/paypal/verificarVerifica en PayPal el ID de transacción del cliente y, si cuadra, confirma el pedido y entrega la licencia.
Path params
orgIdstringrequeridoorderIdstringrequerido
Body (JSON)
transaccionstringrequerido
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000/paypal/verificar' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"transaccion": "<transaccion>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderId/completar-entregaMarca ENTREGADA una orden pagada (entrega asistida): el asesor ya la completó en la conversación. Con `llaves` registra las que entregó a mano (una por línea de la venta) y las envía con la plantilla e instrucciones del producto; sin ellas basta el `mensaje` libre. `notificar: false` la registra sin escribirle al cliente.
Path params
orgIdstringrequeridoorderIdstringrequerido
Body (JSON)
llavesstring[]Llaves que el asesor entrega a mano (una por elemento o por línea). Se registran en la venta como licencias ENTREGADAS y se envían con la plantilla de entrega e instrucciones. Sin `llaves`, se marca entregada con el `mensaje` libre (comportamiento histórico).
mensajestringNota adicional para el cliente, después de la entrega.
notificarbooleanfalse = registrar la llave sin escribirle al cliente. Default true.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000/completar-entrega' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"llaves": [],"mensaje": "<mensaje>","notificar": true}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderId/items/:itemId/entregarEntrega UN producto de un pedido de varios (entrega parcial): con `llaves` (una por licencia de esa línea) las registra y se las envía; sin ellas la da por entregada. El pedido se completa cuando no queda ninguno pendiente.
Path params
orgIdstringrequeridoorderIdstringrequeridoitemIdstringrequerido
Body (JSON)
llavesstring[]Llaves que el asesor entrega a mano (una por elemento o por línea). Se registran en la venta como licencias ENTREGADAS y se envían con la plantilla de entrega e instrucciones. Sin `llaves`, se marca entregada con el `mensaje` libre (comportamiento histórico).
mensajestringNota adicional para el cliente, después de la entrega.
notificarbooleanfalse = registrar la llave sin escribirle al cliente. Default true.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000/items/00000000-0000-0000-0000-000000000000/entregar' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"llaves": [],"mensaje": "<mensaje>","notificar": true}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderId/activacionesConfirma que se activó el servicio en el correo de una o varias licencias (productos de activación). Cada licencia es independiente; el correo queda como su licencia y al cliente se le avisa con la fecha de vencimiento.
Path params
orgIdstringrequeridoorderIdstringrequerido
Body (JSON)
lineanumberÍndice de la línea en los datos del pedido; sin él, TODO el pedido.
posicionesnumber[]Las licencias (posiciones) a confirmar; vacío = todas las pendientes.
notastringNota para el cliente (ej. cómo ingresar).
notificarboolean
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000/activaciones' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"linea": 0,"posiciones": [],"nota": "<nota>","notificar": true}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderId/items/:itemId/refundReembolsa UN producto de un pedido de varios y conserva el resto: revoca sus llaves; destino DINERO o SALDO. Si es el último, se reembolsa el pedido. Permiso license-delivery:write o saldo:gestionar.
Path params
orgIdstringrequeridoorderIdstringrequeridoitemIdstringrequerido
Body (JSON)
reasonstringMotivo del reembolso (trazabilidad).
destinostringDINEROSALDODINERO (por defecto): se le devuelve la plata por fuera. SALDO: queda a favor del cliente en Mosend para su próxima compra.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000/items/00000000-0000-0000-0000-000000000000/refund' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"reason": "<reason>","destino": "DINERO"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderId/refundRegistra el reembolso de una orden pagada y revoca sus llaves. destino DINERO: la plata se devuelve por fuera; SALDO: queda a favor del cliente. Permiso license-delivery:write o saldo:gestionar.
Path params
orgIdstringrequeridoorderIdstringrequerido
Body (JSON)
reasonstringMotivo del reembolso (trazabilidad).
destinostringDINEROSALDODINERO (por defecto): se le devuelve la plata por fuera. SALDO: queda a favor del cliente en Mosend para su próxima compra.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000/refund' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"reason": "<reason>","destino": "DINERO"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/products/:productId/keys/:keyId/revokeRevoca una llave ya entregada (fraude/contracargo).
Path params
orgIdstringrequeridoproductIdstringrequeridokeyIdstringrequerido
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/products/00000000-0000-0000-0000-000000000000/keys/00000000-0000-0000-0000-000000000000/revoke' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/conversations/:conversationId/sellVende/entrega una licencia al contacto de la conversación (asesor).
Path params
orgIdstringrequeridoconversationIdstringrequerido
Body (JSON)
productIdstring · uuidrequeridovariantIdstring · uuidVariante a vender (requerida si el producto tiene variantes).
quantitynumberCantidad de licencias a vender (1 a 50). Por defecto 1.
methodstringNEQUIDAVIPLATATRANSFERENCIABINANCETARJETAPAYPALSALDOnequiPhonestringtransferAccountIdstring · uuidA qué cuenta de banco transfiere. Vacío = la llave, si la hay.
userLegalIdstringuserLegalIdTypestringCCCENITPPTIcustomerEmailstring · emailcouponCodestringdatoAdicionalstringDato adicional que pide el producto (ej. el correo de la cuenta).
datosAdicionalesstring[]El dato del producto UNO POR LICENCIA, en orden (con cantidad 2, dos correos). Manda sobre `datoAdicional`.
datoAdicionalDespuesboolean«Lo pido después»: deja pendiente el dato obligatorio que falte.
forzarCorreobooleanAceptar un correo que no pasa la regla del producto (de empresa cuando pide correo personal, o con pinta de error como gmial.com). Queda registrado en el pedido con quién lo aceptó.
entregarYabooleanSolo Bre-B (TRANSFERENCIA): entrega la licencia YA (fiado) y deja el cobro pendiente; el conciliador lo marca pagado cuando entra la transferencia.
enviarCobrobooleanFiado: ¿enviarle ya cómo pagar (llave o cuenta y monto)? Por defecto sí. Con `false` solo recibe la licencia y se le cobra después.
notifyboolean¿Enviar al cliente el mensaje "gracias por tu compra"? Por defecto sí.
unitPriceCentsnumberPrecio unitario (centavos) fijado a mano por el asesor: reemplaza el de lista/etiqueta y es lo que se cobra. Omitir = precio de lista.
currencystringCOPUSDMXNMoneda con la que se le cobra a este cliente. Omitir = la que toque por el contacto o por la organización.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/conversations/00000000-0000-0000-0000-000000000000/sell' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"productId": "00000000-0000-0000-0000-000000000000","variantId": "00000000-0000-0000-0000-000000000000","quantity": 0,"method": "NEQUI","nequiPhone": "<nequiPhone>","transferAccountId": "00000000-0000-0000-0000-000000000000","userLegalId": "00000000-0000-0000-0000-000000000000","userLegalIdType": "CC","customerEmail": "persona@empresa.com","couponCode": "<couponCode>","datoAdicional": "<datoAdicional>","datosAdicionales": [],"datoAdicionalDespues": true,"forzarCorreo": true,"entregarYa": true,"enviarCobro": true,"notify": true,"unitPriceCents": 0,"currency": "COP"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/conversations/:conversationId/sell-cartVende un CARRITO (varios productos, una sola orden) al contacto (asesor). Solo Nequi o Bre-B.
Path params
orgIdstringrequeridoconversationIdstringrequerido
Body (JSON)
itemsCartItemDto[]requeridodatoAdicionalDespuesboolean«Lo pido después»: deja pendiente el dato obligatorio que falte.
forzarCorreobooleanAceptar un correo que no pasa la regla del producto (de empresa cuando pide correo personal, o con pinta de error como gmial.com). Queda registrado en el pedido con quién lo aceptó.
methodstringNEQUITRANSFERENCIATARJETAPAYPALSALDOSALDO = con el saldo a favor del cliente. Antes el DTO solo dejaba NEQUI y TRANSFERENCIA aunque el servicio y el panel cobran también con tarjeta y PayPal.
nequiPhonestringtransferAccountIdstring · uuidA qué cuenta de banco transfiere. Vacío = la llave, si la hay.
customerEmailstring · emailentregarYabooleanSolo Bre-B: entrega ya (fiado) y concilia el cobro después.
enviarCobrobooleanFiado: ¿enviarle ya cómo pagar? Por defecto sí.
notifyboolean¿Enviar el mensaje "gracias por tu compra"? Por defecto sí.
currencystringCOPUSDMXNMoneda con la que se le cobra a este cliente.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/conversations/00000000-0000-0000-0000-000000000000/sell-cart' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"items": [],"datoAdicionalDespues": true,"forzarCorreo": true,"method": "NEQUI","nequiPhone": "<nequiPhone>","transferAccountId": "00000000-0000-0000-0000-000000000000","customerEmail": "persona@empresa.com","entregarYa": true,"enviarCobro": true,"notify": true,"currency": "COP"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/conversations/:conversationId/dispatchEntrega una licencia SIN cobro al contacto de la conversación (asesor).
Path params
orgIdstringrequeridoconversationIdstringrequerido
Body (JSON)
productIdstring · uuidrequeridovariantIdstring · uuidVariante a entregar (si el producto tiene variantes).
quantitynumberCantidad de licencias a entregar (1 a 50). Por defecto 1.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/conversations/00000000-0000-0000-0000-000000000000/dispatch' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"productId": "00000000-0000-0000-0000-000000000000","variantId": "00000000-0000-0000-0000-000000000000","quantity": 0}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/conversations/:conversationId/venta-manualRegistra una venta MANUAL con pago y entrega desacoplados (fiado / por cobrar).
Path params
orgIdstringrequeridoconversationIdstringrequerido
Body (JSON)
productIdstring · uuidrequeridovariantIdstring · uuidquantitynumberentregarbooleanrequerido¿Entregar ya la licencia?
pagadobooleanrequerido¿El cliente ya pagó? (false = fiado / por cobrar).
unitPriceCentsnumberPrecio unitario a facturar en centavos (override del asesor: descuento u otro acuerdo). Si se omite, se usa el de la lista.
datoAdicionalstringDato adicional que pide el producto (ej. el correo de la cuenta).
datosAdicionalesstring[]El dato del producto UNO POR LICENCIA, en orden (con cantidad 2, dos correos). Manda sobre `datoAdicional`.
datoAdicionalDespuesboolean«Lo pido después»: deja pendiente el dato obligatorio que falte.
forzarCorreobooleanAceptar un correo que no pasa la regla del producto (de empresa cuando pide correo personal, o con pinta de error como gmial.com). Queda registrado en el pedido con quién lo aceptó.
notifyboolean¿Enviar al cliente el mensaje "gracias por tu compra"? Por defecto sí.
currencystringCOPUSDMXNMoneda con la que se le cobra a este cliente.
mediostringYa pagó: por dónde entró el dinero. `llave` (la de la marca del número), `llave:<id>` o `cuenta:<id>`.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/conversations/00000000-0000-0000-0000-000000000000/venta-manual' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"productId": "00000000-0000-0000-0000-000000000000","variantId": "00000000-0000-0000-0000-000000000000","quantity": 0,"entregar": true,"pagado": true,"unitPriceCents": 0,"datoAdicional": "<datoAdicional>","datosAdicionales": [],"datoAdicionalDespues": true,"forzarCorreo": true,"notify": true,"currency": "COP","medio": "<medio>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/conversations/:conversationId/venta-manual-carritoRegistra una venta MANUAL de un CARRITO (varios productos) con pago y entrega desacoplados (fiado / por cobrar).
Path params
orgIdstringrequeridoconversationIdstringrequerido
Body (JSON)
itemsManualCartItemDto[]requeridodatoAdicionalDespuesboolean«Lo pido después»: deja pendiente el dato obligatorio que falte.
forzarCorreobooleanAceptar un correo que no pasa la regla del producto (de empresa cuando pide correo personal, o con pinta de error como gmial.com). Queda registrado en el pedido con quién lo aceptó.
entregarbooleanrequerido¿Entregar ya las licencias?
pagadobooleanrequerido¿El cliente ya pagó? (false = fiado / por cobrar).
notifyboolean¿Enviar el mensaje "gracias por tu compra"? Por defecto sí.
currencystringCOPUSDMXNMoneda con la que se le cobra a este cliente.
mediostringYa pagó: por dónde entró el dinero. `llave` (la de la marca del número), `llave:<id>` o `cuenta:<id>`.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/conversations/00000000-0000-0000-0000-000000000000/venta-manual-carrito' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"items": [],"datoAdicionalDespues": true,"forzarCorreo": true,"entregar": true,"pagado": true,"notify": true,"currency": "COP","medio": "<medio>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderId/dato-adicionalCompleta el dato adicional pendiente de un pedido (ej. el correo de la cuenta) cuando el cliente lo envía.
Path params
orgIdstringrequeridoorderIdstringrequerido
Body (JSON)
valorstringcambiosCambioDeDatoDto[]forzarCorreobooleanAceptar un correo que no pasa la regla del producto (de empresa cuando pide correo personal, o con pinta de error como gmial.com). Queda registrado en el pedido con quién lo aceptó.
Respuestas
- 200
curl -X PATCH 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000/dato-adicional' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"valor": "<valor>","cambios": [],"forzarCorreo": true}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderId/marcar-pagadaMarca una venta manual como PAGADA (cierra el fiado).
Path params
orgIdstringrequeridoorderIdstringrequerido
Body (JSON)
mediostringPor dónde entró el dinero: `llave:<id>` o `cuenta:<id>`. El pedido pasa a ese medio; sin el dato se queda con el que tenía.
comprobanteMediaIdstring · uuidCaptura del pago (id de un archivo subido a la organización). Queda como comprobante aprobado.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000/marcar-pagada' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"medio": "<medio>","comprobanteMediaId": "00000000-0000-0000-0000-000000000000"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderId/marcar-entregadaMarca una venta manual como ENTREGADA (asigna/envía la licencia ahora).
Path params
orgIdstringrequeridoorderIdstringrequerido
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000/marcar-entregada' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/products/:productId/variantsCrea una variante del producto (precio propio).
Path params
orgIdstringrequeridoproductIdstringrequerido
Body (JSON)
namestringrequeridopriceCentsnumberrequeridodurationDaysnumberDías que dura lo vendido, contados desde la ENTREGA. Omitir o `null` = no vence (licencia perpetua), que es como se ha comportado siempre.
sortOrdernumber
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/products/00000000-0000-0000-0000-000000000000/variants' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"name": "<name>","priceCents": 0,"durationDays": 0,"sortOrder": 0}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/products/:productId/variants/:variantIdActualiza una variante.
Path params
orgIdstringrequeridoproductIdstringrequeridovariantIdstringrequerido
Body (JSON)
namestringpriceCentsnumberdurationDaysnumberDías que dura lo vendido, contados desde la ENTREGA. Omitir o `null` = no vence (licencia perpetua), que es como se ha comportado siempre.
activebooleansortOrdernumber
Respuestas
- 200
curl -X PATCH 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/products/00000000-0000-0000-0000-000000000000/variants/00000000-0000-0000-0000-000000000000' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"name": "<name>","priceCents": 0,"durationDays": 0,"active": true,"sortOrder": 0}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/products/:productId/variants/:variantIdElimina una variante sin ventas (sus llaves libres vuelven al pool general).
Path params
orgIdstringrequeridoproductIdstringrequeridovariantIdstringrequerido
Respuestas
- 200
curl -X DELETE 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/products/00000000-0000-0000-0000-000000000000/variants/00000000-0000-0000-0000-000000000000' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderId/otpValida el OTP de una orden Daviplata.
Path params
orgIdstringrequeridoorderIdstringrequerido
Body (JSON)
codestringrequeridoCódigo OTP que le llegó al cliente por SMS (Daviplata).
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000/otp' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"code": "<code>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderId/otp/resendReenvía el OTP de una orden Daviplata.
Path params
orgIdstringrequeridoorderIdstringrequerido
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000/otp/resend' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/payments-inboxTodo lo que dice que entró plata: avisos del banco y comprobantes del chat, en una lista.
Path params
orgIdstringrequerido
Query params
origenstringrequeridoestadostringrequeridodesdestringrequeridohastastringrequeridoqstringrequeridolimitstringrequeridooffsetstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/payments-inbox' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/payments-inbox/discardDescarta varios de una vez (ignora avisos, rechaza comprobantes). Aprobar sigue siendo de a uno.
Path params
orgIdstringrequerido
Body (JSON)
itemsobject[]requeridoQué descartar. Hasta 100 por llamada.
reasonstringrequeridoPor qué. En los comprobantes lo lee el cliente.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/payments-inbox/discard' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"items": [],"reason": "<reason>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/transfer-accountsCuentas a las que el cliente puede transferir (bancos, llaves).
Path params
orgIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/transfer-accounts' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/transfer-accountsAgrega una cuenta de transferencia.
Path params
orgIdstringrequerido
Body (JSON)
labelstringrequeridoCómo la ve el cliente en la lista.
bankNamestringBanco o entidad.
accountKindstringAHORROSCORRIENTENEQUILLAVEOTROTipo de cuenta.
accountNumberstringrequeridoNúmero de cuenta, llave Bre-B o celular de Nequi.
holderstringTitular de la cuenta.
holderDocstringDocumento del titular.
instructionsstringTexto que acompaña a esta cuenta.
qrMediaIdstring · uuidMediaAsset del QR de esta cuenta.
senderDomainstringDominio que firma los correos de aviso de este banco, para conciliar (ej. notificacionesbancolombia.com).
currencystringEn qué moneda recibe esta cuenta (ISO 4217). Vacío = cualquiera. Solo se le ofrece a quien paga en esa moneda.
enabledbooleanSi se le ofrece al cliente.
perfilIdsstring[]Marcas (perfiles de cobro) que ofrecen esta cuenta. Vacío = todas: cuenta compartida. Sin enviar al crear = la marca principal.
llaveAvisoIdstring · uuidLlave cuyos avisos de pago confirman también los pagos a esta cuenta (la cuenta de banco que está detrás de la llave). null = se confirma con comprobante.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/transfer-accounts' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"label": "<label>","bankName": "<bankName>","accountKind": "AHORROS","accountNumber": "<accountNumber>","holder": "<holder>","holderDoc": "<holderDoc>","instructions": "<instructions>","qrMediaId": "00000000-0000-0000-0000-000000000000","senderDomain": "<senderDomain>","currency": "<currency>","enabled": true,"perfilIds": [],"llaveAvisoId": "00000000-0000-0000-0000-000000000000"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/transfer-accounts/:accountIdEdita una cuenta de transferencia.
Path params
orgIdstringrequeridoaccountIdstringrequerido
Body (JSON)
labelstringCómo la ve el cliente en la lista.
bankNamestringBanco o entidad.
accountKindstringAHORROSCORRIENTENEQUILLAVEOTROTipo de cuenta.
accountNumberstringNúmero de cuenta, llave Bre-B o celular de Nequi.
holderstringTitular de la cuenta.
holderDocstringDocumento del titular.
instructionsstringTexto que acompaña a esta cuenta.
qrMediaIdstring · uuidMediaAsset del QR de esta cuenta.
senderDomainstringDominio que firma los correos de aviso de este banco, para conciliar (ej. notificacionesbancolombia.com).
currencystringEn qué moneda recibe esta cuenta (ISO 4217). Vacío = cualquiera. Solo se le ofrece a quien paga en esa moneda.
enabledbooleanSi se le ofrece al cliente.
perfilIdsstring[]Marcas (perfiles de cobro) que ofrecen esta cuenta. Vacío = todas: cuenta compartida. Sin enviar al crear = la marca principal.
llaveAvisoIdstring · uuidLlave cuyos avisos de pago confirman también los pagos a esta cuenta (la cuenta de banco que está detrás de la llave). null = se confirma con comprobante.
Respuestas
- 200
curl -X PATCH 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/transfer-accounts/00000000-0000-0000-0000-000000000000' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"label": "<label>","bankName": "<bankName>","accountKind": "AHORROS","accountNumber": "<accountNumber>","holder": "<holder>","holderDoc": "<holderDoc>","instructions": "<instructions>","qrMediaId": "00000000-0000-0000-0000-000000000000","senderDomain": "<senderDomain>","currency": "<currency>","enabled": true,"perfilIds": [],"llaveAvisoId": "00000000-0000-0000-0000-000000000000"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/transfer-accounts/:accountIdElimina una cuenta de transferencia.
Path params
orgIdstringrequeridoaccountIdstringrequerido
Respuestas
- 200
curl -X DELETE 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/transfer-accounts/00000000-0000-0000-0000-000000000000' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/transfer-accounts/reorderReordena las cuentas: es el orden en que las ve el cliente.
Path params
orgIdstringrequerido
Body (JSON)
idsstring[]requeridoTodas las cuentas de la organización, en el orden deseado.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/transfer-accounts/reorder' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"ids": []}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/transfer-keysLlaves de cobro (Bre-B / Nequi / Bancolombia). Una sola activa: la de las ventas nuevas.
Path params
orgIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/transfer-keys' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/transfer-keysAgrega una llave de cobro. La primera nace activa.
Path params
orgIdstringrequerido
Body (JSON)
labelstringrequeridoCómo se ve en el panel.
entitystringNEQUIBANCOLOMBIAEntidad de la llave: decide cómo se lee su aviso de pago.
keystringrequeridoLa llave que se le da al cliente (@usuario, celular, correo).
holderstringTitular que ve el cliente.
instructionsstringTexto que acompaña a la llave.
senderDomainstringDominio que firma los avisos de pago de esta llave. Vacío = el de la entidad.
forwarderAddressstringBuzón de confianza que reenvía los avisos, si el intermediario rompe la firma del banco.
autoApprovebooleanCon la bandeja en «aprobar solo», si los pagos de esta llave se aprueban solos. Una llave nueva empieza en false (solo sugerir).
buzonIdstring · uuidCorreo (buzón de avisos) al que llegan los avisos de pago de esta llave. null = ninguno: sus pagos no se confirman solos.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/transfer-keys' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"label": "<label>","entity": "NEQUI","key": "<key>","holder": "<holder>","instructions": "<instructions>","senderDomain": "<senderDomain>","forwarderAddress": "<forwarderAddress>","autoApprove": true,"buzonId": "00000000-0000-0000-0000-000000000000"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/transfer-keys/:keyIdEdita una llave de cobro.
Path params
orgIdstringrequeridokeyIdstringrequerido
Body (JSON)
labelstringCómo se ve en el panel.
entitystringNEQUIBANCOLOMBIAEntidad de la llave: decide cómo se lee su aviso de pago.
keystringLa llave que se le da al cliente (@usuario, celular, correo).
holderstringTitular que ve el cliente.
instructionsstringTexto que acompaña a la llave.
senderDomainstringDominio que firma los avisos de pago de esta llave. Vacío = el de la entidad.
forwarderAddressstringBuzón de confianza que reenvía los avisos, si el intermediario rompe la firma del banco.
autoApprovebooleanCon la bandeja en «aprobar solo», si los pagos de esta llave se aprueban solos. Una llave nueva empieza en false (solo sugerir).
buzonIdstring · uuidCorreo (buzón de avisos) al que llegan los avisos de pago de esta llave. null = ninguno: sus pagos no se confirman solos.
Respuestas
- 200
curl -X PATCH 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/transfer-keys/00000000-0000-0000-0000-000000000000' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"label": "<label>","entity": "NEQUI","key": "<key>","holder": "<holder>","instructions": "<instructions>","senderDomain": "<senderDomain>","forwarderAddress": "<forwarderAddress>","autoApprove": true,"buzonId": "00000000-0000-0000-0000-000000000000"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/transfer-keys/:keyId/activateDeja activa esta llave y apaga la anterior. Los pedidos pendientes de la anterior se siguen conciliando.
Path params
orgIdstringrequeridokeyIdstringrequerido
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/transfer-keys/00000000-0000-0000-0000-000000000000/activate' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/transfer-keys/:keyIdElimina una llave. No la activa ni una con pedidos esperando pago.
Path params
orgIdstringrequeridokeyIdstringrequerido
Respuestas
- 200
curl -X DELETE 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/transfer-keys/00000000-0000-0000-0000-000000000000' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/transfer-keys/:keyId/qrSube el QR de una llave (PNG/JPG/WebP).
Path params
orgIdstringrequeridokeyIdstringrequerido
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/transfer-keys/00000000-0000-0000-0000-000000000000/qr' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/transfer-keys/:keyId/qrQuita el QR de una llave.
Path params
orgIdstringrequeridokeyIdstringrequerido
Respuestas
- 200
curl -X DELETE 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/transfer-keys/00000000-0000-0000-0000-000000000000/qr' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/receiptsComprobantes de pago pendientes de revisar.
Path params
orgIdstringrequerido
Query params
limitstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/receipts' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/orders/:orderId/receiptsComprobantes enviados para un pedido.
Path params
orgIdstringrequeridoorderIdstringrequerido
Respuestas
- 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/orders/00000000-0000-0000-0000-000000000000/receipts' \ -H 'X-Api-Key: mk_live_<prefix>.<secret>'
{
"data": [
{
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
}
],
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/receipts/:receiptId/approveAprueba el comprobante y confirma el pago (entrega la licencia).
Path params
orgIdstringrequeridoreceiptIdstringrequerido
Body (JSON)
notestringNota interna de quien revisa.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/receipts/00000000-0000-0000-0000-000000000000/approve' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"note": "<note>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/receipts/:receiptId/rejectRechaza el comprobante con un motivo.
Path params
orgIdstringrequeridoreceiptIdstringrequerido
Body (JSON)
reasonstringrequeridoPor qué se rechaza. El cliente lo va a leer.
Respuestas
- 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/license-delivery/receipts/00000000-0000-0000-0000-000000000000/reject' \
-H 'X-Api-Key: mk_live_<prefix>.<secret>' \
-H 'Content-Type: application/json' \
-d '{"reason": "<reason>"}'{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}/organizations/:orgId/license-delivery/license-delivery/img/:productIdSirve la imagen del producto (stream público).
Path params
productIdstringrequerido
curl -X GET 'https://api.mosend.dev/organizations/:orgId/license-delivery/license-delivery/img/00000000-0000-0000-0000-000000000000'
{
"data": {
"id": "00000000-0000-0000-0000-000000000000",
"createdAt": "2026-05-01T03:42:18.123Z"
},
"timestamp": "2026-05-01T03:42:18.123Z"
}