Commet
  • Pricing
Log InTry out
Introducción

Inicio rápido

Aprender

Gestionar SuscripcionesUpgrade y Downgrade de Planes

Recursos

Referencia del SDKVersionado de APIManejo de erroresTestingCLI

Plugins

Better Auth
DocumentaciónRecursosConstruir con AIAPI ReferenceWebhooks

Gestionar Suscripciones

Gestiona el ciclo de vida completo de las suscripciones de tus clientes.

Las suscripciones conectan a un cliente con un plan y manejan los cobros recurrentes de forma automática. Cada cliente puede tener una suscripción activa a la vez. Créala vía SDK o dashboard, y Commet gestiona el checkout, los recibos y las transiciones del ciclo de vida.

Ciclo de vida de la suscripción

EstadoDescripciónEjemplo
DraftCreada pero aún no activadaSuscripción recién asignada, sin checkout enviado
TrialingPeríodo de trial gratuito activoTrial de 14 días en el plan Pro
Pending PaymentCheckout enviado, esperando pagoEl cliente recibió el link de checkout pero no pagó
ActiveCobrando con normalidadRecibo mensual pagado, features habilitadas
PausedPausada temporalmente, sin cobrosEl cliente pidió una pausa
Past DuePago fallido, en período de graciaTarjeta rechazada, reintento programado
CanceledYa no cobraEl cliente canceló o llegó al fin del período
ExpiredLlegó a la fecha de fin programadaSuscripción a plazo fijo terminada

Gestión desde el dashboard

Desde la página de detalle del cliente, puedes asignar un plan, cambiar de plan, cancelar o regenerar un link de checkout si el original expiró. Si tus planes están en un Plan Group, los clientes también pueden cambiar de plan por sí mismos desde el Portal del Cliente.

Crear una suscripción

const subscription = await commet.subscriptions.create({
  customerId: 'user_123',
  planCode: 'pro',
})

redirect(subscription.data.checkoutUrl)
subscription = commet.subscriptions.create(
    customer_id="user_123",
    plan_code="pro",
)

redirect(subscription.data["checkout_url"])
subscription, err := client.Subscriptions.Create(ctx, &commet.CreateSubscriptionParams{
    CustomerID: "user_123",
    PlanCode:   "pro",
})

redirect(subscription.Data.CheckoutURL)
var subscription = commet.subscriptions().create("user_123", "pro");

redirect(subscription.getData().get("checkout_url"));
$subscription = $commet->subscriptions->create(
    customerId: 'user_123',
    planCode: 'pro',
);

redirect($subscription->data['checkout_url']);
curl -X POST https://commet.co/api/subscriptions \
  -H "x-api-key: $COMMET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "customerId": "user_123",
    "planCode": "pro"
  }'

Devuelve un checkoutUrl — redirige al usuario ahí para completar el pago.

Parámetros

ParámetroTipoDescripción
customerIdstringID del cliente en Commet (cus_xxx) o tu ID externo
planCodestringCódigo del plan (alternativa a planId)
planIdstringUUID del plan (alternativa a planCode)
billingIntervalstringweekly, monthly, quarterly, yearly o one_time
initialSeatsobjectCódigos de tipo de licencia mapeados a cantidades
skipTrialbooleanSaltar el período de trial del plan
successUrlstringURL de redirección tras pago exitoso

Obtener suscripción

const sub = await commet.subscriptions.get('user_123')

if (sub.data?.status === 'active') {
  // El usuario pagó
}
sub = commet.subscriptions.get("user_123")

if sub.data and sub.data["status"] == "active":
    # El usuario pagó
sub, err := client.Subscriptions.Get(ctx, "user_123")

if sub.Data != nil && sub.Data.Status == "active" {
    // El usuario pagó
}
var sub = commet.subscriptions().get("user_123");

if ("active".equals(sub.getData().get("status"))) {
    // El usuario pagó
}
$sub = $commet->subscriptions->get('user_123');

if ($sub->data['status'] === 'active') {
    // El usuario pagó
}
curl "https://commet.co/api/subscriptions/active?customerId=user_123" \
  -H "x-api-key: $COMMET_API_KEY"

Cancelar

await commet.subscriptions.cancel({
  subscriptionId: 'sub_xxx',
})
commet.subscriptions.cancel(subscription_id="sub_xxx")
_, err := client.Subscriptions.Cancel(ctx, &commet.CancelSubscriptionParams{
    SubscriptionID: "sub_xxx",
})
commet.subscriptions().cancel("sub_xxx");
$commet->subscriptions->cancel(subscriptionId: 'sub_xxx');
curl -X POST https://commet.co/api/subscriptions/sub_xxx/cancel \
  -H "x-api-key: $COMMET_API_KEY"

Por defecto, la suscripción sigue activa hasta el fin del ciclo de cobro actual. El uso metered pendiente se cobra en el recibo final.

Cancelar de inmediato

Para cancelar una suscripción ahora mismo en lugar de al fin del período, pasa immediate: true. El estado de la suscripción cambia a canceled y la fecha de fin se setea a ahora.

await commet.subscriptions.cancel({
  subscriptionId: 'sub_xxx',
  immediate: true,
})
commet.subscriptions.cancel(subscription_id="sub_xxx", immediate=True)
_, err := client.Subscriptions.Cancel(ctx, &commet.CancelSubscriptionParams{
    SubscriptionID: "sub_xxx",
    Immediate:      commet.Bool(true),
})
commet.subscriptions().cancel("sub_xxx", CancelParams.builder().immediate(true).build());
$commet->subscriptions->cancel(subscriptionId: 'sub_xxx', immediate: true);
curl -X POST https://commet.co/api/subscriptions/sub_xxx/cancel \
  -H "x-api-key: $COMMET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"immediate": true}'

Las suscripciones canceladas no se pueden reactivar — crea una nueva.

Aprende más

  • Cómo funcionan los cobros y pagos

Relacionado

  • Gestionar Planes — Crea planes de precios que impulsan suscripciones
  • Upgrade y Downgrade de Planes — Cómo funcionan los cambios de plan
  • Períodos de Trial — Configura períodos de trial gratuitos
  • Portal del Cliente — Portal self-service de cobros para clientes

¿Cómo está esta guía?

Ofertas introductorias

Configura descuentos automáticos en los primeros ciclos de cobro para nuevos clientes en Commet.

Upgrade y Downgrade de Planes

Cómo cambian de plan los clientes desde el Portal del Cliente y el dashboard.

En esta página

Ciclo de vida de la suscripción
Gestión desde el dashboard
Crear una suscripción
Parámetros
Obtener suscripción
Cancelar
Cancelar de inmediato
Aprende más
Relacionado