# Adicione descontos

Reduza o valor cobrado de um cliente, descontando do subtotal com cupons ou códigos promocionais.

# Página hospedada

> This is a Página hospedada for when payment-ui is stripe-hosted. View the full page at https://docs.stripe.com/payments/checkout/discounts?payment-ui=stripe-hosted.

Você pode usar descontos para reduzir o valor cobrado de um cliente. Os cupons e códigos promocionais permitem:

- Aplicar um desconto a um subtotal da compra
- Aplicar um desconto a produtos específicos
- Reduzir uma porcentagem ou um valor fixo do total cobrado
- Criar códigos promocionais para o cliente, além de cupons a serem oferecidos diretamente ao cliente

> Para usar cupons para dar descontos em *assinaturas* (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) no Checkout e no Billing, consulte [Descontos para assinaturas](https://docs.stripe.com/billing/subscriptions/coupons.md).

## Criar um cupom

Os cupons especificam um valor fixo de desconto. Você pode criar códigos promocionais para os clientes associados a um único cupom. Isso significa que os códigos `FALLPROMO` e `SPRINGPROMO` podem apontar para um único cupom de 25% de desconto. Você pode criar cupons no [Dashboard](https://dashboard.stripe.com/coupons) ou com a [API](https://docs.stripe.com/api.md#coupons):

```curl
curl https://api.stripe.com/v1/coupons \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d percent_off=20 \
  -d duration=once
```

## Usar um cupom

Para criar uma sessão com um desconto aplicado, passe o [ID do cupom](https://docs.stripe.com/api/coupons/object.md#coupon_object-id) no parâmetro `coupon` do array [discounts](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-discounts). Atualmente, as Checkout Sessions oferecem suporte a até um cupom ou código promocional.

```curl
curl https://api.stripe.com/v1/checkout/sessions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -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"
```

## Configurar um cupom

Os cupons têm os seguintes parâmetros que você pode usar:

- `currency`
- `percent_off` ou `amount_off`
- `max_redemptions`
- `redeem_by`, a data mais recente à qual os clientes podem aplicar o cupom
- `applies_to`, limita os produtos aos quais o cupom pode ser aplicado

> O objeto Coupon adiciona descontos a pagamentos avulsos e assinaturas. Alguns parâmetros do objeto Coupon, como `duration`, se aplicam apenas a [assinaturas](https://docs.stripe.com/billing/subscriptions/coupons.md).

### Limitar o uso de resgates

Os valores `max_redemptions` e `redeem_by` aplicam-se ao cupom em todos os aplicativos. Por exemplo, você pode restringir um cupom aos primeiros 50 usos, ou fazer com que expire em uma data determinada.

### Limitar os produtos elegíveis

Você pode limitar os produtos elegíveis para desconto com o cupom, acrescentando os IDs de produtos ao hash `applies_to` no objeto Coupon. Todos os códigos promocionais mapeados para este cupom se aplicam apenas à lista de produtos qualificados.

### Excluir um cupom

Você pode excluir cupons no Dashboard ou na API. A exclusão de um cupom impede que ele seja aplicado a futuras transações ou clientes.

## Criar um código promocional

Códigos promocionais são destinados aos clientes e são criados a partir de cupons. Você pode especificar outras restrições que controlam quando um cliente pode aplicar a promoção. Você pode enviar os códigos aos clientes, que podem inseri-los no checkout para aplicar um desconto.

Para criar um [código promocional](https://docs.stripe.com/api/promotion_codes.md), especifique um `cupom` existente e as restrições (por exemplo, limitando-o a um [cliente](https://docs.stripe.com/api/promotion_codes/object.md#promotion_code_object-customer) específico ou [customer_account](https://docs.stripe.com/api/promotion_codes/object.md#promotion_code_object-customer_account)). Se você tiver um código específico para dar ao seu cliente (por exemplo, `FALL25OFF`), defina o `código`. Se você deixar este campo em branco, geraremos um `código` aleatório para você.

O `code` não diferencia maiúsculas de minúsculas e é exclusivo dentre todos os códigos de promoção ativos para qualquer cliente. Por exemplo:

- Você pode criar vários códigos promocionais restritos a determinados clientes usando o mesmo `code`, mas não pode reutilizar esse `code` em uma promoção resgatável por qualquer cliente.
- Se você criar um código promocional resgatável por qualquer cliente, não será possível criar outro código promocional ativo com o mesmo `code`.
- Você pode criar um código promocional com `code: NEWUSER`, inativá-lo com o parâmetro `active: false` e criar um novo código promocional com `code: NEWUSER`.

Os códigos promocionais podem ser criados na seção de cupons do [Dashboard](https://dashboard.stripe.com/coupons/create) ou com a [API](https://docs.stripe.com/api.md#promotion_codes):

```curl
curl https://api.stripe.com/v1/promotion_codes \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d coupon={{COUPON_ID}} \
  -d code=VIPCODE
```

## Usar um código promocional

Ative códigos promocionais resgatáveis pelo cliente com o parâmetro [allow_promotion_codes](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-allow_promotion_codes) em uma Sessão do Checkout. Isso habilita um campo no Checkout que permite que os clientes insiram códigos promocionais.

```curl
curl https://api.stripe.com/v1/checkout/sessions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -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"
```

## Configurar um código promocional

Para cada código promocional, você pode personalizar clientes e resgates qualificados e outros limites.

### Limitar por cliente

Para limitar uma promoção a um cliente específico, especifique um [customer](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-customer) ou [customer_account](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-customer_account) ao criar o código promocional. Se nenhum cliente for especificado, o código poderá ser resgatado por qualquer cliente.

### Limitar por primeiro pedido

Você também pode limitar o código promocional aos novos clientes com [restrictions.first_time_transaction](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-restrictions-first_time_transaction). Se um `customer` ou `customer_account` não for definida, ou se um `customer` ou `customer_account` definido não tiver pagamentos ou *faturas* (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) inválidas, será considerada uma primeira transação.

> Sessões que não criam um cliente criam em vez disso um [cliente convidado](https://docs.stripe.com/payments/checkout/guest-customers.md) no Dashboard. Códigos promocionais limitados a novos clientes ainda são aceitos para essas sessões.

### Definir um valor mínimo

Com códigos promocionais, você pode definir um valor mínimo de transação para desconto qualificado configurando [minimum_amount](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-restrictions-minimum_amount) e [minimum_amount_currency](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-restrictions-minimum_amount_currency). Como as restrições por código promocional são verificadas no momento do resgate, o valor mínimo da transação se aplica somente ao pagamento inicial de uma assinatura.

### Personalizar validades

Você pode configurar uma data de validade para o código promocional usando [expires_at](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-expires_at). Se o cupom correspondente já tiver a configuração `redeem_by`, a data de validade do código promocional não pode ser posterior à do cupom. Se `promotion_code[expires_at]` não for especificado, a data `redeem_by` do cupom preencherá `expires_at` automaticamente.

Por exemplo, você pretende aceitar um cupom por um ano, mas quer que ele seja resgatado pelo cliente no máximo uma semana após o recebimento. Você pode definir `coupon[redeem_by]` com a data de daqui a um ano e definir cada `promotion_code[expires_at]` uma semana após a criação.

### Limitar resgates

Você pode limitar o número de resgates usando [max_redemptions](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-max_redemptions), que funciona de forma semelhante ao parâmetro do cupom. Se o cupom correspondente já tiver a configuração `max_redemptions`, o `max_redemptions` do código promocional não pode ser maior do que o do cupom.

Por exemplo, você tem um cupom de liquidação de estação válido para os primeiros 50 clientes, mas a promoção de inverno só pode usar 20 desses resgates. Nesse caso, você pode definir `coupon[max_redemptions]: 50` e `promotion_code[max_redemptions]: 20`.

### Promoções inativas

Você pode definir se um código promocional está resgatável com o parâmetro [active](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-active). Mas se o cupom correspondente a um código promocional ficar inválido, todos os seus códigos promocionais serão permanentemente desativados. Da mesma forma, se um código promocional atingir o valor de `max_redemptions` ou o prazo `expires_at`, ele será permanentemente desativado. Não é possível reativar esses códigos promocionais.

### Excluir promoções

Você pode excluir promoções no Dashboard ou na API. A exclusão de uma promoção impede que ela seja aplicada a futuras transações ou clientes.


# Página integrada

> This is a Página integrada for when payment-ui is embedded-form. View the full page at https://docs.stripe.com/payments/checkout/discounts?payment-ui=embedded-form.

Você pode usar descontos para reduzir o valor cobrado de um cliente. Os cupons e códigos promocionais permitem:

- Aplicar um desconto a um subtotal da compra
- Aplicar um desconto a produtos específicos
- Reduzir uma porcentagem ou um valor fixo do total cobrado
- Criar códigos promocionais para o cliente, além de cupons a serem oferecidos diretamente ao cliente

> Para usar cupons para dar descontos em *assinaturas* (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) no Checkout e no Billing, consulte [Descontos para assinaturas](https://docs.stripe.com/billing/subscriptions/coupons.md).

## Criar um cupom

Os cupons especificam um valor fixo de desconto. Você pode criar códigos promocionais para os clientes associados a um único cupom. Isso significa que os códigos `FALLPROMO` e `SPRINGPROMO` podem apontar para um único cupom de 25% de desconto. Você pode criar cupons no [Dashboard](https://dashboard.stripe.com/coupons) ou com a [API](https://docs.stripe.com/api.md#coupons):

```curl
curl https://api.stripe.com/v1/coupons \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d percent_off=20 \
  -d duration=once
```

## Usar um cupom

Para criar uma sessão com um desconto aplicado, passe o [ID do cupom](https://docs.stripe.com/api/coupons/object.md#coupon_object-id) no parâmetro `coupon` do array [discounts](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-discounts). Atualmente, as Checkout Sessions oferecem suporte a até um cupom ou código promocional.

```curl
curl https://api.stripe.com/v1/checkout/sessions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -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}"
```

## Configurar um cupom

Os cupons têm os seguintes parâmetros que você pode usar:

- `currency`
- `percent_off` ou `amount_off`
- `max_redemptions`
- `redeem_by`, a data mais recente à qual os clientes podem aplicar o cupom
- `applies_to`, limita os produtos aos quais o cupom pode ser aplicado

> O objeto Coupon adiciona descontos a pagamentos avulsos e assinaturas. Alguns parâmetros do objeto Coupon, como `duration`, se aplicam apenas a [assinaturas](https://docs.stripe.com/billing/subscriptions/coupons.md).

### Limitar o uso de resgates

Os valores `max_redemptions` e `redeem_by` aplicam-se ao cupom em todos os aplicativos. Por exemplo, você pode restringir um cupom aos primeiros 50 usos, ou fazer com que expire em uma data determinada.

### Limitar os produtos elegíveis

Você pode limitar os produtos elegíveis para desconto com o cupom, acrescentando os IDs de produtos ao hash `applies_to` no objeto Coupon. Todos os códigos promocionais mapeados para este cupom se aplicam apenas à lista de produtos qualificados.

### Excluir um cupom

Você pode excluir cupons no Dashboard ou na API. A exclusão de um cupom impede que ele seja aplicado a futuras transações ou clientes.

## Criar um código promocional

Códigos promocionais são destinados aos clientes e são criados a partir de cupons. Você pode especificar outras restrições que controlam quando um cliente pode aplicar a promoção. Você pode enviar os códigos aos clientes, que podem inseri-los no checkout para aplicar um desconto.

Para criar um [código promocional](https://docs.stripe.com/api/promotion_codes.md), especifique um `cupom` existente e as restrições (por exemplo, limitando-o a um [cliente](https://docs.stripe.com/api/promotion_codes/object.md#promotion_code_object-customer) específico ou [customer_account](https://docs.stripe.com/api/promotion_codes/object.md#promotion_code_object-customer_account)). Se você tiver um código específico para dar ao seu cliente (por exemplo, `FALL25OFF`), defina o `código`. Se você deixar este campo em branco, geraremos um `código` aleatório para você.

O `code` não diferencia maiúsculas de minúsculas e é exclusivo dentre todos os códigos de promoção ativos para qualquer cliente. Por exemplo:

- Você pode criar vários códigos promocionais restritos a determinados clientes usando o mesmo `code`, mas não pode reutilizar esse `code` em uma promoção resgatável por qualquer cliente.
- Se você criar um código promocional resgatável por qualquer cliente, não será possível criar outro código promocional ativo com o mesmo `code`.
- Você pode criar um código promocional com `code: NEWUSER`, inativá-lo com o parâmetro `active: false` e criar um novo código promocional com `code: NEWUSER`.

Os códigos promocionais podem ser criados na seção de cupons do [Dashboard](https://dashboard.stripe.com/coupons/create) ou com a [API](https://docs.stripe.com/api.md#promotion_codes):

```curl
curl https://api.stripe.com/v1/promotion_codes \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d coupon={{COUPON_ID}} \
  -d code=VIPCODE
```

## Usar um código promocional

Ative códigos promocionais resgatáveis pelo cliente com o parâmetro [allow_promotion_codes](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-allow_promotion_codes) em uma Sessão do Checkout. Isso habilita um campo no Checkout que permite que os clientes insiram códigos promocionais.

```curl
curl https://api.stripe.com/v1/checkout/sessions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -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}"
```

## Configurar um código promocional

Para cada código promocional, você pode personalizar clientes e resgates qualificados e outros limites.

### Limitar por cliente

Para limitar uma promoção a um cliente específico, especifique um [customer](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-customer) ou [customer_account](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-customer_account) ao criar o código promocional. Se nenhum cliente for especificado, o código poderá ser resgatado por qualquer cliente.

### Limitar por primeiro pedido

Você também pode limitar o código promocional aos novos clientes com [restrictions.first_time_transaction](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-restrictions-first_time_transaction). Se um `customer` ou `customer_account` não for definida, ou se um `customer` ou `customer_account` definido não tiver pagamentos ou *faturas* (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) inválidas, será considerada uma primeira transação.

> Sessões que não criam um cliente criam em vez disso um [cliente convidado](https://docs.stripe.com/payments/checkout/guest-customers.md) no Dashboard. Códigos promocionais limitados a novos clientes ainda são aceitos para essas sessões.

### Definir um valor mínimo

Com códigos promocionais, você pode definir um valor mínimo de transação para desconto qualificado configurando [minimum_amount](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-restrictions-minimum_amount) e [minimum_amount_currency](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-restrictions-minimum_amount_currency). Como as restrições por código promocional são verificadas no momento do resgate, o valor mínimo da transação se aplica somente ao pagamento inicial de uma assinatura.

### Personalizar validades

Você pode configurar uma data de validade para o código promocional usando [expires_at](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-expires_at). Se o cupom correspondente já tiver a configuração `redeem_by`, a data de validade do código promocional não pode ser posterior à do cupom. Se `promotion_code[expires_at]` não for especificado, a data `redeem_by` do cupom preencherá `expires_at` automaticamente.

Por exemplo, você pretende aceitar um cupom por um ano, mas quer que ele seja resgatado pelo cliente no máximo uma semana após o recebimento. Você pode definir `coupon[redeem_by]` com a data de daqui a um ano e definir cada `promotion_code[expires_at]` uma semana após a criação.

### Limitar resgates

Você pode limitar o número de resgates usando [max_redemptions](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-max_redemptions), que funciona de forma semelhante ao parâmetro do cupom. Se o cupom correspondente já tiver a configuração `max_redemptions`, o `max_redemptions` do código promocional não pode ser maior do que o do cupom.

Por exemplo, você tem um cupom de liquidação de estação válido para os primeiros 50 clientes, mas a promoção de inverno só pode usar 20 desses resgates. Nesse caso, você pode definir `coupon[max_redemptions]: 50` e `promotion_code[max_redemptions]: 20`.

### Promoções inativas

Você pode definir se um código promocional está resgatável com o parâmetro [active](https://docs.stripe.com/api/promotion_codes/create.md#create_promotion_code-active). Mas se o cupom correspondente a um código promocional ficar inválido, todos os seus códigos promocionais serão permanentemente desativados. Da mesma forma, se um código promocional atingir o valor de `max_redemptions` ou o prazo `expires_at`, ele será permanentemente desativado. Não é possível reativar esses códigos promocionais.

### Excluir promoções

Você pode excluir promoções no Dashboard ou na API. A exclusão de uma promoção impede que ela seja aplicada a futuras transações ou clientes.

