Reach for seat-based pricing when you’re selling:
- A team subscription where one admin pays for the whole group
- A perpetual team license bought once, owned forever
- An organization-wide license priced per head
- Anything with volume breaks — e.g. $12/seat up to 9 seats, $10/seat at 10+
The seat lifecycle
A seat moves through three states. Knowing them is enough to reason about everything else on this page:
The flow a billing manager runs through:
- Buy a product — subscription or one-time — with a seat count.
- Assign seats to teammates by email, your external customer ID, or an existing Macropay customer ID.
- Invite — each teammate gets a claim link (valid for 24 hours).
- Claim — once accepted, benefits switch on automatically for that person.
- Adjust over time: revoke and reassign, resend expired invites, or scale up.
Subscription vs. one-time
Both purchase types support seats. The difference is how long a claimed seat lasts and how you add more.How volume tiers price out
Seat pricing is volume-based: the total seat count selects one tier, and that tier’s rate applies to every seat — not a graduated blend. Cross a threshold and the whole order reprices. Say you sell a “Design Studio” plan with these monthly tiers:
An agency buying 6 seats lands in the 5–9 tier, so all six bill at $10 → $60/month. Add a seventh teammate and they’re still in-tier at $70/month. Grow to 10 seats and every seat drops to $8 → $80/month instead of the $90 they’d pay at the lower tier’s rate.
Create a seat-based product
1
Start a new product
In your dashboard, open Products and click Create Product.
2
Fill in the basics
Name, description, and media — same as any other product.
3
Choose seat-based pricing
Under Pricing, set:
- Product type — Subscription or One-time
- Billing cycle (subscriptions only) — Monthly or Yearly
- Pricing type — Seat-based
4
Define your tiers
- Min seats — the smallest quantity someone can buy
- Tiers — for each one, set a Max seats (leave blank for the top, open-ended tier) and a Price per seat in cents
5
Attach benefits
Pick the benefits seat holders receive — license keys, file downloads, GitHub or Discord access, and so on. These fire on claim, never at purchase.
A seat-based product grants nothing to the billing manager by default — benefits go only to people who claim a seat. If the manager also wants access, they assign a seat to themselves, and it counts toward the purchased total.
Manage seats from code
Billing managers can assign and manage seats in the Customer Portal, but everything is also available over the API — handy for provisioning seats straight from your own admin panel or onboarding flow.Assign a seat
POST /v1/customer-seats invites a teammate and creates a pending seat. A claim link goes out by email automatically.
List, resend, and revoke
React to seat events with webhooks
Subscribe to seat webhooks to keep your own systems in lockstep — provision access on claim, reclaim a license on revoke:Good to know
- Seats are assigned one at a time in the dashboard — for bulk provisioning, loop the assign endpoint.
- Claim links expire 24 hours after they’re sent; resend to refresh.
- The billing manager gets no benefits unless they claim a seat of their own.
- Up to 1,000 seats per subscription.
- Per-seat metadata is capped at 10 keys and 1 KB total.