Cambiar Plan
Modifica el plan de una suscripción existente, lo que permite tanto actualizarlo como cambiarlo a niveles de precios diferentes.
Nota: De forma predeterminada, esto utiliza la información de pago existente del cliente. Establece collect_via_payment_link para cobrar mediante una página de checkout alojada.
Cambios Programados de Plan
Use el parámetroeffective_at para controlar cuándo entrará en vigor el cambio de plan:
Manejo de Fallos de Pago
Use el parámetroon_payment_failure para controlar lo que sucede cuando falla el pago del cambio de plan:
on_payment_failure, el comportamiento predeterminado es el configurado a nivel de negocio en el panel de control.Cobro mediante Payment Link
Establececollect_via_payment_link en true para enviar al cliente a una página de checkout alojada en lugar de cobrar a su método de pago guardado. La respuesta incluye entonces payment_id, payment_link, client_secret y expires_on; redirige al cliente a payment_link para completar el pago.
Esto requiere:
422. Mientras el enlace no esté pagado, la suscripción permanece en su plan actual y una solicitud change-plan posterior devuelve 409.
Códigos de descuento
Puedes aplicar uno o más códigos de descuento apilados al cambiar de plan pasando el arraydiscount_codes (máximo 20 elementos, aplicados en el orden del array). El campo singular discount_code está obsoleto, pero sigue funcionando para integraciones existentes; no se puede combinar con discount_codes en la misma solicitud.
Autorizaciones
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Parámetros de ruta
Subscription Id
Cuerpo
Unique identifier of the product to subscribe to
Proration Billing Mode
prorated_immediately, full_immediately, difference_immediately, do_not_bill Number of units to subscribe for. Must be at least 1.
x >= 0Whether adaptive currency fees should be included in the price (true) or added on top (false). If not specified, uses the subscription's stored setting.
Addons for the new plan. Note : Leaving this empty would remove any existing addons
Replace a scheduled plan change with this one.
The scheduled change is cancelled by the transaction that applies this change. A change that never applies leaves the schedule in place.
effective_at: next_billing_date is allowed. The new schedule then
replaces the old one in the request transaction.
A pending plan change still gets a 409. This field does not affect it.
The preview route shares this request body, so a preview that sets this
field also passes the scheduled-change 409.
Collect the plan-change amount with a payment link. The customer then pays on a checkout page.
The business needs the allow_plan_change_via_payment_link capability.
The request needs effective_at: immediately. The request also needs
on_payment_failure: prevent_change.
The preview route shares this request body and ignores this field.
DEPRECATED: Use discount_codes instead. Cannot be used together with discount_codes.
Stacked discount codes to apply to the new plan. Max 20. Cannot be used together with discount_code. If provided, replaces any existing discount codes. Empty array removes all discounts. If not provided (None), existing discounts with preserve_on_plan_change=true are preserved.
When to apply the plan change.
immediately(default): Apply the plan change right awaynext_billing_date: Schedule the change for the next billing date
immediately, next_billing_date Metadata for the payment. If not passed, the metadata of the subscription will be taken
Controls behavior when the plan change payment fails.
prevent_change: Keep subscription on current plan until payment succeedsapply_change(default): Apply plan change immediately regardless of payment outcome
If not specified, uses the business-level default setting.
prevent_change, apply_change Respuesta
Subscription plan changed. A link request can return checkout details. A pending plan change applies after payment succeeds.
Handles for a hosted checkout page that settles a plan change.
The four fields repeat UpdatePaymentMethodResponse and a subset of
CreateSubscriptionResponse. A shared type would rename the generated SDK
types for all three routes, so each route keeps its own.