# Cómo funcionan las suscripciones Gestiona los pagos recurrentes y los ciclos de vida de las suscripciones. Subscriptions permiten a los clientes realizar pagos recurrentes por acceder a un producto. A diferencia de las compras únicas, Subscriptions requieren que almacenes información adicional del cliente para cargos futuros. Stripe ofrece varias funcionalidades que te ayudan a gestionar la facturación de las suscripciones. - [Admisión de diferentes modelos de tarifas](https://docs.stripe.com/products-prices/pricing-models.md) - [Gestión de descuentos en suscripciones](https://docs.stripe.com/billing/subscriptions/coupons.md) - [Gestión de pruebas](https://docs.stripe.com/billing/subscriptions/trials.md) - [Prorrateos para suscripciones modificadas](https://docs.stripe.com/billing/subscriptions/prorations.md) - [Gestión de autoservicio del cliente](https://docs.stripe.com/customer-management.md) - [Facturación para el cobro de pagos](https://docs.stripe.com/billing/invoices/suscription.md) - [Recuperación de ingresos automatizada](https://docs.stripe.com/billing/revenue-recovery.md) - [Elaboración de informes y análisis](https://docs.stripe.com/billing/subscriptions/analytics.md) ## El ciclo de vida de la suscripción En las siguientes secciones, se describe el ciclo de vida de la suscripción que se recomienda en Stripe. ### Crear la suscripción Crea una suscripción nueva en el [Dashboard](https://dashboard.stripe.com/subscriptions?status=active) o con la [API](https://docs.stripe.com/api/subscriptions/create.md). Cada vez que creas una suscripción, se activa un [evento](https://docs.stripe.com/billing/subscriptions/webhooks.md#events). Escucha estos eventos con [puntos de conexión webhook](https://docs.stripe.com/billing/subscriptions/webhooks.md) y asegúrate de que tu integración los gestione correctamente. Como alternativa, puedes crear una [prueba](https://docs.stripe.com/billing/subscriptions/trials.md) que no requiera el pago de la suscripción. En ese caso, el `estado` es de `prueba`. Cuando la prueba termina, la suscripción pasa a `estado activo` y Stripe le cobra al cliente suscrito. #### Comportamiento del pago Establece el `comportamiento de pago` de una suscripción en [default_incomplete](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-payment_behavior) para ayudar a gestionar Payments fallidos y flujos de pago complejos como 3DS. Esto crea Subscriptions con estado `incompleto` si se requiere el pago, lo que te permite cobrar y confirmar posteriormente la información de pago para activar la suscripción. Cuando configuras `payment_behavior` como: - `allow_incomplete`: Stripe intenta cobrar inmediatamente el pago de la factura. Si el pago falla, el estado de la suscripción cambia a `incompleto`. - `error_if_incomplete`: si falla el pago, fallará por completo la creación de la suscripción. Las suscripciones que creas en el Dashboard se configuran de forma predeterminada con el comportamiento de pago adecuado en función del método de pago. ### Cómo gestionar la factura Cuando creas una suscripción, Stripe crea automáticamente una [factura](https://docs.stripe.com/billing/invoices/subscription.md) con el estado `abierto`. Tu cliente tiene alrededor de 23 horas para realizar un pago correctamente. Durante este tiempo, el estado de la suscripción está `incompleto` y el estado de la factura permanece `abierto`. Este intervalo existe porque el cliente en general hace el primer pago de una suscripción *durante la sesión* (A payment is described as on-session if it occurs while the customer is actively in your checkout flow and able to authenticate the payment method). Si el cliente vuelve a tu aplicación después de transcurridas 23 horas, crea una nueva suscripción. ### El cliente paga Si tu cliente paga la factura, la suscripción pasa a estado activo (`active`) y la factura a pagado (`paid`). Si no se realiza el pago, la suscripción pasa a estado incompleto y vencido (`incomplete_expired`) y la factura queda en estado anulado (`void`). Para confirmar si la factura se pagó, realiza lo siguiente: - Configura un punto de conexión de webhook u otro tipo de destino de evento y escucha el evento de factura pagada (`invoice.paid`). - Marca manualmente el objeto de suscripción y busca `subscription.status=active`. El estado (`status`) pasa a activo (`active`) cuando se paga la factura, ya sea por cobro automático o por pago manual del cliente. Para obtener más información, consulta [Estados de suscripciones](https://docs.stripe.com/billing/subscriptions/overview.md#subscription-statuses) y [Estados de pagos](https://docs.stripe.com/billing/subscriptions/overview.md#payment-status). ### Cómo brindar acceso a tu producto Cuando creas una suscripción para un cliente, se crea un [derecho](https://docs.stripe.com/billing/entitlements.md) activo para cada funcionalidad asociada a ese producto. Cuando un cliente accede a tus servicios, usa sus derechos activos para otorgarle acceso a las funcionalidades incluidas en su suscripción. Como alternativa, puedes utilizar la opción de [realizar el seguimiento de suscripciones activas](https://docs.stripe.com/billing/subscriptions/webhooks.md#active-subscriptions) con eventos webhook y proporcionar el producto al cliente en función de esa actividad. ### Actualizar la suscripción Puedes [modificar las suscripciones existentes](https://docs.stripe.com/billing/subscriptions/change.md) según sea necesario sin tener que cancelarlas y recrearlas. Algunos de los cambios más importantes que puedes hacer son [subir o bajar](https://docs.stripe.com/billing/subscriptions/change-price.md) el precio de la suscripción o [suspender el cobro](https://docs.stripe.com/billing/subscriptions/pause-payment.md) de una suscripción activa. Puedes escuchar los [eventos de suscripción](https://docs.stripe.com/billing/subscriptions/webhooks.md#events) con [puntos de conexión webhook](https://docs.stripe.com/billing/subscriptions/webhooks.md) para ver si se modifica la suscripción; por ejemplo, mediante el envío de un correo electrónico al cliente si falla un pago o la revocación del acceso del cliente cuando este cancela su suscripción. En el caso de las integraciones de [Stripe Checkout](https://docs.stripe.com/payments/checkout.md), no puedes actualizar la suscripción ni su factura si la suscripción de la sesión está en estado incompleto (`incomplete`). Puedes escuchar el evento [checkout.session.completed](https://docs.stripe.com/api/events/types.md#event_types-checkout.session.completed) para hacer la actualización después de que se haya completado la sesión. También puedes [hacer que se venza la sesión](https://docs.stripe.com/api/checkout/sessions/expire.md) si, en cambio, quieres cancelar la suscripción, anular la factura de suscripción o marcar la factura como incobrable. ### Actualizar la primera factura Puedes actualizar la primera factura de una suscripción si el [collection_method](https://docs.stripe.com/api/subscriptions/object.md#subscription_object-collection_method) es `send_invoice`. Después de la creación de la factura, tienes una hora para hacer actualizaciones en los importes, partidas, descripción, metadatos, etc. No puedes actualizar la factura después de finalizarla y enviarla al cliente para pago. La primera factura de una suscripción con el `collection_method` configurado para `charge_automatically` se finaliza y cobra de inmediato. No puedes actualizar la primera factura antes de que se finalice, pero sí las facturas posteriores de suscripciones renovadas. Tampoco puedes actualizar la primera factura para calendarios de suscripciones. La primera factura siempre está abierta, independientemente del método de cobro. ### Gestionar suscripciones impagas En el caso de las suscripciones con facturas impagas, las facturas impagas permanecen abiertas, pero se suspenden los intentos de pago. La suscripción continúa generando facturas en cada período de facturación, que permanecen en el estado `draft`. Para reactivar la suscripción: 1. Recopila nueva información de pago si es necesario. 1. Para habilitar el cobro automático, configura la propiedad [auto_advance](https://docs.stripe.com/api/invoices/update.md#update_invoice-auto_advance) como verdadera (`true`) en los borradores de facturas. 1. [Cierra](https://docs.stripe.com/api/invoices/finalize.md) y paga las facturas abiertas. Al pagar la factura no anulada más reciente antes de su fecha de vencimiento, el estado de la suscripción se actualiza a `active`. Las facturas marcadas como incobrables mantienen activa (`active`) la suscripción subyacente. Stripe ignora las facturas anuladas al momento de determinar el estado de la suscripción y, en su lugar, utiliza la factura no anulada más reciente. El estado (`status`) de la suscripción impaga depende de la [configuración de pagos fallidos](https://dashboard.stripe.com/settings/billing/automatic) que figure en el Dashboard. ### Cancelación de la suscripción Puedes [cancelar](https://docs.stripe.com/billing/subscriptions/cancel.md) una suscripción en cualquier momento, incluso al [final de un ciclo](https://docs.stripe.com/billing/subscriptions/cancel.md#cancel-at-the-end-of-the-current-billing-period) de facturación o después de un [número determinado de ciclos](https://docs.stripe.com/billing/subscriptions/cancel.md#subscription-schedules) de facturación. Si cancelas una suscripción, se deshabilitará la creación de nuevas facturas y se [interrumpirá el cobro automático](https://docs.stripe.com/billing/subscriptions/cancel.md#handle-invoice-items-when-canceling-subscriptions) de todas las facturas pendientes en esa suscripción. Además, se eliminará la suscripción y ya no podrás actualizar ni la suscripción ni sus [metadatos](https://docs.stripe.com/metadata.md). Si el cliente quiere volver a suscribirse, tendrás que recopilar nuevos datos de pago y crear una suscripción nueva. ## Estados de las suscripciones Las suscripciones pueden tener los siguientes estados. Las acciones que puedes realizar en una suscripción dependen de su estado. | Estado | Descripción | | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `trialing` | La suscripción actualmente está dentro de un período de prueba y puedes suministrar el producto a tu cliente de forma segura. La suscripción pasará automáticamente a `active` cuando un cliente efectúe el primer pago. | | `active` | La suscripción está en regla. Para suscripciones `past_due`, pagar la última factura asociada o marcarla como incobrable pasa a `activa`. Ten en cuenta que `activa` no indica que se hayan pagado todas las facturas pendientes asociadas con la suscripción. Puedes dejar otras facturas pendientes abiertas al pago, marcarlas como incobrables o anularlas como mejor te parezca. | | `incomplete` | El cliente debe realizar un pago correctamente en el transcurso de 23 horas para activar la suscripción. O bien, el pago [requiere acción](https://docs.stripe.com/billing/subscriptions/overview.md#requires-action), como la autenticación del cliente. Las suscripciones también pueden mostrarse como `incomplete` si hay un pago pendiente y el estado de PaymentIntent es `processing`. | | `incomplete_expired` | Se produjo un error en el pago inicial de la suscripción y el cliente no efectuó ningún pago correctamente procesado en el transcurso de 23 horas de creada la suscripción. Estas suscripciones no se cobran a los clientes. Este estado existe para que puedas hacer el seguimiento de los clientes que no pudieron activar sus suscripciones. | | `past_due` | El pago de la última factura *finalizada* falló o no se intentó. La suscripción continúa creando facturas. La [configuración de la suscripción](https://dashboard.stripe.com/settings/billing/automatic) del Dashboard determina el siguiente estado de la suscripción. Si la factura sigue impaga después de todos los intentos de [Smart Retries](https://docs.stripe.com/billing/revenue-recovery/smart-retries.md), puedes configurar la suscripción para que pase al estado cancelado (`canceled`), impago (`unpaid`) o dejarla como estado vencido (`past_due`). Para reactivar la suscripción, el cliente debe pagar la factura más reciente. El estado de la suscripción pasa a activo (`active`) independientemente de si el pago se realiza antes o después de la fecha de vencimiento de la última factura. | | `canceled` | Se canceló la suscripción. Mientras esté cancelada, se deshabilita el cobro automático de todas las facturas no pagadas (`auto_advance=false`). Este estado es final y no puede actualizarse. | | `unpaid` | No se abonó la última factura, pero la suscripción sigue vigente. La última factura permanece abierta y las facturas se siguen generando, pero no se intenta hacer pagos. Revoca el acceso a tu producto cuando la suscripción tenga el estado `unpaid` porque los pagos ya se intentaron y reintentaron mientras la suscripción estaba en estado `past_due`. Para que la suscripción pase a `active`, paga la factura más reciente antes de la fecha de vencimiento. | | `paused` | La suscripción ha finalizado su período de prueba sin un método de pago predeterminado y el [trial_settings.end_behavior.missing_payment_method](https://docs.stripe.com/billing/subscriptions/trials/free-trials.md#create-free-trials-without-payment) está establecido en `pausa`. Ya no se crean facturas para la suscripción. Después de adjuntar un método de pago predeterminado al cliente, puedes [reanudar la suscripción](https://docs.stripe.com/billing/subscriptions/trials/free-trials.md#resume-a-paused-subscription). | ## Estados del pago Un [PaymentIntent](https://docs.stripe.com/payments/payment-intents.md) realiza el seguimiento del ciclo de vida de cada pago. Cada vez que vence un pago de una suscripción, Stripe genera una [factura](https://docs.stripe.com/billing/invoices/subscription.md) y un PaymentIntent. El PaymentIntent ID se adjunta a la factura, y puedes acceder a él desde los objetos de la factura y la suscripción. El estado del PaymentIntent afecta el estado de la factura y de la suscripción. Los diferentes resultados de un pago se asignan a los diferentes estados de la siguiente forma: | Resultado del pago | Estado del PaymentIntent | Estado de la factura | Estado de la suscripción | | ------------------------------------- | ------------------------- | -------------------- | ------------------------ | | Se efectúa con éxito | `succeeded` | `paid` | `active` | | Falla debido a un error de la tarjeta | `requires_payment_method` | `open` | `incomplete` | | Falla debido a la autenticación | `requires_action` | `open` | `incomplete` | Métodos de pago asincrónicos, como ACH Direct Debit, gestionan estados transiciones de suscripciones diferentes de métodos de pago inmediatos. Cuando usas un método de pago asincrónico, una suscripción puede pasar directamente a `activa` después de la creación y omitirse `incompleta`. Si el pago falla más tarde, Stripe anula la factura pero la suscripción permanece `activa`. Usa este comportamiento cuando diseñes tu lógica de control de acceso y reintento. En las siguientes secciones, se explican estos estados y las medidas que puedes tomar para cada uno. ### Pago efectuado con éxito Cuando el pago del cliente se efectúe correctamente, realiza lo siguiente: - El estado (`status`) del PaymentIntent pasa a correcto (`succeeded`). - El estado (`status`) de la suscripción es activo (`active`). - El estado (`status`) de la factura es pagado (`paid`). - Stripe envía un evento `invoice.paid` a los puntos de conexión de webhook configurados. En el caso de [métodos de pago](https://docs.stripe.com/payments/payment-methods/integration-options.md) con períodos de procesamiento más largos, las suscripciones se activan inmediatamente. En estos casos, el estado del PaymentIntent puede ser en procesamiento (`processing`) de una suscripción activa (`active`) hasta que el pago se efectúe de forma correcta. Ahora que la suscripción está activa, [brinda acceso](https://docs.stripe.com/billing/subscriptions/overview.md#provision-access) a tu producto. ### Requiere un método de pago Si el pago falla debido a un [error de tarjeta](https://docs.stripe.com/api/errors.md#errors-card_error), como un [pago rechazado](https://docs.stripe.com/declines.md#issuer-declines), ocurre lo siguiente: - El estado `status` del PaymentIntent es requiere método de pago (`requires_payment_method`). - El estado (`status`) de la suscripción es incompleto (`incomplete`). - El estado (`status`) de la factura es abierto (`open`). Para gestionar estos escenarios: - Notifica al cliente. - Recopila datos de pagos nuevos y [confirmar el PaymentIntent](https://docs.stripe.com/api/payment_intents/confirm.md). - Actualiza el [default payment method](https://docs.stripe.com/api/subscriptions/object.md#subscription_object-default_payment_method) en la suscripción. - Stripe vuelve a hacer el intento de pago con [Smart Retries](https://docs.stripe.com/invoicing/automatic-collection.md#smart-retries) o en función de tus [reglas de reintentos](https://dashboard.stripe.com/account/billing/automatic) personalizadas. - Usa el evento [invoice.payment_failed](https://docs.stripe.com/billing/revenue-recovery/smart-retries.md#invoice-payment-failed-webhook) para controlar los eventos de pago fallido de suscripciones y reintentar la realización de actualizaciones. Después de intentar el pago de una factura, el valor de [next_payment_attempt](https://docs.stripe.com/api.md#invoice_object-next_payment_attempt) se establece a partir de la configuración actual de suscripciones en el Dashboard. Obtén información sobre cómo [gestionar los errores de pago en las suscripciones](https://docs.stripe.com/billing/subscriptions/webhooks.md#payment-failures). ### Requiere intervención Algunos métodos de pago exigen que se realice la autenticación del cliente con [3D Secure](https://docs.stripe.com/payments/3d-secure.md) (3DS) para completar el proceso de pago. 3DS completa el proceso de autenticación. El hecho de que un método de pago requiera autenticación depende de las [reglas de Radar](https://docs.stripe.com/payments/3d-secure/authentication-flow.md#three-ds-radar) y del banco emisor de la tarjeta. Si el pago falla porque el cliente necesita autenticar un pago, ocurre lo siguiente: - El estado (`status`) del PaymentIntent es requiere acción (`requires_action`). - El estado (`status`) de la suscripción es incompleto (`incomplete`). - El estado (`status`) de la factura es abierto (`open`). Para gestionar estos escenarios: - Supervisa la notificación de eventos `invoice.payment_action_required` con [puntos de conexión de webhooks](https://docs.stripe.com/billing/subscriptions/webhooks.md). Esto indica que se requiere autenticación. - Notifica a tu cliente que debe realizar una autenticación. - Recupera el secreto de cliente para el PaymentIntent y especifícalo en una llamada a [stripe.ConfirmCardPayment](https://docs.stripe.com/js/payment_intents/confirm_card_payment). De esta forma, se abre un cuadro de diálogo para que los clientes completen la autenticación, se intenta realizar el pago y, luego, se cierra el cuadro de diálogo y la aplicación recibe información de contexto. - Controla el evento `invoice.paid` en el destino del evento para verificar que el pago se haya realizado correctamente. Los usuarios pueden abandonar la aplicación antes de que `confirmCardPayment()` termine. Verificar si el pago se efectuó en forma correcta te permitirá prestar el servicio como corresponde. ## See also - [Diseñar una integración de suscripciones](https://docs.stripe.com/billing/subscriptions/design-an-integration.md) - [Suscripciones de inicio rápido](https://docs.stripe.com/billing/quickstart.md) - [Ejemplo de suscripción con precio fijo](https://github.com/stripe-samples/subscription-use-cases/tree/main/fixed-price-subscriptions)