Coupons are reusable discounts applied to orders and checkout flows. Each coupon offers either a percentage or a fixed amount off, and can carry a redeemable code or be codeless for programmatic application. Usage limits, expiration, minimum purchase amounts, stackability, and catalog restrictions (specific products, variants, bundles, or categories) control where and how often a coupon applies.
A coupon's effective status is computed: active, disabled (merchant-toggled, reversible), expired (past expires_at), exhausted (usage limit reached), or deleted. Applying a coupon to an order creates an order discount; one-off price adjustments that don't need a reusable coupon can use manual discounts on the order directly.
Coupons cover the simple, single-code case. When you need automatic (codeless) discounts, multi-code campaigns, buy-X-get-Y, or eligibility and stacking rules, reach for Promotions: a coupon is a promotion with the common case pre-flattened into one code and a flat set of restrictions.
Coupon metadata is caller-owned. Keys starting with flint_ are reserved for Flint internals and cannot be written through the public API.
