> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Descontos

> Crie códigos promocionais para impulsionar conversões, realizar campanhas e recompensar clientes com descontos percentuais em compras únicas e de assinatura.

<Frame>
  <img src="https://mintcdn.com/dodopayments/mOQO5ej_lx0yH9p-/images/discount-codes/discount-code-cover.png?fit=max&auto=format&n=mOQO5ej_lx0yH9p-&q=85&s=57f1a644801ddc5efc506b50541eaaba" alt="Visão geral da capa dos códigos de desconto" style={{ maxHeight: '500px', width: 'auto' }} width="1200" height="630" data-path="images/discount-codes/discount-code-cover.png" />
</Frame>

Os códigos de desconto permitem que você execute promoções e incentivos direcionados. Crie descontos percentuais, defina limites e expirações, restrinja a produtos e aplique-os facilmente no checkout.

<CardGroup cols={2}>
  <Card title="Sessões de Checkout" icon="cart-shopping" href="/developer-resources/checkout-session">
    Aplique códigos durante o checkout hospedado com `discount_code` e controles de UI.
  </Card>

  <Card title="Validar Desconto" icon="code" href="/api-reference/discounts/validate-discount">
    Verifique se um desconto é válido pelo seu ID.
  </Card>

  <Card title="Obter Desconto pelo Código" icon="tag" href="/api-reference/discounts/get-discount-by-code">
    Procure e valide um desconto usando seu código (por exemplo, "SAVE20").
  </Card>

  <Card title="Criar Desconto (API)" icon="code" href="/api-reference/discounts/create-discount">
    Crie códigos de desconto novos programaticamente.
  </Card>

  <Card title="Listar & Atualizar Descontos" icon="code" href="/api-reference/discounts/list-discounts">
    Navegue e gerencie descontos existentes; atualize ou exclua conforme necessário.
  </Card>
</CardGroup>

## O que são Códigos de Desconto?

Códigos de desconto são tokens promocionais que reduzem os totais de pedidos no checkout. Eles são ideais para:

* **Campanhas sazonais**: Black Friday, lançamentos de produtos ou aniversários
* **Ofertas de aquisição**: Incentivos para primeira compra ou recompensas de indicação
* **Retenção**: Recompensas de recuperação ou fidelidade para clientes existentes
* **Negócios B2B**: Preços contratados ou negociados via códigos privados

## Principais Benefícios

* **Descontos flexíveis**: Percentual ou valor fixo de desconto

* **Controle direcionado**: Restringir por produto e ciclos de assinatura

* **Governança de campanha**: Datas de expiração e limites de uso

* **Checkout sem interrupções**: Suporte a campo de UI e API via sessões de checkout

* **Descontos flexíveis**: Descontos baseados em porcentagem

* **Códigos acumuláveis**: Aplique até 20 códigos por checkout, pagamento ou assinatura — combine campanhas (e.g. `WELCOME10` + `BLACKFRIDAY20`) sem criar códigos personalizados

* **Controle direcionado**: Restrinja por produto e ciclos de assinatura

* **Governança de campanha**: Datas de expiração e limites de uso

* **Checkout sem interrupções**: Suporte para campo de interface e API por meio de sessões de checkout

Crie códigos de desconto no seu painel do Dodo Payments e, em seguida, aplique-os no checkout hospedado ou via API.

### Configuração do Painel

* **Nome do Desconto** (obrigatório): Nome interno e de exibição no painel

* **Código** (obrigatório): A string que os clientes inserem no checkout

* **Tipo & Valor** (obrigatório): Defina um valor percentual ou fixo, ou gere um código aleatório usando o botão fornecido

* **Data de Expiração** (opcional): Data após a qual o código se torna inválido

* **Limite de Uso** (opcional): Máximo total de resgates entre todos os clientes

* **Restrição de Produto** (opcional): Limitar a aplicabilidade a produtos selecionados

* **Limite de Ciclo de Assinatura** (opcional): Número de ciclos de cobrança aos quais o desconto se aplica

* **Nome do Desconto** (obrigatório): Nome exibido internamente e no painel

* **Código** (obrigatório): A string que os clientes inserem no checkout

* **Tipo e Quantidade** (obrigatório): Defina um valor percentual (apenas descontos baseados em porcentagem são suportados atualmente) ou gere um código aleatório usando o botão fornecido

* **Data de Expiração** (opcional): Data após a qual o código se torna inválido

* **Limite de Uso** (opcional): Máximo de resgates totais entre todos os clientes

* **Restrição de Produto** (opcional): Limite a aplicabilidade a produtos selecionados

* **Limite de Ciclo de Assinatura** (opcional): Número de ciclos de cobrança aos quais o desconto se aplica

* **Metadados** (opcional): Anexe pares de chave-valor personalizados para rastreamento interno ou integrações

## Experiência de Checkout

1. Os compradores inserem o código no campo de checkout.
2. Descontos elegíveis são aplicados e os totais são atualizados imediatamente.

<Info>
  Nas Sessões de Checkout, passe `discount_code` para pré-aplicar um código e defina `feature_flags.allow_discount_code` para mostrar o campo de entrada.
</Info>

## Gerenciamento de API

