---
title: Revendedores (marca blanca)
description: Permita a socios vender su nube bajo su marca: cree revendedores, configure dominios y DNS, precios mayoristas, valores por defecto y slots de licencia.
url: https://nexcmp.com/es/docs/customers/resellers/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# Revendedores (marca blanca) {#resellers-white-label}

> **Ubicación en el panel de administración:** Customers › Resellers › List (`/resellers`), Domains & SSL (`/resellers/domains`), Permissions & wholesale (`/resellers/entitlements`), Defaults (`/resellers/settings`). Slots de revendedor: System › Admin › License & updates (`/license`).

## Qué hace {#what-it-does}

Un **revendedor** obtiene una copia personalizada con su marca del portal de clientes en **su propio dominio**, con sus propios clientes, billetera, precios y (opcionalmente) canales de pago. Le compra a usted a precio mayorista y vende a su propio precio. Sus clientes nunca ven su marca y el dominio del revendedor nunca puede abrir su consola de administración. El revendedor gestiona su negocio desde la **consola de partners** en `https://partner.<your-domain>`.

## Requisitos {#requirements}

| Elemento | Requisito |
|---|---|
| Licencia | Un **slot de dominio de revendedor** en su licencia por cada dominio personalizado de revendedor. La página de licencia muestra `used/max` slots y un enlace para comprar más. Sin un slot libre, añadir un dominio falla con «Out of license reseller domain slots». |
| DNS | Cada dominio de revendedor debe apuntar a su servidor (consulte más abajo). |
| Servidor web y TLS | El nombre de host debe llegar al panel de NexCMP a través de su proxy inverso con un certificado válido para dicho nombre. |
| Correo electrónico | SMTP configurado para los correos electrónicos de invitación y notificación. |
| Interruptor principal | **Reseller settings › General › `rs_enabled`** está activado por defecto. |

## Preparar la infraestructura {#prepare-the-infrastructure}

1. Determine la dirección pública del servidor: su dirección IPv4 y, si prefiere CNAME, un nombre de host que apunte a ella (por ejemplo `sites.cloud.example.com`).
2. Abra **Customers › Resellers › Defaults** (`/resellers/settings`), grupo **Domains & SSL**, y configure:

   | Clave | Significado |
   |---|---|
   | `rs_server_ipv4` | La IPv4 pública a la que deben apuntar los registros A de los revendedores. |
   | `rs_cname_target` | El nombre de host al que deben apuntar los registros CNAME de los revendedores. |
   | `rs_master_hosts` | Nombres de host que pertenecen a su propio sitio principal (no se pueden asignar a revendedores). |
   | `rs_platform_domain` | Dominio principal opcional para **subdominios de la plataforma** (por ejemplo `partners.cloud.example.com` para dar a los revendedores `acme.partners.cloud.example.com`). Dejarlo vacío deshabilita la opción. |
   | `rs_sites_stale_minutes` | Minutos antes de que el servicio de certificados se considere desactualizado (por defecto 15). |
   | `rs_ssl_fail_hours` | Horas de intentos fallidos antes de generar un error (por defecto 48). |

   ::: warning Compruebe estos valores antes de enviar instrucciones
   `rs_server_ipv4`, `rs_cname_target` y `rs_master_hosts` se proporcionan con valores de ejemplo. Reemplácelos con su propio servidor y dominio **antes** de dar instrucciones de DNS a un revendedor; de lo contrario, las instrucciones en pantalla apuntarán al lugar equivocado.
   :::

3. Haga clic en **Save** (se solicita un motivo).
4. Asegúrese de que su proxy inverso reenvíe los nombres de host del revendedor al panel de NexCMP y sirva un certificado para cada uno de ellos. El instalador configura nginx y Let's Encrypt solo para el dominio principal (y los nombres `admin.` y `partner.` que resuelvan). Si utiliza Cloudflare, aplique proxy al nombre de host y utilice el modo Full SSL.

## Conectar en NexCMP {#connect-in-nexcmp}

### Crear el revendedor {#create-the-reseller}

