Shopify’s discount editor will take a percentage or a fixed amount. It will not take “20% off, up to $50.” That is the whole reason Pricelid exists.

The discount still lives in Shopify. The app stores the rule as JSON on the discount metafield, and a Shopify Function reads it while the cart is being priced. No theme edits. If the discount is not an order discount, or the metafield is missing, the Function returns no operations and checkout moves on.

Three rules, one Function

The JSON has a type.

Capped percentage is the default. The Function takes the cart subtotal, multiplies by the percent, and compares that to the dollar cap. Under the cap, it applies the percentage. Over the cap, it applies a fixed amount equal to the cap. The buyer still sees a percent-off message. The money just stops.

Max order amount is the opposite shape. The percentage applies only when the subtotal is at or below a threshold. Above that, the Function returns nothing. The discount does not apply.

Tiered is one schedule per discount. Each tier is a subtotal threshold and a percent. The Function walks the tiers and keeps the highest threshold the cart has reached. A $120 cart with steps at $50, $100, and $200 gets the $100 rate, not a blend of all three.

I wrote the merchant-facing version of the cap case in how to cap a percentage discount in Shopify. The Function is the part that actually enforces it.