Docs · Billing & Entitlements

Launch Pricing

The KitPrice limited-time discount mechanism, and using the pattern for your own promotions.

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.
  • 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 for the full picture, or move on to Working with Claude Code to see how these skills fit together.