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 example2026-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.