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

# Promotional Offers

> Aplica cualquier Offer compatible directamente para campañas, retención y experimentos.

Una Promotional Offer es una Offer aplicada directamente mediante `offerId`. Promotional describe el canal de aplicación, no otro recurso de catálogo ni un `purpose`.

La Offer permanece independiente de planes y precios hasta que tu integración la selecciona.

## Crear las condiciones

Las Offers directas pueden combinar una prueba gratuita con fases ordenadas de descuento o precio fijo:

```typescript theme={null}
const retentionOffer = await commet.offers.create({
  name: 'Volver a Pro',
  phases: [
    { type: 'free_trial', durationDays: 7 },
    { type: 'fixed_price', durationCycles: 2, prices: [
      { currency: 'usd', amount: 2900 },
      { currency: 'ars', amount: 3990000 },
    ] },
    { type: 'percentage', durationCycles: null, percentage: 2000 },
  ],
})
```

Las fases específicas por moneda deben tener un valor explícito para la moneda del checkout. Commet no reutiliza silenciosamente un monto en USD para otra moneda.

## Aplicarla directamente

```typescript theme={null}
await commet.subscriptions.create({
  customerId: 'user_123',
  planCode: 'pro',
  offerId: retentionOffer.id,
})
```

La Offer debe estar activa, dentro de su ventana de disponibilidad y poder resolverse en la moneda seleccionada. No necesita una asociación previa con el plan ni con el precio.

Un `offerId` explícito reemplaza la selección introductoria automática. No puede combinarse con `promoCode`, `customTrialDays` ni `skipTrial: true`.

Los cambios inmediatos de plan, sus previews y los flujos de reactivación compatibles también aceptan `offerId`. Los cambios de plan programados no aceptan una Offer.

## Aplicarla a una suscripción activa

Para retención, aplicá una Offer a una suscripción que ya está activa. Las fases de descuento arrancan en el próximo ciclo de facturación, así que el período actual no se toca y la próxima factura sale con el descuento:

```typescript theme={null}
await commet.subscriptions.applyOffer({
  id: 'sub_123',
  offerId: retentionOffer.id,
})
```

Solo una Offer aplica a la vez: mientras una Offer aceptada todavía tenga fases de descuento vigentes o futuras, una nueva aplicación se rechaza. Cuando sus fases se agotan, la suscripción acepta una nueva Offer. Las Offers con una fase de free trial no pueden aplicarse a una suscripción activa, y el descuento aplica solo sobre el precio base del plan.

La Offer aplicada pertenece a esa suscripción y a ese plan: termina con una cancelación y un cambio de plan la remueve.

La misma operación sobre una suscripción con un checkout de pago pendiente cotiza o reemplaza el descuento del checkout; ahí acepta un `expiresAt` opcional para la cotización.

## ¿Aplicación directa o Promo Code?

Usá `offerId` directo cuando tu aplicación decide quién recibe las condiciones. Usá un Promo Code cuando el customer deba ingresar un código y la campaña necesite restricciones de canje.

Un Promo Code puede distribuir varias fases de descuento, incluso `fixed_price`, y puede comenzar con un trial si después viene un descuento. Una Offer que solo tiene un trial sigue disponible para aplicación directa.

## Relacionado

* [Offers](/docs/es/offers)
* [Introductory Offers](/docs/es/introductory-offers)
* [Promo Codes](/docs/es/promo-codes)
* [Administrar suscripciones](/docs/es/manage-subscriptions)


## Related topics

- [Offers](/docs/es/offers.md)
- [List offers](/docs/es/api-reference/2026-07-24/offers/list-offers.md)
- [Introductory Offers](/docs/es/introductory-offers.md)
- [Offers, Promo Codes y Card Promotions](/docs/es/how-do-offers-promo-codes-and-card-promotions-work-together.md)
- [Promo Codes](/docs/es/promo-codes.md)


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