Ir a contenido
Crea una cuenta o Inicia sesión
Logotipo de Stripe Docs
/
Pregúntale a la IA
Crear una cuentaIniciar sesión
Empieza ahora
Pagos
Ingresos
Plataformas y marketplaces
Gestión del dinero
Recursos para desarrolladores
API y SDKAyuda
Resumen
Billing
ResumenAcerca de las API de facturación
Suscripciones
    Resumen
    Cómo funcionan las suscripciones
    Empieza ahora
    Inicio rápido
    Planificar una integración
    Crear una integración
    Integrar con Salesforce
    Casos de uso
    Acerca de las suscripciones
    Habilitar modo de facturación
    Configurar eventos de suscripción
    Derechos
    Facturas de suscripciones
    Calendarios de suscripciones
    Modelos de tarifas recurrentes
    Configurar suscripciones
    Configurar métodos de cobro
    Inserta un cuadro de tarifas
    Establecer ciclos de facturación
    Administración de suscripciones
    Migrar suscripciones a Stripe
    Establecer cantidades de productos o suscripciones
    Suscripciones a intervalos combinados
    Suscripciones con fechas pasadas
    Configura períodos de prueba
    Gestionar suscripciones con pago diferido
    Aplica cupones
    Modificar suscripciones
      Cambia los precios
      Cancelar suscripciones
      Suspender el cobro de suscripciones
      Gestionar prorrateos
      Gestionar actualizaciones pendientes
    Gestionar métodos de pago de suscripciones
    Análisis
    Administrar suscripciones en iOS
Invoicing
Cobro por consumo
Modelo de cobro por consumo avanzado
Presupuestos
Gestión de clientes
Gestión de cobros con otros productos
Recuperación de ingresos
Automatizaciones
Prueba tu integración
Impuesto
Resumen
Usa Stripe Tax
Gestiona el cumplimiento de la normativa
Elaboración de informes
Resumen
Seleccionar un informe
Configura informes
Informes para varias cuentas
API de informes
Reconocimiento de ingresos
Datos
Resumen
Consultar datos de empresas
Sigma
Data Pipeline
Importa los datos externos
Estados Unidos
Español (América Latina)
InicioIngresosSubscriptionsModify subscriptions

Prorrateos

Administra los prorrateos para suscripciones modificadas.

El aspecto más complejo a la hora de modificar suscripciones existentes son los prorrateos, mediante los que se le cobra al cliente un porcentaje del costo de la suscripción para reflejar un uso parcial. En esta página se explica cómo funcionan los prorrateos con las suscripciones y cómo administrarlos para tus clientes.

Cómo funcionan los prorrateos

Por ejemplo, actualizar o degradar una suscripción puede generar cargos prorrateados. Si un cliente pasa de un plan mensual de USD 10 a una opción de USD 20, se le cobrarán importes prorrateados por el tiempo que utilizó cada opción. Si el cambio se produjera a mitad del período de facturación, al cliente se le cobraría USD 5 adicionales: -USD 5 por el tiempo no utilizado conforme al precio inicial y USD 10 por el tiempo restante conforme al nuevo precio.

El prorrateo garantiza que al cliente se le cobre el importe correcto, pero puede traer aparejados importes de pago diferentes de los previstos. Los prorrateos negativos no se le reembolsan al cliente automáticamente ni los positivos se le cobran de inmediato, aunque ambas acciones pueden realizarse en forma manual.

Puedes previsualizar el prorrateo para ver el importe antes de aplicar los cambios. Para obtener más información sobre cómo funcionan los prorrateos de crédito, lee nuestra guía.

Prorrateos y descuentos

Todas las partidas de factura prorrateadas (prorations=true) se establecen en discountable=false. Los descuentos aplicados a una factura con prorrateos solo se aplican a las partidas de factura y las partidas de factura no prorrateadas. Todos los descuentos aplicados anteriormente a la suscripción y que afecten al importe del prorrateo se reflejan en el importe de la partida de factura por prorrateo.

Los no prorrateos muestran ajustes de descuento en discount_amounts.

Qué desencadena los prorrateos

De forma predeterminada, los siguientes casos dan como resultado un prorrateo:

ActualizarDescripción
Cambio de itemsAgregar una partida nueva o eliminar una partida existente
Cambiar priceCambio a un precio con un costo base o un período de facturación diferente
Cambio de quantityCómo aumentar o disminuir la cantidad de una partida de suscripción
Agregar trial_end o trial_from_planLa incorporación de un período de prueba a una suscripción activa
Cambiar billing_cycle_anchorRestablecer el período de facturación a una nueva fecha
Configuración de cancel_atCancelar una suscripción a mitad de período (no al final del período)

