# Prorrateos Administra los prorrateos para suscripciones modificadas. Si tu integración utiliza [Accounts configuradas por el cliente](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer), reemplaza las referencias a `Customer` y a eventos en los ejemplos de código por las referencias equivalentes de la API Accounts v2. Para obtener más información, consulta [Representar clientes con objetos Account](https://docs.stripe.com/connect/use-accounts-as-customers.md). 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](https://docs.stripe.com/billing/subscriptions/change-price.md) 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](https://docs.stripe.com/billing/subscriptions/prorations.md#preview-proration) para ver el importe antes de aplicar los cambios. Para obtener más información sobre [cómo funcionan los prorrateos de crédito](https://docs.stripe.com/billing/subscriptions/prorations.md#credit-prorations), lee nuestra guía. ### Prorrateos y descuentos Todas las [partidas de factura](https://docs.stripe.com/api/invoiceitems/object.md#invoiceitem_object) prorrateadas (`prorations=true`) se establecen en `discountable=false`. Los descuentos aplicados a una factura con prorrateos solo se aplican a las [partidas de factura](https://docs.stripe.com/api/invoiceitems/object.md#invoiceitem_object-discounts) y [las partidas de factura](https://docs.stripe.com/api/invoice-line-item/object.md#invoice_line_item_object-discounts) 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](https://docs.stripe.com/api/invoice-line-item/object.md#invoice_line_item_object-discount_amounts). #### Cambios en los descuentos y prorrateos Actualizar los códigos de promoción, cupones o descuentos de las suscripciones por sí mismos no crea partidas de factura prorrateadas. Solo los cambios que afectan a los importes facturables del ciclo de facturación actual crean prorrateos, por ejemplo: - cambiar el `price` o la `quantity` de una partida de suscripción - agregar o eliminar partidas de suscripción - cambiar las delimitaciones del ciclo de facturación o el comportamiento de prorrateo Cuando realizas un cambio que genera un prorrateo, Stripe calcula los importes del prorrateo utilizando el estado actual de precios y descuentos de la suscripción en el momento en que se calcula el prorrateo. Si modificas los descuentos como parte de la misma llamada API que también activa prorrateos (por ejemplo, cambiar la cantidad de una partida y modificar un descuento en una sola actualización), el débito o crédito del prorrateo se calcula utilizando los descuentos modificados. Por ejemplo: - **Actualizar únicamente los metadatos de una partida de suscripción o aplicar o eliminar un descuento:** no se crean partidas de factura por prorrateo ni aparecen cargos o créditos de prorrateo inmediatos en la próxima factura. - **Actualizar la cantidad de una partida de suscripción y eliminar un descuento en la misma llamada:** se crean partidas de factura por prorrateo para el cambio de cantidad, y los importes del prorrateo reflejan los precios después del cambio de descuento; el descuento modificado se utiliza en el cálculo del prorrateo. ### Qué desencadena los prorrateos De forma predeterminada, los siguientes casos dan como resultado un prorrateo: | Actualizar | Descripción | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | | Cambio de [items](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-items) | Agregar una partida nueva o eliminar una partida existente | | Cambiar [price](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-items-price) | Cambio a un precio con un costo base o un período de facturación diferente | | Cambio de [quantity](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-items-quantity) | Cómo aumentar o disminuir la cantidad de una partida de suscripción | | Agregar [trial_end](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-trial_end) o [trial_from_plan](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-trial_from_plan) | La incorporación de un período de prueba a una suscripción activa | | Cambiar [billing_cycle_anchor](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-billing_cycle_anchor) | Restablecer el período de facturación a una nueva fecha | | Configuración de [cancel_at](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-cancel_at) | Cancelar 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ámetro | Descripción | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | | **Actualizaciones de configuración y ajustes** | | | [automatic_tax](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-automatic_tax) | Habilitar o deshabilitar el cálculo fiscal automático | | [default_payment_method](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-default_payment_method) | Cambiar el método de pago predeterminado | | [default_source](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-default_source) | Cambiar la fuente de pago predeterminada | | [payment_behavior](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-payment_behavior) | Controlar el comportamiento de los intentos de pago | | [collection_method](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-collection_method) | Cambiar entre aceptar pagos automáticamente y enviar factura | | [days_until_due](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-days_until_due) | Actualizar la fecha de vencimiento de pago para suscripciones con envío de factura | | [tax_filing_currency](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-tax_filing_currency) | Cambiar la moneda de declaración fiscal | | [retry_settings](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-retry_settings) | Modificar el comportamiento de reintento para pagos fallidos | | [trial_settings](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-trial_settings) | Actualizar la configuración del comportamiento al final el periodo de prueba | | [pay_inmediately](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-pay_immediately) | Controlar el comportamiento de pago inmediato | | [pending_invoice_item_interval](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-pending_invoice_item_interval) | Cambiar la frecuencia con la que se facturan las partidas pendientes | | [pause_collection](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-pause_collection) | Suspender o reanudar cobro de pagos | | [proration_date](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-proration_date) | Establecer una fecha de prorrateo específica (no genera prorrateos por sí misma) | | **Metadatos y campos descriptivos** | | | [metadata](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-metadata) y [items.metadata](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-items-metadata) | Actualizar los metadatos de la suscripción o de las partidas de suscripción | | [cancellation_details](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-cancellation_details) | Agregar comentarios sobre cancelaciones | | **Actualizaciones que funcionan como configuración para futuros cambios de facturación sin prorrateo** | | | [discounts](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-discounts) y [items.discounts](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-items-discounts) | Agregar o actualizar descuentos (aplicados a facturas futuras) | | [billing_thresholds](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-billing_thresholds) y [items.billing_thresholds](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-items-billing_thresholds) | Actualizar los umbrales de facturación en suscripciones o partidas de suscripción | | [cancel_at_period_end](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-cancel_at_period_end) | Cancelar al final del período actual sin prorrateo | | [add_invoice_items](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-add_invoice_items) | Agregar cargos puntuales a la próxima factura | > 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](https://docs.stripe.com/api/subscription_schedules/create.md#create_subscription_schedule-add_invoice_items) con un `unit_amount` negativo (igual al importe del prorrateo calculado) en estos puntos de conexión: - [Crea una suscripción](https://docs.stripe.com/api/subscriptions/create.md) - [Actualiza una suscripción](https://docs.stripe.com/api/subscriptions/update.md) - [Crea un calendario de suscripciones](https://docs.stripe.com/api/subscription_schedules/create.md) - [Actualiza los calendarios de suscripciones](https://docs.stripe.com/api/subscription_schedules/update.md) ### 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](https://docs.stripe.com/billing/subscriptions/usage-based.md) 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](https://docs.stripe.com/api/subscriptions/update.md?update_subscription-proration_behavior=#update_subscription-proration_behavior) en `none`. Selecciona uno de los siguientes enfoques: 1. **Para mantener el período de facturación original:** [crea una factura única](https://docs.stripe.com/api/invoices/create.md) de los cargos nuevos de forma manual. 1. **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](https://docs.stripe.com/billing/subscriptions/billing-cycle.md#reset-the-billing-period-to-the-current-time). Cualquiera de estos enfoques puede generar un doble pago si el cliente termina pagando la factura anterior. Para evitarlo, [anula la factura no pagada](https://docs.stripe.com/api/invoices/void.md). ### 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](https://docs.stripe.com/billing/taxes/collect-taxes.md). ## Prorrateos de crédito Se emiten prorrateos en forma de crédito cuando los clientes reducen el nivel de sus suscripciones o cancelan items de suscripción antes de que finalice el período de facturación. Stripe ofrece dos enfoques para calcular estos prorrateos, según si el [billing_mode](https://docs.stripe.com/billing/subscriptions/billing-mode.md#differences-between-classic-and-flexible-billing-mode) de la suscripción está configurado como `classic` o `flexible`. ### Lógica de cálculo sin prorrateos En el siguiente escenario, actualizas una suscripción mensual de 10 USD a 20 USD con `proration_behavior` configurado en `none` durante 10 días. No hay un débito previo en el cual basarse. Más adelante, reduces la suscripción a 10 USD por mes con `proration_behavior` configurado en `always_invoice`. Para configurar este escenario, primero se [crea una suscripción](https://docs.stripe.com/api/subscriptions/create.md) de 10 USD por mes el 1 de abril: ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d "items[0][price]=price_10_monthly" ``` La respuesta incluye la factura creada para esta suscripción: ```json { "id": "sub_123", "latest_invoice": { "id": "in_123", "total": 1000, "currency": "usd" } } ``` A continuación, el 11 de abril, [actualiza la suscripción](https://docs.stripe.com/billing/subscriptions/change-price.md#changing) a 20 USD por mes sin crear prorrateos: ```curl curl https://api.stripe.com/v1/subscriptions/sub_123 \ -u "<>:" \ -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`: ```json { "id": "sub_123", "latest_invoice": { "id": "in_123" } } ``` Finalmente, el 21 de abril, [reduces el nivel de la suscripción](https://docs.stripe.com/billing/subscriptions/change-price.md#changing) a 10 USD por mes y creas prorrateos: ```curl curl https://api.stripe.com/v1/subscriptions/sub_123 \ -u "<>:" \ -d "items[0][id]=sub_item_1" \ -d "items[0][price]=price_10_monthly" \ -d proration_behavior=always_invoice ``` | **Clásica** | **Flexible** | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | La lógica de cálculo de prorrateo con `billing_mode=classic` crea un prorrateo en forma de crédito basado en el precio actual, aunque el cliente nunca pagó la tarifa mensual de 20 USD. La factura más reciente acredita un tercio del mes por 20 USD (-6.67 USD), aunque el cliente nunca pagó por el precio `price_20_monthly`. También debita un tercio del mes por 10 USD (3.33 USD). | La lógica de cálculo habilitada con `billing_mode=flexible` genera un prorrateo en forma de crédito basado en el último precio facturado para el item de suscripción. En este caso, la factura más reciente acredita un tercio del mes por el precio mensual de 10 USD facturado el 1 de abril (3.33 USD) y debita un tercio del mes por el 10 USD precio (3.33 USD). El crédito y el débito se compensan, por lo que el total de la factura es de 0 USD. | | ```json # billing_mode = classic { "id": "sub_123", "latest_invoice": { "id": "in_456", "total": -334, "currency": "usd" } } ``` | ```json # 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: ```curl curl https://api.stripe.com/v1/subscriptions \ -u "<>:" \ -d "items[0][price]=price_10_monthly" \ -d "items[1][price]=price_20_monthly" \ -d "discounts[0][coupon]=five_dollars_off" ``` Lo que devuelve esta respuesta: ```json { "id": "sub_123", "latest_invoice": { "id": "in_123", "total": 2500, "currency": "usd", "lines": { "data": [ { "id": "ili_1", "amount": 1000, "price": "price_10_monthly", "discount_amounts": [{ "discount": "di_a", "amount": 166 }] }, { "id": "ili_2", "amount": 2000, "price": "price_20_monthly", "discount_amounts": [{ "discount": "di_a", "amount": 334 }] } ] } } } ``` Cómo cancelar el ítem de suscripción mensual 10 USD: ```curl curl https://api.stripe.com/v1/subscription_items/si_10_monthly \ -u "<>:" \ -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ásica** | **Flexible** | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 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`. | El comportamiento flexible refleja el descuento proporcional aplicado al item cancelado, en lugar de aplicar potencialmente el importe total del descuento al cálculo del prorrateo. Stripe calcula el total con la fórmula `-0.5 × (precio de USD 10 - importe de descuento de USD 1.66) = -USD 4.17`. | | ```json # billing_mode = classic { "id": "sub_123", "latest_invoice": { "id": "in_456", "total": -250, "currency": "usd" } } ``` | ```json # 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](https://docs.stripe.com/api/invoices/create_preview.md) para previsualizar los cambios en una suscripción. Esta llamada API no modifica la suscripción. En cambio, devuelve la próxima *factura* (Invoices are statements of amounts owed by a customer. They track the status of payments from draft through paid or otherwise finalized. Subscriptions automatically generate invoices, or you can manually create a one-off invoice) 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 ```ruby # Don't put any keys in code. See https://docs.stripe.com/keys-best-practices. # Find your keys at https://dashboard.stripe.com/apikeys. Stripe.api_key = '<>' # 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. ```json { "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, "billing_reason": "upcoming", "charge": null, "collection_method": "charge_automatically", "created": 1599427688, "currency": "usd", "custom_fields": null, "customer": "cus_DGEhAXrZWrzdYs", "customer_address": null, "customer_email": "jenny.rosen@example.com", "customer_name": null, "customer_phone": null, "customer_shipping": null, "customer_tax_exempt": "none", "customer_tax_ids": [], "default_payment_method": null, "default_source": null, "default_tax_rates": [], "description": null, "discount": null, "discounts": [], "due_date": null, "ending_balance": 0, "footer": null, "lines": { "data": [ {"amount": -166, "currency": "usd", "description": "Unused time on Silver plan after 01 Sep 2020", "discount_amounts": [], "discountable": false, "discounts": [], "id": "il_tmp1HMdV2AJVYItwOKqQi4H", "invoice_item": "ii_1HMdV2AJVYItwUH1Qi4H", "livemode": false, "metadata": {}, "object": "line_item", "period": { "end": 1599427688, "start": 1598982148 }, "plan": { "active": true, "amount": 1000, "amount_decimal": "1000", "billing_scheme": "per_unit", "created": 1585856460, "currency": "usd", "id": "price_H1c8v1lifcd", "interval": "month", "interval_count": 1, "livemode": false, "metadata": {}, "nickname": null, "object": "plan", "product": "prod_c7exjJHbC4", "tiers": null, "tiers_mode": null, "transform_usage": null, "trial_period_days": null, "usage_type": "licensed" }, "price": { "active": true, "billing_scheme": "per_unit", "created": 1585856460, "currency": "usd", "id": "price_c8v1liEvrf", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", "product": "prod_c7exjJHbC4", "recurring": { "interval": "month", "interval_count": 1, "trial_period_days": null, "usage_type": "licensed" }, "tiers_mode": null, "transform_quantity": null, "type": "recurring", "unit_amount": 1000, "unit_amount_decimal": "1000" }, "proration": true, "quantity": 1, "subscription": "sub_H38lqYjDO0DSzl", "subscription_item": "si_H38lIMagWoFx0W", "tax_amounts": [], "tax_rates": [], "type": "invoiceitem" }, {"amount": 541, "currency": "usd", "description": "Remaining time on Gold plan after 01 Sep 2020", "discount_amounts": [], "discountable": false, "discounts": [], "id": "il_tmp1HMdV2AJVYItwOKqDcgkmpzz", "invoice_item": "ii_1HMdV2AJVYItwOKqDcgkmpzz", "livemode": false, "metadata": {}, "object": "line_item", "period": { "end": 1599427688, "start": 1598982148 }, "plan": { "active": true, "amount": 3252, "amount_decimal": "3252", "billing_scheme": "per_unit", "created": 1598473039, "currency": "usd", "id": "price_KV3bAJVYItwOKq16frkr", "interval": "month", "interval_count": 1, "livemode": false, "metadata": {}, "nickname": null, "object": "plan", "product": "prod_JfJiw2l6ke", "tiers": null, "tiers_mode": null, "transform_usage": null, "trial_period_days": null, "usage_type": "licensed" }, "price": { "active": true, "billing_scheme": "per_unit", "created": 1598473039, "currency": "usd", "id": "price_KV3bAJVYItwOKq16frkr", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", "product": "prod_JfJiw2l6ke", "recurring": { "interval": "month", "interval_count": 1, "trial_period_days": null, "usage_type": "licensed" }, "tiers_mode": null, "transform_quantity": null, "type": "recurring", "unit_amount": 3252, "unit_amount_decimal": "3252" }, "proration": true, "quantity": 1, "subscription": "sub_H38lqYjDO0DSzl", "subscription_item": "si_H38lIMagWoFx0W", "tax_amounts": [], "tax_rates": [], "type": "invoiceitem" }, { "amount": 3252, "currency": "usd", "description": "1 \u00d7 Gold product (at $32.52 / month)", "discount_amounts": [], "discountable": true, "discounts": [], "id": "il_tmp_7fc9ba9b6aa9aa", "livemode": false, "metadata": {}, "object": "line_item", "period": { "end": 1602019688, "start": 1599427688 }, "plan": { "active": true, "amount": 3252, "amount_decimal": "3252", "billing_scheme": "per_unit", "created": 1598473039, "currency": "usd", "id": "price_KV3bAJVYItwOKq16frkr", "interval": "month", "interval_count": 1, "livemode": false, "metadata": {}, "nickname": null, "object": "plan", "product": "prod_JfJiw2l6ke", "tiers": null, "tiers_mode": null, "transform_usage": null, "trial_period_days": null, "usage_type": "licensed" }, "price": { "active": true, "billing_scheme": "per_unit", "created": 1598473039, "currency": "usd", "id": "price_KV3bAJVYItwOKq16frkr", "livemode": false, "lookup_key": null, "metadata": {}, "nickname": null, "object": "price", "product": "prod_JfJiw2l6ke", "recurring": { "interval": "month", "interval_count": 1, "trial_period_days": null, "usage_type": "licensed" }, "tiers_mode": null, "transform_quantity": null, "type": "recurring", "unit_amount": 3252, "unit_amount_decimal": "3252" }, "proration": false, "quantity": 1, "subscription": "sub_H38lqYjDO0DSzl", "subscription_item": "si_H38lIMagWoFx0W", "tax_amounts": [], "tax_rates": [], "type": "subscription" } ], "has_more": false, "object": "list", "total_count": 3, "url": "/v1/invoices/upcoming_in_1OujwkClCIKljWvsq5v2ICAN/lines" }, "livemode": false, "metadata": {}, "next_payment_attempt": 1599431288, "number": null, "object": "invoice", "paid": false, "payment_intent": null, "period_end": 1599427688, "period_start": 1596749288, "post_payment_credit_notes_amount": 0, "pre_payment_credit_notes_amount": 0, "receipt_number": null, "starting_balance": 0, "statement_descriptor": null, "status": "draft", "status_transitions": { "finalized_at": null, "marked_uncollectible_at": null, "paid_at": null, "voided_at": null }, "subscription": "sub_8lqYjDO0DS", "subscription_details": { "proration_date": 1598982148 },"subtotal": 3627, "tax": null, "tax_percent": null, "total": 3627, "total_discount_amounts": [], "total_tax_amounts": [], "transfer_data": null, "webhooks_delivered_at": null } ``` 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 ```ruby # Don't put any keys in code. See https://docs.stripe.com/keys-best-practices. # Find your keys at https://dashboard.stripe.com/apikeys. Stripe.api_key = '<>' 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](https://docs.stripe.com/api/subscriptions/update.md#update_subscription-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](https://docs.stripe.com/billing/subscriptions/change-price.md#immediate-payment). ### 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: #### curl ```bash curl https://api.stripe.com/v1/subscriptions/sub_49ty4767H20z6a \ -u <>: \ -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.