Skip to content

Add option to lock seat quantity during checkout for programmatically determined seat countsΒ #9367

@psincraian

Description

@psincraian

Problem

For B2B SaaS applications using seat-based pricing where the seat count is determined programmatically (e.g., based on Google Workspace user count, Active Directory users, or other automated scans), customers can currently modify the seat quantity on the checkout page.

This creates issues when:

  1. The seat count must match the actual user count for billing integrity
  2. Allowing changes could lead to customers paying for fewer seats than they need
  3. A seamless experience requires the correct amount to be pre-filled and locked

Current Behavior

When creating a checkout session via API with a specific seat count:

{
  "product_price_id": "price_xxx",
  "seats": 15,
  "success_url": "https://example.com/success",
  "customer_email": "customer@example.com"
}

Customers can modify the seat quantity on the Polar checkout page.

Requested Feature

Add a parameter to the checkout session creation API that prevents customers from modifying the seat count. For example:

{
  "product_price_id": "price_xxx",
  "seats": 15,
  "seats_locked": true,
  "success_url": "https://example.com/success",
  "customer_email": "customer@example.com"
}

Or:

{
  "product_price_id": "price_xxx",
  "seats": 15,
  "allow_quantity_change": false,
  "success_url": "https://example.com/success",
  "customer_email": "customer@example.com"
}

Use Case

This feature is essential for B2B SaaS products where:

  • Seat counts are determined programmatically rather than chosen by the customer
  • Billing must match actual usage/user counts
  • Automated provisioning systems need to ensure pricing accuracy

Issue creation proposal. Ask @stilla for more context.

Metadata

Metadata

Assignees

No one assigned

    Labels

    feat/businessesTasks related to the feature of adding business/teams <> customer relationship support.feat/seatsTasks related to seat-billingvotes-neededWe need πŸ‘ to properly prioritize this issue

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions