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

# Produtos e Ofertas

> O modelo que dá a régua de preços, o link de checkout pronto e a assinatura por API. Um produto agrupa ofertas; a oferta é o que o cliente compra.

Produtos e ofertas são o jeito de montar o que você vende uma vez e reaproveitar. Você cria o produto (a vitrine), pendura nele uma ou mais **ofertas**, e cada oferta já nasce com uma **URL de checkout pronta** para compartilhar. Não existe "plano avulso": a régua de preços mora na oferta.

## O modelo em uma frase

**Produto** agrupa **ofertas**. Cada **oferta** é única (pagamento uma vez) ou recorrente (assinatura com régua de preços). Cada oferta tem um `checkout_url` próprio.

<CardGroup cols={2}>
  <Card title="Produto" icon="box">
    A vitrine: nome, descrição, imagem. Sozinho não cobra nada; ele reúne as ofertas.
  </Card>

  <Card title="Oferta" icon="tag">
    O que o cliente compra. `one_time` (um preço) ou `recurring` (assinatura com régua). Tem `checkout_url`.
  </Card>
</CardGroup>

## Os dois tipos de oferta

<ParamField body="one_time" type="oferta">
  Cobrança única. Um `amount` em centavos. O `checkout_url` leva a um checkout de pagamento avulso (`/c/{hash}`).
</ParamField>

<ParamField body="recurring" type="oferta">
  Assinatura. Um `interval` (`monthly`, `quarterly`, `half-yearly`, `yearly`) e uma **régua de ciclos** (`cycles`). O `checkout_url` leva a um checkout de assinatura (`/s/{hash}`).
</ParamField>

## A régua de preços (cycles)

A régua é o coração da oferta recorrente. Ela diz **quanto cobrar em cada ciclo**, por faixas. Isso vai muito além de "desconto no primeiro mês": você desenha qualquer escada de preços.

```json theme={null}
"cycles": [
  { "start": 1, "end": 3, "amount": 10000 },
  { "start": 4, "end": null, "amount": 12000 }
]
```

O exemplo acima cobra **R$ 100,00 nos ciclos 1 a 3** e **R$ 120,00 do ciclo 4 em diante**. A régua segue regras simples para nunca ter buraco:

* Começa no **ciclo 1**.
* É **contígua**: cada faixa começa onde a anterior terminou (`end + 1`).
* **Não se sobrepõe**, e cada faixa tem `start <= end`.
* Só a **última** faixa pode ser aberta (`end: null` = "em diante").

<Info>
  A régua **congela na assinatura** no momento em que o cliente assina. Editar a oferta depois muda só quem assinar dali para frente: **nunca reprecifica quem já é assinante**. Por isso reescrever a régua é seguro.
</Info>

## Como o cliente paga

Toda oferta devolve um `checkout_url` pronto. Você tem três caminhos, e todos falam o mesmo modelo:

<Steps>
  <Step title="Compartilhe o checkout_url da oferta">
    O jeito mais direto. O comprador abre o link, informa os próprios dados e paga. Nada mais a integrar.
  </Step>

  <Step title="Seletor de planos (opcional)">
    Ligue `show_plan_selector` no produto e ele ganha um `selector_url` (`/s/p/{hash}`) que mostra **todas as ofertas recorrentes** lado a lado, para o cliente escolher.
  </Step>

  <Step title="Headless por offer_id">
    Se você já tem os dados do cliente e do cartão, crie a assinatura direto em [`POST /charges/subscriptions`](/api-reference/subscriptions/create-subscription) passando `offer_id`. A assinatura herda a régua e o intervalo da oferta.
  </Step>
</Steps>

## Próximos passos

<CardGroup cols={2}>
  <Card title="Criar produto" icon="plus" href="/api-reference/products/create-product">
    `POST /v1/products`
  </Card>

  <Card title="Criar oferta (com régua)" icon="layer-group" href="/api-reference/products/create-offer">
    `POST /v1/products/{id}/offers`
  </Card>

  <Card title="Gerenciar ofertas" icon="pen" href="/api-reference/products/manage-offer">
    Editar, arquivar e restaurar
  </Card>

  <Card title="Assinar por offer_id" icon="repeat" href="/api-reference/subscriptions/create-subscription">
    Headless via API
  </Card>
</CardGroup>
