crxpay

Entitlements

One check. Every path to Pro.

Group features into entitlements like pro or team. Check one flag in code. We match it no matter how the user paid. Subscription, one-time, lifetime, or license key.

One
flag
Four
pay types
Zero
branches
crxpay · demo
Purchase paths
  • Pro monthly · $9
  • Pro yearly · $96
  • Lifetime deal · $59
  • License key · 5 seats
Entitlement granted
"pro"same flag, different path
Live preview · all four paths land on one entitlement

Entitlements

Stop writing plan-matching code.

Every new plan you launch is one mapping in the dashboard, not a PR. Your gate code never changes.

Entitlement · "pro"
Pro monthly
$9 / mo
Grants
Pro yearly
$96 / yr
Grants
Lifetime deal
$59 once
Grants
License · 5 seats
Key
Grants
Free plan
No
1

Group features, not plans

An entitlement is a name like pro or team. You decide which plans and purchases grant it. Change the mapping later without shipping code.

One call, every surface

The SDK returns the same answer in your popup, background worker, content script, and web portal. No duplicated logic, no drift between screens.

2
// popup.ts, background.ts, content.ts…
const sub = await crxpay.ready();

if (sub.hasEntitlement('pro')) {
  enableProFeatures();
}
Pricing history
  • 2023
    Early bird · $5
    Grants pro
  • 2024
    Pro · $9
    Grants pro
  • 2025
    Pro · $12 (raised)
    Grants pro

Users on the 2023 price keep Pro forever without a single line of if-logic.

3

Grandfather pricing without pain

Old users on an old plan keep their entitlement even after you raise prices. Just point the old SKU at the same entitlement. No user gets locked out.

Nested entitlements for tiers

team includes pro. pro includes basic. Check the top tier in code and the rest just work. Add a new tier later without rewriting every if.

4
"team"
includes pro + basic
"pro"
includes basic
"basic"
standalone

Why devs refactor to entitlements

Fewer bugs when prices change.

0 line
Code to gate a feature
hasEntitlement("pro")
0
Purchase types mapped
sub, one-time, lifetime, key
0 rebuilds
When you rename a plan
just update the mapping
0 ms
Local cache response
no network for the check

Ready to grow?

Our entire suite of features comes standard — and your first $2,500 in tracked revenue is free.