Products & Pricing
Design products with any combination of flat-rate, per-seat, metered, and tiered pricing across multiple currencies. This guide covers products, plans, and line items so you can set up and ship.
Overview
Products are the top-level containers for your pricing in Salable. A Product represents what you sell: a SaaS platform, a feature set, or an add-on service. Products contain Plans that define different pricing Tiers or options, and Plans contain Line Items that determine what customers pay and how they're charged.
This hierarchy supports flat-rate subscriptions, per-seat pricing with volume discounts, usage-based metered billing, and combinations of all three. You can offer the same Product at different prices in different currencies, with different billing intervals, and with different feature access through Entitlements.
Understanding the Hierarchy
-
Product is the top-level container. It represents what you sell and holds one or more Plans. A Product might be your core SaaS platform, an add-on service, or a feature bundle. Products carry settings that apply to all Plans within them: checkout URLs, tax collection preferences, and trial period configurations.
-
Plan is what customers purchase. Plans are added to the Cart and checked out as a single unit. Customers pay for all Line Items within a Plan together. Plans define which Entitlements customers receive (controlling feature access) and contain one or more Line Items that determine the charges.
-
Line Item defines a specific charge within a Plan. These are the individual prices that appear on invoices. Line Items are not sold individually; they're bundled together within a Plan. A Plan might have multiple Line Items: a base subscription fee, a per-seat charge, and usage-based billing for API calls. Each Line Item has a type (flat rate, per-seat, or metered), an interval (one-time or recurring), and a billing scheme (per-unit or tiered).
-
Price represents the Line Item's cost at a specific billing interval. A single Line Item can have multiple Prices. One for monthly billing, one for yearly billing, and so on. Each Price contains Currencies for different markets.
-
Currency defines the actual pricing in a specific currency. A Price can have multiple Currencies (USD, GBP, EUR), with one marked as the default. This enables global pricing without creating duplicate Line Items.
-
Tier (optional) defines pricing breakpoints for tiered billing schemes. Tiers let you charge different amounts based on quantity or usage levels, enabling volume discounts or graduated pricing structures.
Product Configuration
Creating a Product
Products can be created on the Salable dashboard and the Salable API.
Note Before creating Products, set up a Payment Integration to create a Stripe Connect account. Products and Plans can be created with minimal Stripe Connect setup. Test mode checkout links require the business type and personal details forms in Stripe Connect's onboarding. Live Mode checkout links require full onboarding with Active status.
Navigate to Products in your sidebar. Enter a name for your Product in the Product Name field and click Create Product. Your new Product appears in the list below. Click the Edit Product button (pencil icon) to continue setup.
Product Settings
Product settings define defaults that apply to all Plans within the Product.
-
Checkout URLs Specifies where customers are redirected after checkout. The
successUrlis where they go after successful payment; thecancelUrlis where they return if they abandon checkout. These URLs can include query parameters to pass information back to your application for onboarding flows or analytics tracking. -
Allow Promo Codes The allowPromoCodes setting enables customers to enter discount codes during checkout. When enabled, a promo code field appears on the Stripe checkout page where customers can apply codes you've configured in your Stripe dashboard.
-
Automatic Tax The automaticTax setting enables Stripe Tax for automatic tax calculation based on customer location. When enabled, Stripe determines the correct tax rate and applies it to invoices. This requires collecting the customer's billing address to determine their tax jurisdiction.
-
Address Collection The collectBillingAddress setting controls whether billing address fields appear at checkout. This is required for automatic tax calculation, since Stripe needs the customer's location for tax rates. The collectShippingAddress setting adds shipping address fields for physical products that require delivery.
-
Card Pre-fill Preference The cardPrefillPreference setting controls how payment methods are saved and reused. Set it to
nonefor an empty payment form,choiceto let customers decide whether to save their card, oralwaysto save payment methods for future purchases. -
Past Due Entitlements The pastDueEntitlements setting controls feature access during payment failures. When set to true, customers keep access to Entitlements while the Subscription is in a past-due state, covering Stripe's automatic retry period. When set to false, access is revoked immediately on payment failure.
-
Trial Periods The trialPeriodDays setting is configured at the Plan level. See Plan Properties for details.
Note Product settings can be overridden at checkout time.
Important Automatic tax requires Stripe Tax to be enabled and configured in your Stripe Dashboard before you use this setting in Salable.
Plans
Plans represent different pricing tiers, add-ons, or options within a Product. They can be Subscription tiers like Basic, Pro, and Enterprise, or add-ons that customers purchase alongside a main Plan. Each Plan has its own pricing, features, and Line Item configurations.
Creating Plans
Plans are created within the Product editor in the dashboard. Navigate to the Edit Product page for your Product, scroll to the Plans section, and click Create Plan. Enter a name for your Plan in the Plan Name field, optionally set a Trial Period in days, and select any Entitlements that customers on this Plan should receive.
The Plan is saved only after you've configured at least one Line Item with pricing.
Plan Properties
-
Name identifies the Plan to customers. Use clear, descriptive names like "Professional Plan" or "Enterprise" rather than internal codes. This name appears in checkout flows, invoices, and customer-facing areas.
-
Trial period gives customers free access for a specified number of days before billing starts. Trial periods must be between 1 and 730 days. During the trial, customers have full access to Entitlements. If they cancel during the trial, they are not charged.
-
Entitlements define which features customers on this Plan can access. Use the Entitlements typeahead input to search for an existing Entitlement or create a new one inline by typing the name and clicking Create. Subscribers receive all selected Entitlements, which you check in your application to gate features.
-
Tier Tags make Plans mutually exclusive by grouping them into tier sets. When you assign the same tier tag to multiple Plans, an Owner can only subscribe to one of those Plans at a time. To configure tier tags, add them when creating a Plan or when editing an existing Plan. Enter your desired tier tag in the Tier Tag field.
Line Items
Line Items define the charges within a Plan: what customers pay, how often, and how the amount is calculated.
Naming
Line Item names appear on Stripe invoices, receipts, and checkout pages. Use clear, customer-facing descriptions: "Platform Subscription" rather than "base_fee", "Additional Users" rather than "per_user".
Line Item Types
-
Flat Rate charges a fixed amount per billing cycle, regardless of usage or team size. For example, a $29/month subscription fee. flat rate Line Items always have a quantity of one.
-
Per Seat charges based on the number of seats (users, licenses, or units). The price is multiplied by the quantity. For example, $10 per user per month, where a team with five users pays $50/month. Per-seat pricing can use simple per-unit billing or tiered pricing with volume discounts. Only one per-seat Line Item is allowed per Plan to avoid ambiguity about seat counting.
-
Metered charges based on usage during the billing period. Customers are billed for what they consume: API calls, storage, or processing time. Usage is tracked throughout the billing cycle and invoiced at the end. Metered Line Items require a meter to track usage.
Interval
Line Items have an interval that determines when they're charged.
-
Recurring Line Items repeat every billing cycle. The charge appears on every invoice at the configured interval (day, week, month, or year). This covers Subscription fees, per-seat charges, and recurring metered billing. The interval count property lets you create custom billing periods. An interval of "week" with a count of two creates biweekly billing; "month" with a count of three creates quarterly billing.
-
One-off Line Items charge only once, at the start of the Subscription. Use these for setup fees, onboarding charges, or one-time purchases.
Billing Schemes
The billing scheme determines how the Line Item Price is calculated.
-
Per Unit applies a fixed price per unit. If you set a unit amount of $10 and the customer purchases five units, they pay $50. Works for flat rate, per-seat, and metered Line Items.
-
Flat Rate (as a billing scheme) charges a single fixed amount regardless of quantity. This is typically used when the price type is flat rate with a quantity of one, but can also apply to per-seat items where you want a flat fee regardless of seat count.
-
Tiered applies different pricing based on quantity or usage levels. Tiers define breakpoints where pricing changes. For example, units 1–10 might cost $10 each, units 11–50 cost $8 each, and units 51+ cost $5 each. Tiered billing supports both volume and graduated modes (explained in the next section).
Quantity Controls
Line Items have quantity constraints that determine valid purchase amounts.
-
Minimum quantity sets the fewest units customers must purchase. For flat rate items, this is typically zero or one. For per-seat items, you might set a minimum of two to enforce team pricing.
-
Maximum quantity sets the most units customers can purchase. This enforces Plan limits and prevents over-purchase.
-
Default quantity is the pre-filled amount customers see when they add the Plan to their Cart. For flat rate items, this is usually one. For per-seat items, you might default to a reasonable number (eg five users) to give customers a starting point.
-
Allow changing quantities controls whether customers can adjust the quantity at checkout or when managing their Subscription. Enable this for flexible per-seat pricing; disable it to lock quantities to your configured values.
Tiered Pricing
Tiered pricing charges different amounts based on quantity or usage levels, giving you volume discounts and graduated pricing.
Tier Modes
Tiered billing schemes have two modes that determine how prices are calculated across Tiers.
-
Graduated pricing charges different rates for units within each Tier. This works like progressive income tax: the first 100 units cost $10 each, the next 100 cost $8 each, and so on. Each unit is priced according to its Tier.
Example of Graduated Pricing:
┌─────────┬───────────┬──────────┐ │ Tier │ Units │ Rate │ ├─────────┼───────────┼──────────┤ │ Tier 1 │ 1–100 │ $10/unit │ │ Tier 2 │ 101–500 │ $8/unit │ │ Tier 3 │ 501+ │ $5/unit │ └─────────┴───────────┴──────────┘Customer purchases 600 units:
┌────────────────────────────────┬─────────┐ │ First 100 units × $10 per unit │ $1,000 │ │ Next 400 units × $8 per unit │ $3,200 │ │ Final 100 units × $5 per unit │ $500 │ ├────────────────────────────────┼─────────┤ │ Total │ $4,700 │ └────────────────────────────────┴─────────┘ -
Volume pricing applies a single rate to all units based on the total quantity. When you cross into a new Tier, all units are priced at that Tier's rate.
Example of Volume Pricing:
┌─────────┬───────────┬──────────┐ │ Tier │ Units │ Rate │ ├─────────┼───────────┼──────────┤ │ Tier 1 │ 1–100 │ $10/unit │ │ Tier 2 │ 101–500 │ $8/unit │ │ Tier 3 │ 501+ │ $5/unit │ └─────────┴───────────┴──────────┘Customer purchases 150 units, all at the Tier 2 rate:
┌──────────────────────────┬─────────┐ │ 150 units × $8 per unit │ $1,200 │ └──────────────────────────┴─────────┘Customer purchases 600 units, all at the Tier 3 rate:
┌──────────────────────────┬─────────┐ │ 600 units × $5 per unit │ $3,000 │ └──────────────────────────┴─────────┘
Configuring Tiers
Each Tier has three components that define its pricing.
-
Up To sets the upper limit of the Tier: a number representing the last unit in the Tier, or
inffor the final Tier with no upper limit. A Tier with "up to 100" includes units 1-100. The next Tier starts at 101. -
Unit Amount is the Price per unit within this Tier. This amount applies to each unit (in graduated mode) or to all units if the total falls in this Tier (in volume mode).
-
Flat Amount is an optional base fee charged when entering this Tier. This amount is added once if the customer's usage reaches this Tier. For example, you might charge a $50 flat fee plus $5 per unit for the top Tier.
Tier Configuration Example
Navigate to your Line Item configuration and select Tiered as the billing scheme. Choose Graduated as the Tier mode. Then configure your Tiers:
Example:
┌──────────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐
│ Tier 1 │ │ Tier 2 │ │ Tier 3 │
├──────────────────────┤ ├──────────────────────┤ ├──────────────────────┤
│ Up To: 10 │ │ Up To: 50 │ │ Up To: ∞ │
│ Unit Amount: $10.00 │ │ Unit Amount: $8.00 │ │ Unit Amount: $5.00 │
│ Flat Amount: $0.00 │ │ Flat Amount: $0.00 │ │ Flat Amount: $0.00 │
└──────────────────────┘ └──────────────────────┘ └──────────────────────┘
Prices and Currencies
Prices define how much a Line Item costs at different billing intervals and in different currencies.
Billing Intervals
A single Line Item can have multiple Prices for different billing intervals, so customers choose how often to be billed without you creating duplicate Line Items.
Create a Price for each interval you want to support: Day, Week, Month, or Year. For example, add a monthly Price at $29/month and a yearly Price at $290/year (offering a 17% discount).
Multi-Currency Support
Each Price can have multiple Currencies, so you can sell globally without duplicating your Product structure.
-
Default currency is set using the default button on each Currency in the Price form. This is the currency Stripe uses when determining Prices based on geolocation if you omit currency in the Cart. All Line Items in a Product must share the same default currency for geolocation to work correctly.
-
Additional currencies let you expand into new markets. Add Currencies for each market you want to serve. Prices don't need to be simple conversions. You might charge $29/month in USD, £24/month in GBP, and €27/month in EUR, adjusting for local market conditions and purchasing power.
-
Configuring currencies in the dashboard is done in the Price configuration. After selecting an interval, click Add Currency and choose from the dropdown. Enter the unit amount and add as many currencies as you need to support.
For tiered pricing, configure Tiers separately for each currency. While Tier breakpoints (the "up to" values) are typically the same across currencies, you might adjust unit amounts and flat amounts for different markets.
Example Price Configuration
A per-seat Line Item with monthly and yearly billing in multiple currencies:
┌──────────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐
│ Line Item │ │ Monthly Price │ │ Yearly Price │
├──────────────────────┤ ├──────────────────────┤ ├──────────────────────┤
│ Name: User Seats │ │ Interval: Month │ │ Interval: Year │
│ Type: Per Seat │ ├──────────────────────┤ ├──────────────────────┤
│ Scheme: Per Unit │ │ USD: $10.00 │ │ USD: $100.00 │
│ Min Qty: 1 │ │ GBP: $8.00 │ │ GBP: $80.00 │
│ Max Qty: 100 │ │ EUR: $9.00 │ │ EUR: $90.00 │
│ Default: 5 │ │ │ │ │
└──────────────────────┘ └──────────────────────┘ └──────────────────────┘
Combining Multiple Line Items
Plans can include multiple Line Items that combine into varied pricing models.
Common Combinations
-
Base fee + Per-seat charges a fixed platform fee plus a per-user charge. For example, $50/month base fee plus $10/user/month. This covers your fixed costs while scaling revenue with team size.
-
Flat rate + Metered pairs predictable recurring revenue with usage-based charges. For example, $99/month base Subscription plus $0.01 per API call. Customers get a base service level and pay for additional consumption.
-
Per-seat + Metered charges for both team size and usage. For example, $20/user/month plus $0.50 per transaction processed. This fits when costs scale with both dimensions.
-
Multiple metered items track different types of usage separately. For example, you might charge $0.02 per image processed, $0.01 per API call, and $0.10 per GB of storage used. Each has its own meter and pricing.
-
One-time setup + Recurring charges customers once for onboarding or setup, then bills recurring fees. For example, a $500 setup fee (one-off) plus $199/month (recurring). The setup fee appears only on the first invoice.
Troubleshooting
Cannot Add Per-Seat Line Item
If you get an error adding a per-seat Line Item, check whether the Plan already has one. For different per-seat pricing, use tiered pricing within the single per-seat Line Item rather than creating multiple items.
Tiered Pricing Validation Errors
Tiers must be configured in ascending order without gaps. Each Tier's starting point is automatically calculated from the previous Tier's "up to" value plus one. The final Tier must have "up to: inf" to handle all quantities beyond the previous Tier.
Unit amounts cannot be negative. To offer discounts at higher Tiers, reduce the unit amount compared to lower Tiers.
Currency Amount Format
Salable accepts Prices with or without decimals. You can enter 29 or 29.00 for $29.00; both are valid.
For zero-decimal currencies (like JPY, KRW), you must enter whole numbers without decimal places. For example, 1000 JPY must be entered as 1000. Entering 1000.00 will cause an error.
Default Currency Mismatch
If you use Cart geolocation (omitting currency when creating Carts), all Line Items across all Plans in your Product must share the same default currency. Check each Line Item's default Currency. If Plan A defaults to USD and Plan B defaults to GBP, either standardise the defaults or require explicit currency selection in Carts.
Summary
Use flat rate Line Items for fixed charges, per-seat for team-based pricing, and metered for usage-based billing. Add multi-currency pricing for global markets and tiered pricing with graduated or volume modes for quantity discounts.
For more on how the Entitlements control feature access, see the Understanding Entitlements guide. For managing team access and seats, see Grantees & Groups. For checkout flows and Cart management, see Cart & Checkout.