Qué no genera prorrateos

Muchas actualizaciones de suscripciones no afectan la facturación ni generan prorrateos. Realiza estas actualizaciones en cualquier momento sin crear partidas de factura prorrateadas:

ParámetroDescripción
Actualizaciones de configuración y ajustes
automatic_taxHabilitar o deshabilitar el cálculo fiscal automático
default_payment_methodCambiar el método de pago predeterminado
default_sourceCambiar la fuente de pago predeterminada
payment_behaviorControlar el comportamiento de los intentos de pago
collection_methodCambiar entre aceptar pagos automáticamente y enviar factura
days_until_dueActualizar la fecha de vencimiento de pago para suscripciones con envío de factura
tax_filing_currencyCambiar la moneda de declaración fiscal
retry_settingsModificar el comportamiento de reintento para pagos fallidos
trial_settingsActualizar la configuración del comportamiento al final el periodo de prueba
pay_inmediatelyControlar el comportamiento de pago inmediato
pending_invoice_item_intervalCambiar la frecuencia con la que se facturan las partidas pendientes
pause_collectionSuspender o reanudar cobro de pagos
proration_dateEstablecer una fecha de prorrateo específica (no genera prorrateos por sí misma)
Metadatos y campos descriptivos
metadata y items.metadataActualizar los metadatos de la suscripción o de las partidas de suscripción
cancellation_detailsAgregar comentarios sobre cancelaciones
Actualizaciones que funcionan como configuración para futuros cambios de facturación sin prorrateo
discounts y items.discountsAgregar o actualizar descuentos (aplicados a facturas futuras)
billing_thresholds y items.billing_thresholdsActualizar los umbrales de facturación en suscripciones o partidas de suscripción
cancel_at_period_endCancelar al final del período actual sin prorrateo
add_invoice_itemsAgregar cargos puntuales a la próxima factura

Nota

Estas actualizaciones no generan partidas de factura prorrateadas con proration_behavior=create_prorations ni facturas con partidas de factura prorrateadas con proration_behavior=always_invoice porque no cambian el monto de la facturación del período actual.

Crear manualmente tus propios prorrateos

Para calcular tus propios prorrateos fuera de Stripe y agregarlos a la suscripción, especifica add_invoice_items con un unit_amount negativo (igual al importe del prorrateo calculado) en estos puntos de conexión:

  • Crea una suscripción
  • Actualiza una suscripción
  • Crea un calendario de suscripciones
  • Actualiza los calendarios de suscripciones

Cuándo se aplican los prorrateos

Los prorrateos solo se aplican a los cargos que se producen antes del período de facturación. El cobro por consumo no está sujeto al prorrateo.

El importe prorrateado se calcula en cuanto la API actualiza la suscripción. El momento de inicio y finalización del período de facturación en curso se utilizan para calcular el costo de la suscripción antes y después del cambio.

Prorrateos y facturas impagas

Stripe calcula las prorrateos según el estado de la suscripción en el momento de la actualización, asumiendo que las facturas anteriores de la suscripción se pagarán eventualmente. Si un cliente cambia su suscripción mientras tiene una factura pendiente de pago correspondiente al periodo actual, es posible que reciba un crédito por el tiempo no utilizado del plan de precio más alto, incluso si aún no ha pagado por ese tiempo.

Para evitar el crédito por el tiempo impago, puedes deshabilitar los prorrateos cuando la última factura de la suscripción esté impaga. Al actualizar la suscripción, establece proration_behavior en none. Selecciona uno de los siguientes enfoques:

  1. Para mantener el período de facturación original: crea una factura única de los cargos nuevos de forma manual.
  2. Para cobrar de inmediato por el nuevo plan y restablecer el período de facturación: Configura billing_cycle_anchor en now. Para obtener más detalles, consulta Restablecer el período de facturación al momento actual.

Cualquiera de estos enfoques puede generar un doble pago si el cliente termina pagando la factura anterior. Para evitarlo, anula la factura no pagada.

Impuestos y prorrateos

Para obtener más información sobre cómo funcionan los impuestos con los prorrateos, consulta la sección Cobra impuestos sobre pagos recurrentes.

Prorrateos de crédito

