# Discount policy (Phase 3)

## Principles
- Server-side evaluation only; never trust client totals.
- Prefer **best applicable** automatic when non-combining; codes can combine when flagged.
- Percent values stored as basis points ×100 (`1000` = 10%).
- Fixed values in cents.

## Combination matrix (summary)
| Code combines_order | Auto combines_order | Result |
|---------------------|---------------------|--------|
| false | false | Higher wins |
| true | true | Stack |
| mixed | — | Stack only if overlapping combine flags match |

## Usage limits
Per-code `usage_limit` and `per_customer_limit` enforced at evaluate + redeemed on paid checkout.

## Free shipping
Type `free_shipping` zeros shipping amount when rate already selected.
