Configuring Seat-Based and Tiered Pricing
Set up and manage seat-based and tiered pricing models to accommodate different user counts and feature sets.
Configuring Seat-Based and Tiered Pricing is a free Stripe Payments & SaaS Billing Systems lesson on CoddyKit — lesson 2 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Stripe Payments & SaaS Billing Systems learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
Billing Beyond Flat Fees
Welcome! In this lesson, we'll dive into advanced pricing models that help your SaaS business grow: seat-based and tiered pricing.
While simple flat fees work for some products, many services benefit from dynamic pricing that scales with user count or usage. This allows for more flexible and fair billing.
What is Seat-Based Pricing?
Seat-based pricing is a common model where customers pay a recurring fee for each user or 'seat' they have access to your service.
- Think of it like buying licenses for software.
- If a team has 5 members, they'd pay for 5 'seats'.
- It's straightforward and predictable for both you and your customers.
Examples include collaboration tools like Slack or project management software.
Seats with Stripe's Quantity
In Stripe, you implement seat-based pricing by creating a Product and a Price that represents a single 'seat' or unit.
When a customer subscribes, you set the quantity parameter on their subscription item to reflect the number of seats they need. If they add or remove users, you update this quantity.
Calculate Total Seat Cost
Here's a simple Java example to illustrate how the total cost for seat-based pricing is calculated. This logic is applied by Stripe internally.
public class Main {
public static void main(String[] args) {
double pricePerSeat = 10.50; // $10.50 per user
int numberOfSeats = 5;
double totalCost = pricePerSeat * numberOfSeats;
System.out.println("Price per seat: $" + pricePerSeat);
System.out.println("Number of seats: " + numberOfSeats);
System.out.println("Total monthly cost: $" + String.format("%.2f", totalCost));
}
}What is Tiered Pricing?
Tiered pricing is a model where the price changes based on specific usage thresholds, or 'tiers'.
Instead of paying per user, customers might pay based on:
- Data storage (e.g., GBs used)
- API calls made
- Number of invoices sent
This allows pricing to scale directly with a customer's consumption of your service.
Defining Tiers in Stripe
Stripe supports tiered pricing by allowing you to define tiers directly within a Price object. Each tier specifies a range of units and the price for those units.
There are two main types of tiered pricing in Stripe: graduated and volume. Understanding the difference is crucial for setting up your pricing correctly.
Graduated vs. Volume Tiers
Let's look at the two tiering strategies:
- Graduated Pricing: Units within different tiers are charged at their respective tier's rate. For example, the first 100 units cost $X each, and the next 100 units cost $Y each.
- Volume Pricing: All units are charged at the rate of the highest tier reached. If the customer's usage falls into Tier 2, all units are billed at the Tier 2 price.
Graduated Tier Calculation
Here's a Java example demonstrating how graduated pricing calculates the total cost based on usage. Notice how the price per unit changes for each tier.
public class Main {
public static void main(String[] args) {
int usageUnits = 180; // Example usage
double totalCost = 0.0;
// Tier 1: 0-100 units at $0.05 per unit
if (usageUnits > 0) {
int tier1Units = Math.min(usageUnits, 100);
totalCost += tier1Units * 0.05;
usageUnits -= tier1Units;
}
// Tier 2: 101-200 units at $0.04 per unit
if (usageUnits > 0) {
int tier2Units = Math.min(usageUnits, 100);
totalCost += tier2Units * 0.04;
usageUnits -= tier2Units;
}
// Tier 3: 201+ units at $0.03 per unit
if (usageUnits > 0) {
totalCost += usageUnits * 0.03;
}
System.out.println("Total usage units: 180");
System.out.println("Calculated cost: $" + String.format("%.2f", totalCost));
}
}Volume Tier Calculation
Now, let's see how volume pricing works. The price for *all* units is determined by the highest tier reached.
public class Main {
public static void main(String[] args) {
int usageUnits = 180; // Example usage
double pricePerUnit = 0.0;
// Tier 1: 0-100 units -> $0.05/unit
// Tier 2: 101-200 units -> $0.04/unit
// Tier 3: 201+ units -> $0.03/unit
if (usageUnits <= 100) {
pricePerUnit = 0.05;
} else if (usageUnits <= 200) {
pricePerUnit = 0.04;
} else { // usageUnits > 200
pricePerUnit = 0.03;
}
double totalCost = usageUnits * pricePerUnit;
System.out.println("Total usage units: 180");
System.out.println("Price per unit (based on volume): $" + pricePerUnit);
System.out.println("Calculated cost: $" + String.format("%.2f", totalCost));
}
}Choosing the Right Model
When deciding between seat-based and tiered pricing, consider your product and customer behavior:
- Seat-based: Simple, predictable, great for user-centric tools. Easy for customers to understand their bill.
- Tiered: Scales well with usage, can incentivize higher usage by offering better rates in higher tiers. More complex to explain.
Always prioritize clarity for your customers and ensure your chosen model supports your business goals.
Quick Check: Pricing Models
Test your understanding of seat-based and tiered pricing models in Stripe.
Recap: Dynamic Pricing
In this lesson, we explored how to configure more flexible billing models beyond flat fees:
- Seat-based pricing is ideal for per-user models, managed by a subscription item's
quantity. - Tiered pricing uses Stripe's
tiers, with key differences between graduated (different prices per unit in each tier) and volume (all units priced at the highest tier's rate) models.
Choosing the right model helps you scale and monetize your SaaS effectively by aligning pricing with customer value.
Frequently asked questions
Is the “Configuring Seat-Based and Tiered Pricing” lesson free?
Yes — the full text of “Configuring Seat-Based and Tiered Pricing” is free to read here on the web, and the Stripe Payments & SaaS Billing Systems course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Stripe Payments & SaaS Billing Systems course, upgrade to CoddyKit PRO.
What will I learn in “Configuring Seat-Based and Tiered Pricing”?
Set up and manage seat-based and tiered pricing models to accommodate different user counts and feature sets. You practise Stripe Payments & SaaS Billing Systems with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start Stripe Payments & SaaS Billing Systems?
No prior experience is required. Stripe Payments & SaaS Billing Systems on CoddyKit is structured for beginners through advanced learners; this is — lesson 2 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “Configuring Seat-Based and Tiered Pricing” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this Stripe Payments & SaaS Billing Systems lesson?
Yes. Every Stripe Payments & SaaS Billing Systems lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- Implementing Usage-Based Billing Systems
- Configuring Seat-Based and Tiered Pricing
- Custom Billing Cycles and Schedules
- Volume and Graduated Pricing Tiers in Depth