Ciclo de vida
Los estados persistidos son:Crear
checkoutUrl. Los planes gratuitos pueden activarse sin checkout y devolver checkoutUrl: null.
El flujo normal solo necesita customerId y planCode o planId. Los campos opcionales de selección son:
Omitir
priceId conserva la resolución por defecto de precio y Market. Omitir offerId conserva la selección automática de la Introductory Offer.
Un checkout pending_payment compatible puede reutilizarse. Una selección pendiente incompatible puede reemplazarse sin duplicar una suscripción pagada.
Si omitís un promoCode u offerId que tiene el checkout pendiente, incluida una Offer asignada con PUT /subscriptions/{id}/offer, se reemplaza por una suscripción y un checkout nuevos sin ese beneficio. Redirigí al checkoutUrl devuelto; el link anterior deja de funcionar. Para conservar la Offer, enviala de nuevo o asignala al ID de la suscripción devuelta.
Consultar estado actual o histórico
getActive devuelve la relación de suscripción actual del customer o null.
get con el ID público para obtener cualquier estado persistido, incluidos pending_payment, past_due y canceled.
Pausar y reanudar
Una pausa detiene temporalmente el acceso y las renovaciones sin cancelar la suscripción. Podés pausar una suscripción de un plan pago recurrente en estadoactive o trialing. No aplica a planes gratuitos, pagos únicos ni suscripciones pendientes de pago, past-due o canceladas. Antes de crear una pausa, resolvé cualquier cancelación programada, cambio de plan programado o checkout pendiente de cambio de plan.
Elegir cuándo pausar
Por ejemplo, si pausás inmediatamente cuando quedan 10 días pagos, esos 10 días se conservan. Si reanudás una semana después, todavía quedan 10 días antes de renovar.
Mientras está pausada, la suscripción no genera facturas de renovación. Una pausa al final del período puede generar una factura final por consumo, excedentes o ajustes pendientes de seats/quota del período terminado. No cobra capacidad por adelantado para el período siguiente.
Definir la duración
Usá un entero positivo endurationDays para programar un intento de reanudación automática, o null para una pausa indefinida que requiere reanudación manual. La duración cuenta desde que la pausa se hace efectiva, no desde que se programa una pausa futura.
En Dashboard, abrí el detalle de la suscripción y elegí Pause. Seleccioná el modo y la duración y confirmá. El cliente puede editar una pausa existente, cancelar una pausa programada y reanudar una suscripción pausada desde el Customer Portal, pero no crear pausas; Commet Admin los muestra en el detalle de la suscripción. Para modificar pausas desde Dashboard necesitás permiso para editar suscripciones.
La pausa muestra su fecha de inicio y de reanudación. Sus acciones permiten editar la duración, revocar una pausa programada o reanudar una pausa efectiva.
En el Dashboard y el Customer Portal, elegí una duración sugerida o ingresá un número de días, semanas o meses calendario. El diálogo muestra cuándo empieza la pausa y cuándo se intentará reanudar. Dejá la duración vacía para una pausa indefinida. Al editar se reconstruye una duración equivalente desde las fechas guardadas, contando desde el inicio original de la pausa. Las suscripciones semanales priorizan semanas completas; las demás, meses calendario completos y luego semanas o días. Si el mes de destino es más corto, se usa su último día.
Crear una pausa
Este pedido programa una pausa de siete días al final del período:"mode":"immediate" para pausar ahora, o "durationDays":null para dejar abierta la fecha de reanudación.
La creación devuelve la suscripción actualizada. Una pausa futura tiene pause.status: "scheduled" y la suscripción sigue active o trialing. Cuando se hace efectiva, la suscripción pasa a paused y pause.status vale "active". El objeto pause incluye mode, effectiveAt y resumeAt; vale null cuando no hay una pausa actual ni programada.
Editar o revocar una pausa
Cambiá la duración de una pausa programada o efectiva:null para hacerla indefinida. Esta operación no cambia el modo de pausa.
Revocá una pausa antes de que se haga efectiva:
Reanudar y manejar el resultado del pago
Usáresume para una suscripción pausada; reactivate es otra operación para suscripciones canceladas o past-due.
subscriptionId, invoiceId y status. Al reanudar una pausa inmediata no hay una factura nueva, por lo que invoiceId vale null.
Un pago de reanudación rechazado deja la factura pendiente. Los reintentos automáticos ocurren en los días 1, 3, 5 y 7 desde el rechazo original y reutilizan esa factura. Durante los reintentos, la suscripción sigue pausada. Si todos fallan, se cancela y la factura de reanudación pasa a incobrable. Los intentos manuales de reanudación no consumen intentos automáticos.
La reanudación de una pausa de fin de período usa el precio base vigente al crear la factura nueva. Si esa factura queda pendiente, sus reintentos conservan el monto y los créditos o balance incluidos aunque el catálogo vuelva a cambiar. Las Introductory Offers y los descuentos aceptados conservan los términos que todavía no se consumieron; reanudar no otorga una Introductory Offer nueva ni vuelve a canjear un promo code.
Consultá las referencias de Pause y Resume para ver los esquemas completos.
Sincronizar el acceso
Usá Feature Access para autorizar pedidos según el estado actual de la suscripción. Suscribite a estos webhooks para procesar actualizaciones asincrónicas en tu aplicación:subscription.pause_scheduled: se programó una pausa futura; el acceso todavía continúa.subscription.pause_updated: cambió la duración de la pausa.subscription.pause_revoked: se quitó la pausa programada.subscription.paused: la pausa se hizo efectiva y se cortó el acceso de la suscripción.subscription.resumed: terminó la reanudación y volvió el acceso.subscription.resume_failed: falló el pago de reanudación y la suscripción sigue pausada.
Cancelar
immediate: true. Las relaciones gratuitas, pendientes y past-due se cancelan inmediatamente. La cancelación no borra el balance almacenado.
Cancelar una suscripción pausada es inmediato y descarta el tiempo conservado. El consumo, los excedentes o los ajustes de seats pendientes todavía pueden generar una factura final. Para cancelar cuando hay una pausa futura programada, revocá esa pausa primero.
Revertir una cancelación programada
uncancel funciona solamente antes de que una cancelación al final del período se haga efectiva. Conserva la misma suscripción y período actual.
Recuperar una suscripción past-due
Reactivate reintenta el cobro de renovación pendiente y conserva la relación original:active.
Reactivar una suscripción cancelada
La misma operaciónreactivate cobra el medio de pago guardado, reutiliza el registro de suscripción y comienza un período nuevo anclado a la fecha de reactivación. Podés enviar un offerId; las fases aceptadas se persisten como una Offer Application inmutable.
El precio seleccionado no se guarda como snapshot. Las renovaciones futuras usan su valor actual de catálogo. Archivar ese precio impide nuevas selecciones, pero no rompe la suscripción existente.