Coupons
Create discount codes customers can apply at checkout. Percentage or fixed-amount, time-limited or capped, one-time or recurring.
Coupons are managed in your app’s Admin > Commerce > Products, under Coupons, and in the Cupones tab of your published app’s admin panel.
Anatomy of a coupon
Section titled “Anatomy of a coupon”| Field | Notes |
|---|---|
code |
The promo code customers type at checkout (e.g. LAUNCH20) |
percent_off or amount_off |
Mutually exclusive. Percent is 1–100. Amount is in the smallest currency unit (cents). |
currency |
Required for amount_off discounts (three-letter ISO code). Accepted on creation and forwarded to Stripe, but not stored or returned by the API afterward. |
duration |
once (first payment only), repeating (for duration_in_months), or forever |
duration_in_months |
Required when duration is repeating |
max_redemptions |
Total cap across all customers |
redeem_by |
Expiration date after which the coupon stops working |
name |
Display name shown to customers |
active |
Toggle to enable/disable without deleting |
Create a coupon
Section titled “Create a coupon”From the Coupons sub-tab, click Add coupon and fill in the fields. A few common shapes:
| Goal | Settings |
|---|---|
| 20% off forever | percent_off: 20, duration forever |
| $10 off, single use, expires in 30 days | amount_off: 1000, currency USD, duration once, max redemptions 1, redeem-by 30 days out |
| 50% off the first 3 months of a subscription | percent_off: 50, duration repeating, duration in months 3 |
Or just ask the AI: "Create a LAUNCH20 coupon for 20% off forever."
Apply a coupon at checkout
Section titled “Apply a coupon at checkout”There are two ways a customer can use a code:
- On the Stripe checkout page — the promo code field is shown automatically, so a customer can type the code there with no work from you.
- In your own cart — add a promo-code field to your cart and pass what they typed into the checkout call as
couponCode. The server validates the code and computes the discount from your commerce data (never from an amount the browser supplies), records it on the order, and attaches the matching Stripe coupon so the charge is correct.
Ask the AI: "Add a promo code field to the cart and apply it at checkout."
List, update, deactivate
Section titled “List, update, deactivate”The Coupons sub-tab lists every coupon with how many times it has been redeemed against its cap, so you can track campaign performance at a glance. Editing is deliberately limited — see below — but you can toggle any coupon inactive without deleting it, which immediately stops it working at checkout.
Notes and limits
Section titled “Notes and limits”- Codes and discount amounts are immutable. You can update the display
nameand toggleactive, but notpercent_off,amount_off, orcodeitself. Create a new coupon if you need different terms. times_redeemedauto-increments and is read-only — useful for tracking campaign performance.- Coupons apply per customer, not per order — if a coupon is
foreverand a customer subscribes, every renewal gets the discount.