`shiponeshot.com` runs its own limited-time launch discount using a small mechanism,
`app/models/kit_price.rb`, that's worth understanding even if you never sell a kit yourself: the
same pattern works for any time-boxed promotion where the price shown on the page and the price
Stripe actually charges have to agree, automatically, with no deploy required to start or stop it.

## The two variables

- **`STRIPE_PRICE_KIT_LAUNCH`**: the id of the discounted Stripe Price.
- **`KIT_LAUNCH_PRICE_ENDS_AT`**: an ISO 8601 timestamp for when the discount stops, for example
  `2026-08-02T23:59:59Z`.

Set both, or neither. With live Stripe keys, a deadline set with no matching price id is ignored
and the regular price is served instead, deliberately, since falling back to an inline price at
checkout would carry no statement descriptor.

## Why it can't drift

The same `KitPrice` class serves the price shown on every page that displays one, and the price
used at checkout, so the two structurally can't disagree. The discount expires on its own at the
deadline and falls back to the regular price id automatically; there's no window where the site
advertises a price Stripe would refuse to honor, and no deploy needed at the moment the promotion
ends. To end a promotion early, unset both variables and deploy once.

## Two things to get right

- Create the discounted Price on the **same Product** as your regular price, so it inherits that
  product's statement descriptor rather than needing one set separately. See
  [Stripe Setup](/docs/billing-entitlements/stripe-setup).
- A **recurring** discounted Price renews at the discounted rate for as long as the customer stays
  subscribed; if you want the discount to apply to the first invoice only, use a Stripe coupon
  instead of a separate recurring Price.

## Using the same pattern for your own promotion

Nothing about `KitPrice` is specific to selling a kit. If your product wants a founding-member
rate, a seasonal discount, or a launch-week price, the same two-variable, self-expiring shape
applies: one Price id, one deadline, one class both the marketing page and checkout read from.

## Next

Return to [How Billing Works](/docs/billing-entitlements/how-billing-works) for the full picture,
or move on to [Working with Claude Code](/docs/claude-code/how-claude-md-works) to see how these
skills fit together.
