Skip to main content
At its core, PriceOS answers one question:
“What features does this person have access to?”
Instead of hard coding feature access and pricing logic in your application, PriceOS gives you a single source of truth.

How it Works

By integrating with your Stripe account, we make the mapping between your customers and feature access effortless.
  1. Integrate Stripe - We import and sync your products, prices, and customers
  2. Create features - e.g. Team Seats, Priority Support, etc.
  3. Define feature access - In your imported Stripe products or custom products
  4. Evaluate feature access - In your application using our API or SDK.
That’s it. We’ll handle the rest. Since we integrate with your Stripe account we’ll know which customers are subscribed to which products for which you define feature access.
FeaturesProductsCustomersStripeProducts + SubscriptionsFeature access definitionslive on products(middle column)CreditsTeam SeatsPriority SupportBasic1000 credits1 Team seatx Priority SupportPro5000 credits5 Team seatsx Priority SupportEnterprise5000 credits5 Team seatsPriority SupportExtra credits1000 creditsJim BobSam AltmanAcme Inc.
For customers that exist outside of Stripe, you can use Custom products.

How feature access is evaluated

When PriceOS evaluates feature access for a customer, it applies this order:
1

Determine the customer's active products

For Stripe customers: read active subscriptions, then map subscription prices to products.Add any manually assigned custom products.If no products are active, use the default custom product (if one is configured).
2

Merge feature access from those products

Boolean features: true if any active product grants access.Limit features: add limits* across active products.
* - If customer has multiple quantities of a Stripe product, multiply limit by quantity first.
3

Apply customer overrides

Customer overrides are applied on top of product-based access for that specific customer.
4

Apply bonuses

Bonuses are returned in a separate field (bonusRemaining) and do not get tacked on the limit field. In the API they only factor into the hasReachedLimit field.