Skip to content

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.

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

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

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

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.

  • Codes and discount amounts are immutable. You can update the display name and toggle active, but not percent_off, amount_off, or code itself. Create a new coupon if you need different terms.
  • times_redeemed auto-increments and is read-only — useful for tracking campaign performance.
  • Coupons apply per customer, not per order — if a coupon is forever and a customer subscribes, every renewal gets the discount.