Seat-based pricing is ideal for:
- Team subscriptions where one billing manager pays for multiple users
- Organizational licenses with per-seat pricing
- Products with volume-based tiering (e.g., 9/seat for 5+)
How it works
With seat-based pricing, a billing manager purchases a subscription with a specific number of seats. They can then:- Assign seats to team members via email or external customer ID
- Manage seats by resending invitations or revoking access
- Scale up by purchasing additional seats
- Track usage by viewing which seats are claimed, pending, or available
Creating a seat-based product
1
Create a new product
From your dashboard, navigate to Products and click Create Product.
2
Configure basic settings
Set your product name, description, and media as usual.
3
Select seat-based pricing
Under Pricing, select:
- Billing cycle: Monthly or Yearly
- Pricing type: Seat-based
4
Configure seat tiers
Define your pricing tiers based on seat quantity:
- Min seats: Minimum number of seats required to purchase
- Tiers: For each tier, set:
- Max seats: Upper limit for this tier (leave empty for unlimited)
- Price per seat: Amount charged per seat in this tier (in cents)
- 1-4 seats: $10/seat per month
- 5-9 seats: $9/seat per month
- 10+ seats: $8/seat per month
5
Add benefits
Configure the benefits that seat holders will receive. These are only granted when a seat is claimed, not when purchased.
Unlike standard subscriptions, seat-based products do not grant benefits to the billing manager. Benefits are only granted to team members who claim their assigned seats.
Purchasing seats
When a customer purchases a seat-based product, they specify how many seats they want during checkout. The total amount is calculated based on your tiered pricing. The checkout experience clearly shows:- Number of seats being purchased
- Price per seat based on volume
- Total amount
Managing seats
Assigning seats
Billing managers can assign seats through:- Customer Portal: Accessible via the customer portal with billing manager permissions
- API: Programmatically assign seats using the Customer Seats API
- Email address (creates a new customer if needed)
- External customer ID (optional, for syncing with your system)
- Customer ID (if customer already exists in Polar)
- Metadata (optional, up to 10 keys for custom data like role, department)
Seat statuses
Each seat can have one of three statuses:- Pending: Seat assigned, invitation sent, awaiting claim
- Claimed: Seat claimed by team member, benefits granted
- Revoked: Seat revoked, benefits removed, can be reassigned
Resending invitations
For pending seats, billing managers can resend the invitation email if it was lost or expired.Revoking seats
Billing managers can revoke a claimed seat at any time:- Benefits are immediately removed from the seat holder
- The seat becomes available for reassignment
- The seat holder loses access to all product benefits
- The revoked seat can be assigned to a different team member
Revoking a seat does not issue a refund. The billing manager continues to pay for the total number of seats in their subscription.
Claiming seats
When a team member receives a seat invitation:- They click the claim link in the email
- A claim page displays the product details and organization info
- They click Claim Seat to accept
- Benefits are automatically granted
- They receive a customer session token for immediate portal access
- They can access their benefits through the customer portal
Claim links are single-use and expire after 24 hours for security. If expired, the billing manager can resend the invitation.
Scaling seats
Adding seats
Billing managers can upgrade their subscription to add more seats:- The new seat count is applied immediately
- Prorated charges are calculated for the current billing period
- Future renewals bill at the new seat count
- New seats can be assigned right away
Reducing seats
To reduce seats, the billing manager should:- Revoke seats until the desired count is reached
- Update the subscription to reflect the lower seat count
- The change takes effect at the next renewal
You cannot reduce seats below the number of currently claimed seats. Revoke seats first before reducing the subscription seat count.
API Integration
Seat-based pricing provides full API support for:- Creating seat-based products with tiered pricing
- Checking out with seat quantities
- Assigning seats programmatically
- Listing seats and their statuses
- Revoking seats
Example: Assign a seat
Example: List seats
Webhooks
Seat-based pricing triggers standard subscription and benefit grant webhooks:subscription.created
- When seat-based subscription is purchasedsubscription.updated
- When seat count changessubscription.canceled
- When subscription is cancelledbenefit_grant.created
- When a seat is claimed and benefits grantedbenefit_grant.revoked
- When a seat is revoked and benefits removed
Unlike regular subscriptions,
benefit_grant.created
events are triggered per seat claim, not at purchase time.Best Practices
Use tiered pricing strategically
Structure your tiers to incentivize volume:- Lower per-seat prices as quantity increases
- Create tiers at natural team sizes (5, 10, 25, etc.)
- Consider flat pricing for very large teams
Leverage metadata
Use seat metadata to store:- Team member roles
- Departments or cost centers
Monitor seat utilization
Track how many purchased seats are actually claimed to identify:- Organizations that may need more seats
- Unused capacity that could be reduced
- Patterns in team adoption
Communicate clearly
Ensure product pages clearly explain:- The billing manager will not get direct access
- Seats must be assigned to team members
- Pricing structure and volume discounts
- Seat assignment and claiming process
Limitations
- Seats must be assigned individually (no bulk import via dashboard, use API instead)
- Claim links expire after 24 hours
- Billing manager does not receive product benefits
- Maximum of 1,000 seats per subscription
- Metadata limited to 10 keys and 1KB total size per seat