# Añadir descuentos Reduce el importe facturado a un cliente haciendo descuentos a su subtotal con cupones y códigos de promoción. # Página completa alojada > This is a Página completa alojada for when payment-ui is stripe-hosted. View the full page at https://docs.stripe.com/payments/checkout/discounts?payment-ui=stripe-hosted. Puedes usar descuentos para reducir el importe que se cobra a un cliente. Los cupones y los códigos de promoción te permiten: - Aplica un descuento al subtotal de una compra - Aplica un descuento a productos específicos - Reducir el total facturado conforme a un porcentaje o un importe fijo - Crear códigos de promoción para clientes sobre cupones para compartirlos directamente con ellos > Si quieres usar cupones para descontar *suscripciones* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis) con Checkout y Billing, consulta [Descuentos para suscripciones](https://docs.stripe.com/billing/subscriptions/coupons.md). ## Crear un cupón Los cupones especifican un descuento de valor fijo. Puedes crear códigos de promoción orientados al cliente que se asignen a un único cupón subyacente. Esto significa que los códigos `FALLPROMO` y `SPRINGPROMO` pueden indicar un cupón con descuento del 25 %. Puedes crear cupones en el [Dashboard](https://dashboard.stripe.com/coupons) o con la [API](https://docs.stripe.com/api.md#coupons): ```curl curl https://api.stripe.com/v1/coupons \ -u "<>:" \ -d percent_off=20 \ -d duration=once ``` ## Usa un cupón Para crear una sesión con un descuento aplicado, introduce el [ID del cupón](https://docs.stripe.com/api/coupons/object.md#coupon_object-id) en el parámetro `cupón` de la matriz [descuentos](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-discounts). Checkout Sessions es compatible con actualmente un máximo de un cupón o código promocional. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price]={{PRICE_ID}}" \ -d "line_items[0][quantity]=1" \ -d "discounts[0][coupon]={{COUPON_ID}}" \ -d mode=payment \ --data-urlencode "success_url=https://example.com/success" ``` ## Configura un cupón Los cupones tienen los siguientes parámetros que puedes usar: - `currency` - `percent_off` o `amount_off` - `max_redemptions` - `redeem_by`, la fecha límite que tienen los clientes para aplicar el cupón - `applies_to` limita los productos a los que se aplica el cupón > El objeto Coupon añade descuentos tanto a pagos únicos como a suscripciones. Algunos parámetros del objeto Coupon, como `duration`, solo se aplican a las [suscripciones](https://docs.stripe.com/billing/subscriptions/coupons.md). ### Limita el uso del canje Los valores de los parámetros `max_redemptions` y `redeem_by` se emplean en todas las aplicaciones del cupón. Por ejemplo, puedes restringir un cupón a los primeros 50 usos del mismo o puedes hacer que un cupón caduque en una fecha determinada. ### Limita los productos que cumplen los requisitos Puedes limitar los productos a los que se les pueden aplicar descuentos con un cupón añadiendo los ID de los productos al hash `applies_to` en el objeto Coupon. Todos los códigos de promoción que se asignen a este cupón solo se aplican a la lista de productos elegibles. ### Elimina un cupón Puedes eliminar cupones en el Dashboard o la API. La eliminación de un cupón impide que se aplique a futuras transacciones o clientes. ## Crear un código de promoción Los códigos de promoción son códigos creados además de los cupones que se pueden compartir con el cliente. También puedes especificar más restricciones para controlar cuándo un cliente puede aplicar la promoción. Puedes compartir estos códigos con clientes, quienes podrán introducirlos durante el Checkout para aplicar un descuento. Para crear un [código de promoción](https://docs.stripe.com/api/promotion_codes.md), especifica un `coupon` existente y cualquier restricción (por ejemplo, limitado a un determinado [cliente](https://docs.stripe.com/api/promotion_codes/object.md#promotion_code_object-customer) o [customer_account](https://docs.stripe.com/api/promotion_codes/object.md#promotion_code_object-customer_account)). Si tienes un código específico para ofrecerle a tu cliente (por ejemplo, `FALL25OFF`), establece el `code`. Si dejas este campo en blanco, generaremos un `code` aleatorio. El `code` reconoce mayúsculas y minúsculas y es único entre los códigos de promoción activos para cualquier cliente. Por ejemplo: - Puedes crear múltiples códigos de promoción restringidos a un cliente con el mismo `code`, pero no puedes reutilizar ese `code` para un código de promoción que pueda canjear cualquier cliente. - Si creas un código de promoción canjeable por cualquier cliente, no podrás crear otro código de promoción activo con el mismo `code`. - Puedes crear un código de promoción con `code: NEWUSER`, inactivarlo especificando `active: false` y, luego, crear un nuevo código de promoción con `code: NEWUSER`. Los códigos de promoción se pueden crear en la sección de cupones del [Dashboard](https://dashboard.stripe.com/coupons/create) o con la [API](https://docs.stripe.com/api.md#promotion_codes): ```curl curl https://api.stripe.com/v1/promotion_codes \ -u "<>:" \ -d coupon={{COUPON_ID}} \ -d code=VIPCODE ``` ## Usa un código de promoción Habilita los códigos de promoción canjeables por el usuario utilizando el parámetro [allow_promotion_codes](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-allow_promotion_codes) en una Checkout Session. Esto habilita un campo en Checkout que permite a los usuarios introducir códigos de promoción. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d allow_promotion_codes=true \ --data-urlencode "success_url=https://example.com/success" ``` ## Configura un código de promoción Para cada código de promoción, puedes personalizar los clientes que cumplen los requisitos, los canjes y otros límites. ### Limitar por cliente Para limitar una promoción a un determinado cliente, especifica un [cliente](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-customer) o [customer_account](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-customer_account) al crear el código de promoción. Si no se especifica un cliente, cualquier cliente podrá canjear el código. ### Limitar por primer pedido También puedes limitar el código de promoción a los clientes nuevos con el parámetro [restrictions.first_time_transaction](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-restrictions-first_time_transaction). Si el `customer` o `customer_account` no está definido, o si un `customer` o `customer_account` definidos no tiene pagos previos o *invoices* (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) no nulas, se considera una primera transacción. > Las sesiones que no dan lugar a la creación de un cliente generan, en su lugar, un [cliente invitado](https://docs.stripe.com/payments/checkout/guest-customers.md) en el Dashboard. Se siguen aceptando los códigos de promoción limitados a clientes nuevos para estas sesiones. ### Definir un importe mínimo Con códigos de promoción, puedes establecer un importe mínimo de transacción para descuentos aptos configurando [minimum_amount](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-restrictions-minimum_amount) y [minimum_amount_currency](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-restrictions-minimum_amount_currency). Dado que las restricciones del código de promoción se comprueban en el momento del canje, el importe mínimo de transacción solo se aplica al pago inicial de una suscripción. ### Personalizar los vencimientos Puedes definir la fecha de caducidad del código de promoción con [expires_at](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-expires_at). Si el cupón subyacente ya tiene definido `redeem_by`, la fecha de caducidad del código de promoción no puede ser posterior a la del cupón. Si no se especifica `promotion_code[expires_at]`, la opción `redeem_by` del cupón rellena automáticamente el valor de `expires_at`. Por ejemplo, podrías decidir que quieres aceptar un cupón durante un año, pero quieres que el cupón sea canjeable solo durante una semana a partir de la fecha en la que el cliente lo recibe. Puedes establecer `coupon[redeem_by]` en un año a partir de ahora y cada `promotion_code[expires_at]` en una semana después de su creación. ### Limitar los canjes Puedes limitar la cantidad de canjes usando [max_redemptions](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-max_redemptions), que funciona de manera similar al parámetro de cupón. Si el cupón subyacente ya tiene definido `max_redemptions`, entonces el valor `max_redemptions` para el código de promoción no puede ser mayor que el del cupón. Por ejemplo, si quieres que los primeros 50 clientes puedan canjear un cupón de venta de temporada, pero la promoción de invierno solo puede usar 20 de esos canjes, puedes definir `coupon[max_redemptions]: 50` y `promotion_code[max_redemptions]: 20`. ### Promociones inactivas Puedes definir si un código de promoción es canjeable en un determinado momento usando el parámetro [activo](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-active). Sin embargo, si el cupón subyacente de un código de promoción pierde su validez, todos sus códigos de promoción quedarán inactivos de forma permanente. Del mismo modo, si un código de promoción alcanza su `max_redemptions`o `expires_at`, quedará inactivo de forma permanente. Estos códigos de promoción no se pueden reactivar. ### Eliminar promociones Puedes eliminar promociones en el Dashboard o la API. La eliminación de una promoción impide que se aplique a futuras transacciones o clientes. # Página integrada completa > This is a Página integrada completa for when payment-ui is embedded-page. View the full page at https://docs.stripe.com/payments/checkout/discounts?payment-ui=embedded-page. Puedes usar descuentos para reducir el importe que se cobra a un cliente. Los cupones y los códigos de promoción te permiten: - Aplica un descuento al subtotal de una compra - Aplica un descuento a productos específicos - Reducir el total facturado conforme a un porcentaje o un importe fijo - Crear códigos de promoción para clientes sobre cupones para compartirlos directamente con ellos > Si quieres usar cupones para descontar *suscripciones* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis) con Checkout y Billing, consulta [Descuentos para suscripciones](https://docs.stripe.com/billing/subscriptions/coupons.md). ## Crear un cupón Los cupones especifican un descuento de valor fijo. Puedes crear códigos de promoción orientados al cliente que se asignen a un único cupón subyacente. Esto significa que los códigos `FALLPROMO` y `SPRINGPROMO` pueden indicar un cupón con descuento del 25 %. Puedes crear cupones en el [Dashboard](https://dashboard.stripe.com/coupons) o con la [API](https://docs.stripe.com/api.md#coupons): ```curl curl https://api.stripe.com/v1/coupons \ -u "<>:" \ -d percent_off=20 \ -d duration=once ``` ## Usa un cupón Para crear una sesión con un descuento aplicado, introduce el [ID del cupón](https://docs.stripe.com/api/coupons/object.md#coupon_object-id) en el parámetro `cupón` de la matriz [descuentos](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-discounts). Checkout Sessions es compatible con actualmente un máximo de un cupón o código promocional. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price]={{PRICE_ID}}" \ -d "line_items[0][quantity]=1" \ -d "discounts[0][coupon]={{COUPON_ID}}" \ -d mode=payment \ -d ui_mode=embedded_page \ --data-urlencode "return_url=https://example.com/checkout/return?session_id={CHECKOUT_SESSION_ID}" ``` ## Configura un cupón Los cupones tienen los siguientes parámetros que puedes usar: - `currency` - `percent_off` o `amount_off` - `max_redemptions` - `redeem_by`, la fecha límite que tienen los clientes para aplicar el cupón - `applies_to` limita los productos a los que se aplica el cupón > El objeto Coupon añade descuentos tanto a pagos únicos como a suscripciones. Algunos parámetros del objeto Coupon, como `duration`, solo se aplican a las [suscripciones](https://docs.stripe.com/billing/subscriptions/coupons.md). ### Limita el uso del canje Los valores de los parámetros `max_redemptions` y `redeem_by` se emplean en todas las aplicaciones del cupón. Por ejemplo, puedes restringir un cupón a los primeros 50 usos del mismo o puedes hacer que un cupón caduque en una fecha determinada. ### Limita los productos que cumplen los requisitos Puedes limitar los productos a los que se les pueden aplicar descuentos con un cupón añadiendo los ID de los productos al hash `applies_to` en el objeto Coupon. Todos los códigos de promoción que se asignen a este cupón solo se aplican a la lista de productos elegibles. ### Elimina un cupón Puedes eliminar cupones en el Dashboard o la API. La eliminación de un cupón impide que se aplique a futuras transacciones o clientes. ## Crear un código de promoción Los códigos de promoción son códigos creados además de los cupones que se pueden compartir con el cliente. También puedes especificar más restricciones para controlar cuándo un cliente puede aplicar la promoción. Puedes compartir estos códigos con clientes, quienes podrán introducirlos durante el Checkout para aplicar un descuento. Para crear un [código de promoción](https://docs.stripe.com/api/promotion_codes.md), especifica un `coupon` existente y cualquier restricción (por ejemplo, limitado a un determinado [cliente](https://docs.stripe.com/api/promotion_codes/object.md#promotion_code_object-customer) o [customer_account](https://docs.stripe.com/api/promotion_codes/object.md#promotion_code_object-customer_account)). Si tienes un código específico para ofrecerle a tu cliente (por ejemplo, `FALL25OFF`), establece el `code`. Si dejas este campo en blanco, generaremos un `code` aleatorio. El `code` reconoce mayúsculas y minúsculas y es único entre los códigos de promoción activos para cualquier cliente. Por ejemplo: - Puedes crear múltiples códigos de promoción restringidos a un cliente con el mismo `code`, pero no puedes reutilizar ese `code` para un código de promoción que pueda canjear cualquier cliente. - Si creas un código de promoción canjeable por cualquier cliente, no podrás crear otro código de promoción activo con el mismo `code`. - Puedes crear un código de promoción con `code: NEWUSER`, inactivarlo especificando `active: false` y, luego, crear un nuevo código de promoción con `code: NEWUSER`. Los códigos de promoción se pueden crear en la sección de cupones del [Dashboard](https://dashboard.stripe.com/coupons/create) o con la [API](https://docs.stripe.com/api.md#promotion_codes): ```curl curl https://api.stripe.com/v1/promotion_codes \ -u "<>:" \ -d coupon={{COUPON_ID}} \ -d code=VIPCODE ``` ## Usa un código de promoción Habilita los códigos de promoción canjeables por el usuario utilizando el parámetro [allow_promotion_codes](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-allow_promotion_codes) en una Checkout Session. Esto habilita un campo en Checkout que permite a los usuarios introducir códigos de promoción. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price_data][unit_amount]=2000" \ -d "line_items[0][price_data][product_data][name]=T-shirt" \ -d "line_items[0][price_data][currency]=usd" \ -d "line_items[0][quantity]=1" \ -d mode=payment \ -d ui_mode=embedded_page \ -d allow_promotion_codes=true \ --data-urlencode "return_url=https://example.com/checkout/return?session_id={CHECKOUT_SESSION_ID}" ``` ## Configura un código de promoción Para cada código de promoción, puedes personalizar los clientes que cumplen los requisitos, los canjes y otros límites. ### Limitar por cliente Para limitar una promoción a un determinado cliente, especifica un [cliente](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-customer) o [customer_account](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-customer_account) al crear el código de promoción. Si no se especifica un cliente, cualquier cliente podrá canjear el código. ### Limitar por primer pedido También puedes limitar el código de promoción a los clientes nuevos con el parámetro [restrictions.first_time_transaction](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-restrictions-first_time_transaction). Si el `customer` o `customer_account` no está definido, o si un `customer` o `customer_account` definidos no tiene pagos previos o *invoices* (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) no nulas, se considera una primera transacción. > Las sesiones que no dan lugar a la creación de un cliente generan, en su lugar, un [cliente invitado](https://docs.stripe.com/payments/checkout/guest-customers.md) en el Dashboard. Se siguen aceptando los códigos de promoción limitados a clientes nuevos para estas sesiones. ### Definir un importe mínimo Con códigos de promoción, puedes establecer un importe mínimo de transacción para descuentos aptos configurando [minimum_amount](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-restrictions-minimum_amount) y [minimum_amount_currency](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-restrictions-minimum_amount_currency). Dado que las restricciones del código de promoción se comprueban en el momento del canje, el importe mínimo de transacción solo se aplica al pago inicial de una suscripción. ### Personalizar los vencimientos Puedes definir la fecha de caducidad del código de promoción con [expires_at](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-expires_at). Si el cupón subyacente ya tiene definido `redeem_by`, la fecha de caducidad del código de promoción no puede ser posterior a la del cupón. Si no se especifica `promotion_code[expires_at]`, la opción `redeem_by` del cupón rellena automáticamente el valor de `expires_at`. Por ejemplo, podrías decidir que quieres aceptar un cupón durante un año, pero quieres que el cupón sea canjeable solo durante una semana a partir de la fecha en la que el cliente lo recibe. Puedes establecer `coupon[redeem_by]` en un año a partir de ahora y cada `promotion_code[expires_at]` en una semana después de su creación. ### Limitar los canjes Puedes limitar la cantidad de canjes usando [max_redemptions](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-max_redemptions), que funciona de manera similar al parámetro de cupón. Si el cupón subyacente ya tiene definido `max_redemptions`, entonces el valor `max_redemptions` para el código de promoción no puede ser mayor que el del cupón. Por ejemplo, si quieres que los primeros 50 clientes puedan canjear un cupón de venta de temporada, pero la promoción de invierno solo puede usar 20 de esos canjes, puedes definir `coupon[max_redemptions]: 50` y `promotion_code[max_redemptions]: 20`. ### Promociones inactivas Puedes definir si un código de promoción es canjeable en un determinado momento usando el parámetro [activo](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-active). Sin embargo, si el cupón subyacente de un código de promoción pierde su validez, todos sus códigos de promoción quedarán inactivos de forma permanente. Del mismo modo, si un código de promoción alcanza su `max_redemptions`o `expires_at`, quedará inactivo de forma permanente. Estos códigos de promoción no se pueden reactivar. ### Eliminar promociones Puedes eliminar promociones en el Dashboard o la API. La eliminación de una promoción impide que se aplique a futuras transacciones o clientes.