Quick Comparison

Here’s how Stripe Entitlements and ParityDeals compare across common use cases:

CapabilityStripeParityDealsNotes
Boolean feature flagSimple on/off access to features.
Entitlement API (fetch by customer)Return current entitlements based on customer ID.
Plan-based entitlementsAttach features to a subscription plan.
Config limits (e.g., max team size = 5)Store and read numeric or text values.
Metered quotas (API calls, minutes, GB)Track used, limit, and remaining.
Front-end SDK with hooks/componentsIntegrate access control directly in your UI.
Usage reset by billing cycleAutomatically resets metered usage every cycle.
Per-user overridesCustomize entitlements for individual users.
Edit limits without redeployUpdate limits instantly from the dashboard.

Real-World Entitlement Examples

Below is a list of common features, their typical data types, and which platform supports them. This helps clarify where Stripe ends and where ParityDeals begins.

Feature NameTypeDescriptionExample ValueParityDealsStripe
AI AssistantBooleanToggle access to AI toolstrue / false
Max Team SizeConfigRestrict number of team members5, 50, etc.
API Call QuotaMeteredTrack and limit API usageused: 10,000
Transcription MinutesMeteredMonthly limit on transcription usageremaining: 90 mins
Projects LimitConfigRestrict how many projects a user can create3, unlimited
Priority SupportBooleanEnable premium support for select userstrue
Max Upload SizeConfigLimit upload size per file25MB, 1GB, etc.
AI Token BucketMeteredControl token usage for AI featuresused: 3,000
Access to Beta FeaturesBooleanEnable early access to new featurestrue
Enable Custom BrandingBooleanWhite-label the product experiencetrue

Feature Implementation: Stripe vs ParityDeals

Explore how the same feature would be implemented using Stripe Entitlements vs ParityDeals, so you can feel the difference in developer experience.

1. AI Assistant (Boolean Feature)

Stripe (Manual Check)

import Stripe from 'stripe';

const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);

const entitlements = await stripe.entitlements.activeEntitlements.list({
  customer: 'cus_123',
});

const hasAiAccess = entitlements.data.some(
  (e) => e.entitlement_feature.lookup_key === 'ai-assistant'
);

if (hasAiAccess) {
  enableAiAssistant();
}

ParityDeals

import { ShowWhenBooleanEntitled } from '@paritydeals/react-sdk';

<ShowWhenBooleanEntitled featureKey="ai-assistant">
  <AIButton />
</ShowWhenBooleanEntitled>

2. API Call Quota (Metered Limit)

Stripe

// ❌ Not supported — you'd need to build custom metering logic.
const used = await getApiUsage(user.id);
const limit = 100000;

if (used < limit) {
  makeApiCall();
} else {
  showUpgradeBanner();
}

ParityDeals

const { data } = useMeteredEntitlement('api-call-quota');

if (data?.remaining === null || data.remaining > 0) {
  makeApiCall();
}

3. Project Limit (Config Feature)

Stripe

// ❌ Not supported — you'd need to hardcode limits manually.
const plan = user.stripePlanId;
const maxProjects = plan === 'pro' ? 50 : 3;

if (user.projects.length >= maxProjects) {
  blockProjectCreation();
}

ParityDeals

const { data } = useConfigEntitlement('project-limit');

if (data?.hasAccess && user.projects.length >= data.configuration) {
  showProjectLimitWarning();
}

🚀 Why ParityDeals?

Stripe’s entitlement system works well for simple use cases like turning a feature on/off based on a plan. But once you need configuration, metered usage, overrides, or frontend control — you hit limits fast.

ParityDeals fills these gaps with:

  • Deeper data types like metered and configurable entitlements.
  • Modern SDKs for both frontend and backend.
  • No-code plan editor to change limits instantly.
  • Better visibility into who can access what.

You still use Stripe for payments — and ParityDeals to power everything else around what users get after they pay.