Subscrio is an open-source entitlement engine for .NET and TypeScript applications. Use Subscrio to define what each plan includes and determine what each customer can access. It stores products, features, plans, customers, and subscriptions in your database, then resolves feature values from the customer's subscriptions and any customer-specific overrides.
The .NET and TypeScript libraries run inside your application and do not require a hosted entitlement service.
This project has not yet reached version 1.0, so its API may change between releases. However, the codebase is actively maintained and currently used in multiple commercial products.
Plan-name checks tend to spread through application code. They become harder to maintain when plans change, a customer negotiates an exception, several subscriptions provide access, or a feature needs a limit instead of a yes-or-no result.
Subscrio keeps that logic in one model. Application code checks a stable feature key. The catalog, subscription, and any customer-specific override determine the returned toggle, number, or text value.
Subscrio is not a payment processor, user-authorization system, feature-flag service, or license-key activation service. It can work alongside those systems.
- Define products, features, plans, and billing cycles through the API or configuration sync.
- Create and update customers and subscriptions from your application or an integration.
- Ask Subscrio for a feature by its stable key when the application needs to make an access decision.
Catalog and subscription data remain in your database. Plans and customer exceptions can change without rewriting checks throughout the application.
The .NET and TypeScript implementations use the same concepts:
Applications refer to records by stable string keys, such as seat-limit or growth-plan. Database IDs stay inside Subscrio.
Subscrio resolves a feature value in this order:
- A feature override on the subscription
- The feature value assigned by the plan
- The feature's default value
The same path supports toggle, numeric, and text values. Customers can have multiple subscriptions, and subscription status is calculated from lifecycle dates and cancellation state. See the feature checker reference for method-level behavior.
A Rust implementation is planned but is not currently available.
First-party extensions register through Subscrio hooks and maintain their own database schema.
See How to extend Subscrio for hook behavior and extension examples.
The optional Stripe integration turns supported subscription events into Subscrio subscription updates. When your application receives the webhook, it must verify the Stripe signature before passing the event to the library. The separate Subscrio Web Admin can receive and verify Stripe webhooks directly.
See Integrate with Stripe for the supported events and setup details.
Subscrio is split across multiple GitHub repositories. For local development, clone the repos you need into a shared workspace root so file: dependencies and .NET project references resolve.
See repos.md for the repository list and recommended folder layout.
Use the implementation README in each repository for build, test, and contribution instructions. Cross-cutting changes start in subscrio/subscrio.
See CONTRIBUTING.md.
Created and maintained by Jasen Fici.
Subscrio is available under the MIT License.