<AccordionGroup>
  <Accordion title="Criar descontos">
    Crie códigos de desconto programaticamente com tipo e valor.

    <Card title="Referência da API" icon="code" href="/api-reference/discounts/create-discount">
      Veja a API para criar desconto.
    </Card>
  </Accordion>

  <Accordion title="Listar e recuperar">
    Liste todos os descontos ou recupere detalhes para gerenciamento e auditoria.

    <Card title="Referência da API" icon="code" href="/api-reference/discounts/list-discounts">
      Navegue pelas APIs de listagem e recuperação.
    </Card>
  </Accordion>

  <Accordion title="Obter desconto pelo código">
    Procure um desconto usando seu código legível por humanos (por exemplo, "SAVE20") em vez do ID interno.

    <Card title="Referência da API" icon="code" href="/api-reference/discounts/get-discount-by-code">
      Recupere desconto pelo nome do código.
    </Card>
  </Accordion>

  <Accordion title="Atualizar descontos">
    Modifique a configuração do desconto, como valor, expiração ou restrições.

    <Card title="Referência da API" icon="code" href="/api-reference/discounts/update-discount">
      Saiba como atualizar os detalhes do desconto.
    </Card>
  </Accordion>

  <Accordion title="Validar descontos">
    Verifique se um desconto é válido e aplicável antes de aplicar.

    <Card title="Referência da API" icon="code" href="/api-reference/discounts/validate-discount">
      Valide o uso do desconto.
    </Card>
  </Accordion>

  <Accordion title="Excluir descontos">
    Desative ou remova descontos que não são mais necessários.

    <Card title="Referência da API" icon="code" href="/api-reference/discounts/delete-discount">
      Exclua um desconto.
    </Card>
  </Accordion>
</AccordionGroup>

## Casos de Uso Comuns

* **Ofertas introdutórias**: Promoções de lançamento por tempo limitado para novos produtos
* **Descontos em massa ou B2B**: Descontos contratados para conjuntos de produtos selecionados
* **Jogadas de retenção**: Códigos de recuperação em fluxos de prevenção de churn
* **Campanhas sazonais**: Promoções baseadas em feriados ou eventos

## Exemplos de Integração

### Aplique um desconto nas Sessões de Checkout

Pré-aplique um desconto e mostre a interface de entrada do código.

### Criar um desconto com metadados

Anexe pares de chave-valor personalizados para rastreamento interno.

```typescript theme={null}
const discount = await client.discounts.create({
  type: 'percentage',
  amount: 1500, // 15%
  code: 'SUMMER2025',
  metadata: {
    campaign: 'summer_promo',
    source: 'email_blast'
  }
});
```

<Tip>
  Use metadados para marcar descontos por campanha, fonte ou ID de referência interna para que você possa conciliar o uso e medir o ROI posteriormente.
</Tip>

### Aplicar um desconto em Sessões de Checkout

Pré-aplique um desconto e mostre a interface de entrada de código.

```typescript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  discount_code: 'BLACKFRIDAY2024',
  customer: { email: 'user@example.com', name: 'Jane Doe' },
  return_url: 'https://yoursite.com/return'
});
```

### Aplicar um desconto durante mudanças de plano

Ofereça preços promocionais quando os clientes fizerem upgrade ou downgrade de sua assinatura.

```typescript theme={null}
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'prorated_immediately',
  discount_code: 'UPGRADE20'
});
```

<Info>
  Se a assinatura já tiver um desconto com `preserve_on_plan_change=true` e você não passar um novo código, o desconto existente é automaticamente preservado quando aplicável ao novo produto.
</Info>

### Permitir entrada de desconto sem pré-aplicação

Deixe os clientes inserirem um código no checkout sem passar um previamente.

```typescript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  feature_flags: {
    allow_discount_code: true
  },
  return_url: 'https://yoursite.com/return'
});
```

## Melhores Práticas

* **Nomeie claramente**: Use códigos reconhecíveis que correspondam aos nomes das campanhas
* **Delimite o tempo**: Adicione expirações para gerar urgência e evitar abusos
* **Delimite com sabedoria**: Limite a produtos específicos para evitar vazamentos de margem
* **Valide cedo**: Verifique a aplicabilidade do código antes de confirmar o checkout
* **Monitore o impacto**: Acompanhe o uso e a conversão por campanha

<Info>
  Códigos de desconto são alavancas poderosas para aquisição e retenção. Comece com ofertas simples e bem nomeadas, valide minuciosamente e itere com base no desempenho.
</Info>

### Permitir entrada de desconto sem pré-aplicação

Permita que os clientes insiram um código no checkout sem informar um previamente.

```typescript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  feature_flags: {
    allow_discount_code: true
  },
  return_url: 'https://yoursite.com/return'
});
```

## Melhores Práticas

* **Nomeie claramente**: Use códigos reconhecíveis que correspondam aos nomes das campanhas
* **Delimite tempo**: Adicione expirações para criar urgência e prevenir uso indevido
* **Defina o escopo sabiamente**: Limite a produtos específicos para evitar perda de margem
* **Valide cedo**: Verifique a aplicabilidade do código antes de confirmar o checkout
* **Monitore o impacto**: Acompanhe uso e conversão por campanha

<Info>
  Códigos de desconto são alavancas poderosas para aquisição e retenção. Comece com ofertas simples e bem nomeadas, valide cuidadosamente e itere com base no desempenho.
</Info>