Credit prorations are issued when customers downgrade their subscriptions or cancel subscription items before the end of their billing period. Stripe offers two approaches for calculating credit prorations, depending on whether you set your subscription’s billing_mode to classic or flexible.

Lógica de cálculo sin prorrateos

In the following scenario, you upgrade a 10 USD monthly subscription to 20 USD with the proration_behavior set to none for 10 days. There’s no previous debit to base it on. Later, you downgrade the subscription to 10 USD per month with the proration_behavior set to always_invoice.

Para configurar este escenario, primero se crea una suscripción de 10 USD por mes el 1 de abril:

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/subscriptions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "items[0][price]"=price_10_monthly

La respuesta incluye la factura creada para esta suscripción:

Create subscription response
{ id: "sub_123", latest_invoice: { id: "in_123", total: 10_00, currency: "usd" } }

A continuación, el 11 de abril, actualiza la suscripción a 20 USD por mes sin crear prorrateos:

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/subscriptions/sub_123 \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "items[0][id]"=sub_item_1 \ -d "items[0][price]"=price_20_monthly \ -d proration_behavior=none

La última factura no se modifica porque proration_behavior es none:

Upgrade subscription response
{ id: "sub_123", latest_invoice: { id: "in_123" } }

Finalmente, el 21 de abril, reduces el nivel de la suscripción a 10 USD por mes y creas prorrateos:

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/subscriptions/sub_123 \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "items[0][id]"=sub_item_1 \ -d "items[0][price]"=price_10_monthly \ -d proration_behavior=always_invoice
ClásicaFlexible
The billing_mode=classic proration calculation logic creates a credit proration based on the current price, even though the customer never paid the 20 USD monthly rate. The latest invoice credits a third of the month for 20 USD (-6.67 USD), even though the customer never paid for the price_20_monthly price. It also debits a third of the month for 10 USD (3.33 USD).The calculation logic enabled with billing_mode=flexible creates a credit proration based on the last price billed for the subscription item. In this case, the latest invoice credits a third of a month for the 10 USD monthly price billed on April 1 (3.33 USD) and debits a third of the month for the 10 USD price (3.33 USD). The credit and debit cancel out so the invoice total is 0 USD.
# billing_mode = classic { id: "sub_123", latest_invoice: { id: "in_456", total: -3_34, currency: "usd" } }
# billing_mode = flexible { id: "sub_123", latest_invoice: { id: "in_456", total: 0, currency: "usd" } }

Lógica de cálculo para cupones aplicados a varios ítems de suscripción

Stripe pondera el cupón amount_off en el prorrateo del crédito para evitar la sobrefacturación.

En el siguiente escenario, un cupón de 5 USD se asigna de manera desigual a una suscripción mensual de 25 USD para un ítem de 10 USD y un ítem de 20 USD.

Para configurar este escenario, crea una suscripción con varios items y un cupón el 1 de febrero:

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/subscriptions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "items[0][price]"=price_20_monthly \ -d "discounts[0][coupon]"=five_dollars_off

Lo que devuelve esta respuesta:

Create subscription with multiple items and a coupon response
{ id: "sub_123", latest_invoice: { id: "in_123", total: 25_00, currency: "usd", lines: { data: [ { id: "ili_1", amount: 10_00, price: "price_10_monthly", discount_amounts: [{ discount: "di_a", amount: 1_66 }] }, { id: "ili_2", amount: 20_00, price: "price_20_monthly", discount_amounts: [{ discount: "di_a", amount: 3_34 }] }, ] } } }

Cómo cancelar el ítem de suscripción mensual 10 USD:

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/subscription_items/si_10_monthly \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d proration_behavior=create_prorations

Cuando se elimina un ítem de suscripción, el billing_mode asociado a esa suscripción afecta la forma en que se calcula el prorrateo de la siguiente manera:

ClásicaFlexible
El comportamiento predeterminado distribuye un cupón de 5 USD entre cada item (2.5 USD por item). Al cancelar el item más económico (5 USD), se genera un reembolso de 2.5 USD. Stripe calcula el total con la fórmula -0.5 x (10 USD price - 5 USD coupon) = -2.50 USD.The flexible behavior reflects the proportional discount applied to the canceled item, rather than potentially applying the full discount amount to the proration calculation. Stripe calculates the total using the formula -0.5 x (10 USD price - 1.66 USD discount amount) = -4.17 USD.
# billing_mode = classic { "id": "sub_123", "latest_invoice": { "id": "in_456", "total": -250, "currency": "usd" } }
# billing_mode = flexible { "id": "sub_123", "latest_invoice": { "id": "in_789", "total": -417, "currency": "usd" } }

