Subscriptions
Una Subscription representa la suscripción de un Customer a un SubscriptionPlan recurrente. Sangho gestiona automáticamente las renovaciones, los recordatorios en caso de fallo de pago y las notificaciones por correo electrónico.
Casos de uso típicos: suscripción mensual a un SaaS, acceso a una plataforma de formación, paquete de servicios recurrentes con o sin período de prueba.
Sangho cobra automáticamente al Customer al final de cada período mediante el método de
pago registrado. En caso de fallo, la Subscription pasa a past_due
y se activan reintentos automáticos. Recibe un webhook subscription.payment_failed con cada intento fallido.
Ciclo de vida
| Estado | Significado | Acción disponible |
|---|---|---|
trialing | Período de prueba en curso: sin cobros. | /cancel/, /pause/. |
active | Suscripción activa: renovaciones en curso. | /cancel/, /pause/. |
past_due | Renovación fallida: reintentos en curso. | /cancel/ o esperar el reintento. |
paused | Suspendida manualmente: sin cobros. | /resume/ para reanudar. |
canceled | Cancelada: sin cobros futuros. | /reactivate/ si está dentro del plazo. |
unpaid | Todos los reintentos han fallado. | Se requiere una acción manual. |
expired | Llegada a su término (fecha de fin definida). | Crear una nueva Subscription. |
Endpoints
| Méthode | Endpoint | Description |
|---|---|---|
| POST | /subscriptions/ | Crear una suscripción |
| GET | /subscriptions/ | Listar las suscripciones |
| GET | /subscriptions/{id}/ | Recuperar una suscripción |
| PATCH | /subscriptions/{id}/ | Modificar una suscripción |
| POST | /subscriptions/{id}/cancel/ | Cancelar |
| POST | /subscriptions/{id}/reactivate/ | Reactivar tras una cancelación |
| POST | /subscriptions/{id}/pause/ | Suspender los cobros |
| POST | /subscriptions/{id}/resume/ | Reanudar tras una suspensión |
Esquema del objeto
Crear una Subscription
Crea una suscripción recurrente para un Customer. Si se define un trial_period_days, la Subscription arranca en estado trialing y el primer cobro se aplaza.
customerRequisID del Customer que se va a suscribir. El Customer debe existir y tener una dirección de correo electrónico válida para recibir las notificaciones de renovación.
unit_amountRequisImporte que se cobra en cada período de facturación, en céntimos.
Si utiliza un SubscriptionPlan,
pase mejor el campo plan: el importe se heredará del plan y no
tendrá que especificarlo aquí.
intervalRequisUnidad del período de facturación. Valores: day, week, month, year.
interval_countOptionnelMultiplicador del intervalo. Por ejemplo, interval: “month” + interval_count: 3 = facturación trimestral.
productOptionnelID del Product asociado a esta suscripción. Permite mostrar el nombre y la imagen del producto en las facturas de renovación.
payment_methodOptionnelID del método de pago que se cobrará en cada renovación. Si no se indica, se utiliza el método de pago predeterminado del Customer.
En savoir plus
El método debe pertenecer al Customer y estar activo. En los pagos con Mobile Money, el número de teléfono asociado debe ser válido y tener saldo suficiente en el momento de la renovación.
collection_methodOptionnelModo de cobro del pago. charge_automatically cobra
automáticamente el método de pago registrado. send_invoice
genera una Invoice que se envía al Customer
en cada renovación.
En savoir plus
send_invoice se recomienda para las suscripciones B2B en las que el cliente
prefiere pagar contra factura. El Customer recibe entonces un correo con el enlace de
pago en cada período.
trial_period_daysOptionnelDuración del período de prueba gratuito en días para este suscriptor concreto. Sobrescribe el valor definido en el SubscriptionPlan.
En savoir plus
Durante el período de prueba, la Subscription está en estado trialing
y no se realiza ningún cobro. Se envía un webhook subscription.trial_will_end 3 días antes del fin de
la prueba para permitir un recordatorio proactivo.
cancel_at_period_endOptionnelSi es true, la Subscription se cancela automáticamente al final del
período en curso. No se realizará ninguna renovación.
En savoir plus
Útil para las cancelaciones “a final de mes”: el acceso se mantiene hasta el
final del período pagado y después la Subscription pasa a canceled sin
ningún cobro adicional.
metadataOptionnelDatos libres: referencia interna, plan de origen, canal de captación, etc.
En savoir plus
Los metadatos se incluyen en todos los webhooks vinculados a esta Subscription
(subscription.created, subscription.canceled, subscription.payment_failed).
Crear una suscripción
Gestionar el ciclo de vida
Cancelar (/cancel/): pone fin a la suscripción.
Pase cancel_at_period_end: true en el cuerpo para aplazar la
cancelación al final del período en curso: el acceso se mantiene hasta el final.
Reactivar (/reactivate/): restaura una Subscription
cancelada recientemente, siempre que no haya expirado el período de gracia. La
Subscription se reanuda en active con la siguiente renovación programada.
Suspender (/pause/): suspende los cobros sin
cancelar la suscripción. La Subscription pasa a paused. Útil para
los clientes de vacaciones o con dificultades temporales.
Reanudar (/resume/): reanuda una Subscription
suspendida. El siguiente cobro se programa en el siguiente período normal.
Llamar a /cancel/ sin cuerpo cancela de inmediato. Pasar { cancel_at_period_end: true } permite que el suscriptor acceda al servicio
hasta el final del período pagado, que es el comportamiento recomendado para una mejor
experiencia del cliente.
Modificar una Subscription
Permite actualizar el método de pago, el modo de cobro o los metadatos de una Subscription activa.
payment_methodOptionnelNuevo método de pago para las próximas renovaciones. Debe pertenecer al Customer.
collection_methodOptionnelCambiar el modo de cobro: charge_automatically o send_invoice.
cancel_at_period_endOptionnelPase true para programar una cancelación a fin de período.
Pase false para anular una cancelación programada.
metadataOptionnel