1. Abra **Customers › Resellers › List** y haga clic en **New reseller**. El asistente consta de 8 pasos y aprovisiona todo al final; cada paso se puede reintentar de forma segura.

   | Paso | Datos a completar |
   |---|---|
   | **Reseller** | Nombre legal o comercial, **slug** (4–31 caracteres de a–z, 0–9 o `-`, que comience con una letra; también es el prefijo de factura), nombre de contacto, correo electrónico y teléfono, idioma predeterminado, datos de facturación del revendedor (como comprador de recargas de billetera). |
   | **Console account** | Nombre de usuario, correo electrónico de la cuenta, nombre completo; **Send a one-time invite link by e-mail** (válido 72 horas, recomendado) o mostrar una contraseña temporal una sola vez. |
   | **Brand** | Nombre de marca, nombre corto, eslóganes, colores primarios, correo electrónico y teléfono de soporte, nombre del vendedor impreso en las facturas de clientes, logotipos (fondo claro y oscuro), isotipo cuadrado y favicon: PNG, JPEG, WEBP o ICO de hasta 256 KB, **no SVG**. |
   | **Dominios** | El dominio o dominios del cliente con **también www**, cuál es el principal, un **dominio de prueba** (sslip.io) y la opción **dry-run**, o un subdominio de la plataforma. El asistente muestra **DNS OK / DNS no listo** y los registros que se deben crear. |
   | **Precios y monedero** | Descuento mayorista (%), precio mínimo minorista (% de lista), margen predeterminado (%), límite de crédito, saldo inicial, alerta de saldo bajo, límites de clientes, VM y dominios, funciones del sitio (registro de clientes, protección DDoS, tickets de soporte, plan personalizado, cambio de tamaño, Auto Scaling). |
   | **Canales de pago** | Quién cobra los pagos de los clientes (ver más abajo) y, opcionalmente, PayPal propio y transferencia bancaria propia de VN. |
   | **Email** | Nombre del remitente y Reply-To. La dirección From se mantiene como la dirección de la plataforma hasta que se configure DKIM para el dominio del distribuidor. |
   | **Revisión** | Revise todo y haga clic en **Provision everything** o en **Guardar borrador (aprovisionar más tarde)**. |

2. El aprovisionamiento continúa en segundo plano (cada 30 segundos). Abra el distribuidor para ver el progreso y use **Continue provisioning** o **Retry** si un paso falló.