Previsualizar un prorrateo

Puedes crear una vista previa de la factura para previsualizar los cambios en una suscripción. Esta llamada API no modifica la suscripción. En cambio, devuelve la próxima factura en función de los parámetros especificados. Cambiar el price o la quantity genera un prorrateo. En este ejemplo, se cambia el price y se establece una fecha para el prorrateo.

Ruby
Python
PHP
Java
Node.js
Ir
.NET
No results
# Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
# Set proration date to this moment: proration_date = Time.now.to_i subscription = Stripe::Subscription.retrieve('sub_49ty4767H20z6a') # See what the next invoice would look like with a price switch # and proration set: items = [{ id: subscription.items.data[0].id, price: 'price_CBb6IXqvTLXp3f', # Switch to new price }] invoice = Stripe::Invoice.create_preview({ customer: 'cus_4fdAW5ftNQow1a', subscription: 'sub_49ty4767H20z6a', subscription_details: { items: items, proration_date: proration_date, } })

Puedes expandir la siguiente respuesta de ejemplo para ver:

  • El crédito por el tiempo no utilizado conforme al precio anterior en las líneas 36-38.
  • El costo por el tiempo de uso conforme al nuevo precio en las líneas 107-109.
  • El nuevo subtotal y el total de la factura en las líneas 276-279.
{ "id": "upcoming_in_1OujwkClCIKljWvsq5v2ICAN", "account_country": "US", "account_name": "Test account", "amount_due": 3627, "amount_paid": 0, "amount_remaining": 3627, "application_fee_amount": null, "attempt_count": 0, "attempted": false,

Usa esta información para confirmar los cambios con el cliente antes de modificar la suscripción. Dado que Stripe prorratea hasta los segundos, los importes prorrateados pueden cambiar entre el momento en que se accede a la vista previa y aquel en que se hace la actualización. Para evitar esto, especifica un valor subscription_details.proration_date al momento de crear una vista previa. Cuando actualices la suscripción, especifica la misma fecha con el parámetro proration_date en la suscripción de forma que el prorrateo se calcule con respecto al mismo tiempo.

Ruby
Python
PHP
Java
Node.js
Ir
.NET
No results
# Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
subscription = Stripe::Subscription.update( 'sub_49ty4767H20z6a', { items: [ { id: subscription.items.data[0].id, price: 'price_CBb6IXqvTLXp3f', }, ], proration_date: proration_date, } )

Controla el comportamiento de prorrateo

El prorrateo se controla mediante el parámetro proration_behavior, que tiene tres opciones de parámetros posibles: create_prorations, always_invoice, y none.

Comportamiento predeterminado

El parámetro predeterminado para proration_behavior es create_prorations, que crea partidas de factura de prorrateo cuando corresponda. Estas partidas de prorrateo solo se facturan de inmediato cuando se dan ciertas condiciones.

Crear prorrateos inmediatos

Para facturarle al cliente de inmediato un cambio en una suscripción en el mismo período de facturación, configura proration_behavior en always_invoice cuando modifiques la suscripción. De esta manera, se calcula el prorrateo y, luego, se genera de inmediato una factura.

Deshabilitar prorrateos

Para deshabilitar los prorrateos por solicitud, establece el parámetro proration_behavior en none. Ningún parámetro desactiva todos los prorrateos futuros de una suscripción. Para deshabilitar los prorrateos de manera indefinida, establece proration_behavior en none para cada solicitud que genere prorrateos:

Command Line
curl
Ruby
Python
PHP
Java
Node.js
Ir
.NET
No results
curl https://api.stripe.com/v1/subscriptions/sub_49ty4767H20z6a \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d "items[0][id]"="si_1AkFf6LlRB0eXbMtRFjYiJ0J" \ -d "items[0][price]"="price_CBb6IXqvTLXp3f" \ -d "proration_behavior"="none"

Si se han deshabilitado los prorrateos, al generarse la siguiente factura, se les facturará a los cliente el importe total conforme al nuevo precio.

¿Te fue útil esta página?
SíNo
  • ¿Necesitas ayuda? Ponte en contacto con soporte.
  • Echa un vistazo a nuestro registro de cambios.
  • ¿Tienes alguna pregunta? Contacto.
  • ¿LLM? Lee llms.txt.
  • Con tecnología de Markdoc