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

# Ofertas

> Criar e editar ofertas: preço, formas de pagamento e recorrência

A oferta é o que o comprador paga: preço, formas de pagamento e, nas assinaturas, a recorrência. Todo produto precisa de pelo menos uma **oferta de entrada** (`ENTRY`) para ser vendido.

## Criar oferta

```
POST /checkout
```

| Campo | Tipo | Descrição |
| - | - | - |
| `productId` | UUID | **Obrigatório.** Produto da oferta. |
| `name` | texto | **Obrigatório.** Nome da oferta. |
| `checkoutType` | texto | **Obrigatório.** `ENTRY` (entrada), `UPSELL`, `DOWNSELL` ou `ORDERBUMP`. |
| `paymentType` | texto | **Obrigatório.** `TRANSACTION` (pagamento único) ou `SUBSCRIPTION` (assinatura). |
| `amount` | centavos | **Obrigatório.** Preço. Mínimo `500` (R\$ 5,00). |
| `checkoutPaymentType` | texto | Formas de pagamento aceitas, separadas por vírgula: `PIX`, `BANK_SLIP` (boleto), `CREDIT`. Ex.: `"PIX, CREDIT"`. Boleto só em `TRANSACTION`. Em `ORDERBUMP` deixe `null`: o comprador paga junto com a oferta principal. |
| `recurrence` | texto | Só em `SUBSCRIPTION`: `MONTHLY`, `QUARTERLY`, `SEMIANNUAL` ou `YEARLY`. |
| `installments` | número | Máximo de parcelas no cartão, de 1 a 12. Na assinatura o limite depende da recorrência: mensal 1, trimestral 3, semestral 6, anual 12. |
| `isInterestFree` | sim/não | Parcelamento sem juros para o comprador. |
| `amountAnchoring` | centavos | Preço "de", mostrado riscado ao lado do preço. |
| `subscriptionMaxCycles` | número | Número máximo de cobranças da assinatura. `0` = sem limite. |
| `pixExpirationTimeHour` | número | Validade do Pix, de 1 a 24 horas. |
| `bankSlipExpiration` | número | Validade do boleto, de 1 a 5 dias. |
| `checkoutLayoutType` | texto | Layout do checkout: `COMPACT` (padrão) ou `FULL`. |
| `addressEnabled` | sim/não | Pede o endereço do comprador. |
| `allowRepeatEmail` | sim/não | Deixa o mesmo e-mail comprar mais de uma vez. |
| `countdown` | número | Cronômetro de escassez no checkout. |
| `mainBanner`, `sideBanner` | texto | URLs dos banners do checkout. |
| `description` | texto | Descrição da oferta. |

```bash curl theme={null}
curl -X POST https://bff.assiny.com.br/v1/public/checkout \
  -H "Authorization: Bearer SUA_CHAVE" \
  -H "ProjectId: SEU_PROJECT_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "productId": "ID_DO_PRODUTO",
    "name": "Assinatura mensal",
    "checkoutType": "ENTRY",
    "paymentType": "SUBSCRIPTION",
    "recurrence": "MONTHLY",
    "amount": 4990,
    "installments": 1,
    "checkoutPaymentType": "PIX, CREDIT",
    "checkoutLayoutType": "COMPACT",
    "subscriptionMaxCycles": 0
  }'
```

A resposta (`201`) traz a oferta criada, com o `id` usado para [criar o funil](https://docs.assiny.com/api/funis.md).

> [!WARNING]
>
> **Cupons ativos:** se o novo preço deixar algum cupom ativo do produto abaixo de R\$ 5,00, a Assiny recusa a oferta com `422` (`COUPON_BELOW_MIN_PRICE`) e **não salva nada**. A mensagem diz quais cupons ajustar.

## Criar várias ofertas

```
POST /multiple-checkouts
```

Mesmo corpo do **Criar oferta**, dentro de uma lista: `[{...}, {...}]`.

## Editar oferta

```
POST /checkout/{offerId}
```

Mesmos campos do **Criar oferta**. Mande a oferta **completa**: comece pelos dados da oferta que vêm na [listagem de produtos](https://docs.assiny.com/api/produtos.md) e troque o que precisar.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.