![Asistente de nuevo distribuidor en el primer paso con valores de ejemplo](https://nexcmp.com/es/docs/images/customers/resellers-01-wizard.webp)

### Apuntar el DNS (lo realiza el distribuidor) {#point-dns-the-reseller-does-this}

El distribuidor (o usted) crea los registros que se muestran en la pestaña **Domains & SSL**:

| Registro | Nombre | Valor |
|---|---|---|
| TXT (propiedad, solo la primera vez) | `_site-verify.<domain>` | `sv=<token>` que se muestra en pantalla |
| A (dominio raíz como `shop.example.net`) | el dominio | su `rs_server_ipv4` |
| CNAME (subdominio como `cloud.example.net`) | el dominio | su `rs_cname_target` (o un registro A a `rs_server_ipv4`) |
| CNAME (opcional) | `www.<domain>` | su `rs_cname_target` |

Además:

- Elimine cualquier registro **AAAA** (IPv6) a menos que su servidor responda en esa dirección IPv6.
- Desactive el proxy de CDN (**desactivado**, nube gris) mientras se verifica el dominio.
- Si el dominio tiene registros **CAA**, permita `letsencrypt.org`.

El token del registro TXT es diferente para cada dominio; cópielo de la pantalla. El sistema vuelve a comprobar el DNS cada 5 minutos durante las primeras 48 horas, luego cada hora, y libera cualquier nombre cuyo registro TXT siga faltando después de 72 horas.

### Estados del dominio {#domain-states}

En **Customers › Resellers › Domains & SSL** (todos los distribuidores) y en la pestaña **Domains & SSL** de un distribuidor:

| Estado | Significado |
|---|---|
| `pending_verify` | Esperando el registro TXT. |
| `pending_dns` / `verifying` | Esperando que el registro A o CNAME apunte a usted. |
| `issuing` | Certificado en proceso de emisión. |
| `active` | Sirviendo el sitio del distribuidor. |
| `cert_expiring` | Certificado próximo a caducar; renovación prevista. |
| `dns_lost` | El DNS dejó de apuntar a usted; después de 30 días, el dominio se elimina. |
| `error` | Consulte el código de error; use **Retry** tras corregirlo. |
| `removing` / `removed` | En proceso de eliminación; se devuelve el espacio de la licencia. |

Acciones de fila: **Check now**, **Retry**, **Establecer como principal**, **Test mode** (para un dominio de prueba), **Remove**.


## Permisos y venta mayorista {#permissions-wholesale}

**Customers › Resellers › Permissions & wholesale** (`/resellers/entitlements`) es una matriz: una fila por revendedor, con el **descuento** mayorista y el **margen**, y un conmutador por servicio (por ejemplo, DDoS Shield y VPN). Un conmutador es editable cuando la función a nivel de plataforma está activada; de lo contrario, la celda es de solo lectura y enlaza con la configuración. La subpestaña **Top-up codes** establece cuántos códigos puede emitir cada revendedor al mes (consulte [Promotions](https://nexcmp.com/es/docs/billing/promotions/)).

Reglas de precios:

- Precio mayorista = precio de lista x (1 - descuento), y se puede anular por plan y por ciclo de facturación en la pestaña **Wholesale pricing** del revendedor.
- El revendedor establece los precios minoristas y no puede bajar del **precio mínimo** (porcentaje del precio de lista).
- El **wallet** del revendedor paga el precio mayorista cuando sus clientes compran. El wallet tiene un límite de crédito, un período de gracia y un tope de sobregiro (consulte Defaults).

## Valores predeterminados {#defaults}

**Customers › Resellers › Defaults** (`/resellers/settings`) son las claves `rs_*` que se aplican a cada revendedor. Cada cambio solicita un motivo y queda auditado.

| Grupo | Clave | Predeterminado | Significado |
|---|---|---|---|
| General | `rs_enabled` | 1 | Programa de revendedores activado. |
| | `rs_platform_collect_enabled` | 0 | Permite que la plataforma cobre los pagos de los clientes para los revendedores. **Activar únicamente tras una revisión legal.** |
| | `rs_totp_required` | 1 | Las cuentas de la consola del revendedor deben usar autenticación de dos factores. |
| | `rs_agreement_version` | 1 | Versión del acuerdo de revendedor que deben aceptar. |
| Precios predeterminados | `rs_default_discount_bp` | 2000 (20 %) | Descuento mayorista para nuevos revendedores (puntos básicos, de 0 a 9000). |
| | `rs_default_markup_bp` | 2500 (25 %) | Margen predeterminado (de 0 a 50000). |
| | `rs_default_floor_bp` | 9000 (90 %) | Precio mínimo minorista (de 0 a 20000). |
| | `rs_default_max_domains` | 3 | Dominios permitidos por revendedor. |
| Wallet y liquidaciones | `rs_grace_hours` | 72 | Período de gracia antes de que los servicios de los clientes se vean afectados por un wallet de revendedor vacío. |
| | `rs_overdraft_cap_cents` | 5000 | Sobregiro permitido en el wallet. |
| | `rs_retention_days` | 14 | Días antes de que se destruyan las VM de un revendedor cerrado. |
| | `rs_payout_hold_days` | 30 | Días que se retiene una comisión antes de poder retirarla. |
| | `rs_payout_min_cents` | 5000 | Retiro mínimo. |
| | `rs_topup_min_cents` | 2000 | Recarga mínima de wallet por parte de un revendedor. |
| Pagos y correo | `rs_webhook_base` | vacío | URL base pública para los webhooks de pasarela del revendedor (vacío = usar la URL del sitio). |
| | `rs_mail_from` | vacío | Dirección de remitente para los correos electrónicos del revendedor. |
| | `rs_invoice_show_processor` | 1 | Mostrar el procesador de pagos en las facturas. |
| | `rs_gw_stripe_enabled`, `rs_gw_usdt_enabled` | 1 | Indica si los revendedores pueden configurar su propio Stripe o USDT. |

## Quién cobra los pagos de los clientes {#who-collects-customer-payments}

| Modo | Significado |
|---|---|
| **El revendedor cobra (canales propios)** — predeterminado | El revendedor conecta su propio Stripe, PayPal, USDT o cuenta bancaria. Sus webhooks son `https://<reseller-domain>/v1/billing/<gateway>/webhook/r/<id>`. Las tarjetas guardadas y [auto top-up](https://nexcmp.com/es/docs/billing/auto-top-up/) no están disponibles para estos sitios. |
| **La plataforma cobra** | Sus canales se muestran en el sitio del revendedor. Bloqueado hasta `rs_platform_collect_enabled = 1`. |
| **Mixto** | Una combinación elegida por canal. |

## Qué ve el revendedor {#what-the-reseller-sees}

La consola de socios en `https://partner.<your-domain>` incluye Overview, Reports, Customers, VMs, Tickets, Orders, Payments, Prices, Brand, Landing & legal, Domains & SSL, Email, Wallet y Payment channels. Las cuentas de la consola tienen el rol *reseller* (completo) o *staff* (solo lectura). Para comprobarlo usted mismo, abra el revendedor y haga clic en **Sign in to partner console**: accederá durante 60 minutos, cada operación de escritura se registrará con su nombre tanto en el registro de administración como en el del revendedor, y las operaciones monetarias requerirán una segunda confirmación.

## Verificación {#verify}

1. Tras el aprovisionamiento, la fila del revendedor en la lista muestra *active* y una columna **Provisioning** en verde.
2. Abra el dominio del revendedor en un navegador: aparecerá su propia página de inicio de sesión con su marca. `https://<reseller-domain>/admin` responde 404.
3. Registre un cliente de prueba en ese dominio: el cliente aparecerá en **Customers › List** con el revendedor en la columna **Site**.
4. La página de licencias muestra un slot más en uso.

## Límites y notas {#limits-notes}

- Un slot de licencia por dominio personalizado o de prueba; los subdominios de la plataforma no consumen un slot.
- Suspender a un revendedor conserva los datos; **Close reseller** libera todos los slots de dominio, y la destrucción de VM solo se permite tras el periodo de retención.
- Los clientes del revendedor aparecen en su lista de clientes y se puede iniciar sesión en su nombre igual que con cualquier otro (el enlace se abre en el dominio del revendedor).
- Los revendedores no pueden ver ni modificar sus canales de pago, los valores predeterminados de cuotas ni a otros revendedores.

## Resolución de problemas {#troubleshooting}

| Síntoma | Causa | Solución |
|---|---|---|
| "Sin cupos de dominios de revendedor en la licencia" | Todos los slots están en uso | Libere un slot (elimine un dominio) o compre más en la página de licencias. |
| Dominio bloqueado en `pending_verify` | Falta el registro TXT | Cree el registro TXT exactamente como se indica; use **Check now**. |
| Dominio bloqueado en `pending_dns` | El registro A/CNAME no apunta a usted, hay un registro AAAA o el proxy CDN está activado | Corrija los DNS, desactive el proxy y haga clic en **Check now**. |
| Estado `error` | Consulte el código en la fila (por ejemplo, CAA bloqueando Let's Encrypt, límite de tasa) | Corrija el problema y haga clic en **Retry**. |
| El navegador indica que el host es desconocido o muestra "421" | El nombre de host no está en la licencia o no está enrutado hacia el panel | Añada el dominio mediante el revendedor (consume un slot) y corrija el proxy inverso. |
| Las instrucciones muestran una IP o host incorrecto | `rs_server_ipv4` / `rs_cname_target` aún tienen los valores de ejemplo | Configúrelos en Defaults. |
| El revendedor no puede habilitar el cobro a través de la plataforma | Bloqueado | Configure `rs_platform_collect_enabled` tras la revisión legal. |


