• Pricing
  • Blog
Log inBook a demo
Introduction

Quickstart

Learn

OffersIntroductory OffersPromotional OffersPromo CodesMarkets and Regional PricingTrial Periods

Resources

SDK ReferenceAPI VersioningError HandlingTestingCLI

Plugins

Better Auth
System status
DocumentationKnowledge BaseBuild with AIAPI ReferenceWebhooks

Offers

Define reusable trials and temporary pricing terms independently from plans and distribution.

An Offer is a reusable sequence of benefits. It defines what changes—a trial, a discount, or a temporary fixed price—without deciding which plan uses it or how a customer receives it.

Offer phases

An Offer contains between 1 and 10 ordered phases:

PhaseEffect
free_trialDelays the first charge for a fixed number of days
percentageReduces the plan base price by basis points
amount_offSubtracts an explicit amount for each configured currency
fixed_priceReplaces the plan base price with an explicit amount for each configured currency

A free trial can appear only as the first phase. A discount phase may have a finite durationCycles, or null when it is the final open-ended phase.

const launchOffer = await commet.offers.create({
  name: 'Launch sequence',
  phases: [
    { type: 'free_trial', durationDays: 14 },
    { type: 'percentage', durationCycles: 3, percentage: 5000 },
    { type: 'percentage', durationCycles: null, percentage: 2000 },
  ],
  metadata: { campaign: 'launch-2026' },
})

The Offer does not contain purpose, planPriceIds, eligibility, or redemption rules.

Apply the same Offer in different ways

ChannelHow the Offer is selectedWhat the channel adds
IntroductoryAttached to one base plan priceAutomatic selection and new-customer eligibility
PromotionalYour integration passes offerIdExplicit campaign, retention, or experiment assignment
Promo CodeThe customer enters a codeRedemption limits, plan restrictions, and expiration

The channel does not create another copy of the Offer. It only decides how the reusable terms reach a customer.

Accepted terms

When Commet quotes or applies an Offer, it records an immutable Offer Application. The application includes:

  • the Offer and selection source;
  • the target under appliesTo;
  • the resolved currency and amounts when available;
  • the exact accepted phases and dates.

Editing, deactivating, or archiving the catalog Offer affects future applications only. Existing applications remain available for billing and audit.

The v9 response is target-aware (plan_price, addon, or credit_pack) so new purchase surfaces do not require another breaking response change. Current public subscription, Introductory, direct, and Promo Code flows create plan_price applications.

Related

  • Introductory Offers
  • Promotional Offers
  • Promo Codes
  • Trial Periods
  • Offers API reference

How is this guide?

One-Time Payments

Sell lifetime access or one-time purchases with a single charge and no recurring billing.

Introductory Offers

Apply an existing Offer automatically to eligible new subscriptions.

On this page

Offer phases
Apply the same Offer in different ways
Accepted terms
Related