#13910·polar

Apply seat/unit min-max lock per-product on mixed checkout links

Author: stilla[bot]Created Aug 20, 2026Updated Aug 20, 2026

Checkout links currently only allow a seat/unit lock (min == max) when all linked products are seat- or unit-based, per this discussion. This is stricter than necessary.

Instead, a checkout link with a mix of seat/unit and non-seat/unit products should apply the min/max lock when a seat/unit product is selected at checkout, and clear it when a non-seat/unit product is selected.

Applies to both _seats_valid_for_products and the new unit-based equivalent in server/polar/checkout_link/service.py.

Sent by @frankie567 from PR #13871 dedicated issue creation.