{
  "id": 11938012,
  "title": "Payments are not entitlements",
  "url": "https://urgent.news/2026/10/04/payments-are-not-entitlements",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-04T14:08:58.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/amine_charot_5b42207878e8/payments-are-not-entitlements-7ea"
  },
  "original_language": "en",
  "account": "When you create a SaaS application, you set up Stripe and consider the plans to be complete. However, upon releasing the initial feature for payment, you must respond to the question: can this user perform this action right now? This question is not about payments; it is about entitlements. There are two layers and two tasks involved. One layer is payments, which involves charging the card, managing the subscription with services like Stripe, Paystack, or Paddle. The other layer is entitlements, which determines whether the request is allowed based on the user's plan. Stripe knows that the customer has paid for the Pro plan, but it does not know that this plan includes 500 AI credits or how many credits the user has already used. Billing meters record usage for the invoice, but they do not prevent anything from happening. Building entitlements yourself requires creating a ledger of balances for each user and feature, with atomic decrements to ensure that two requests cannot spend the same credit. There is also a monthly renewal for each plan's period and a free tier that refills on its own schedule. Handling webhooks is necessary for upgrades, downgrades, cancellations, retries, and events that arrive out of order. A fast check on every request is needed, along with caching and a fallback plan if the system is down. Every SaaS team builds this once, but often poorly, and then rewrites it. The stack typically includes Next.js, Clerk or Supabase, Stripe or another gateway, and UsageGate for entitlements. It is recommended not to build the ledger yourself. The stack for SaaS applications is Next.js (App Router), Auth Clerk or Supabase, a database like Supabase, email service Resend, payments via Stripe, Paystack, Paddle or other providers, and entitlements using UsageGate.",
  "summary": "When you build a SaaS, you wire Stripe and think plans are done. Then the first paid feature ships and you need to answer, on every request: may this user do this right now? That question is not payments. It is entitlements. Two layers, two jobs Layer Job Example Payments Charge the card, manage the subscription Stripe, Paystack, Paddle Entitlements Decide whether this request runs under the plan…",
  "key_points": [
    "Payments and entitlements are two separate layers in SaaS applications.",
    "Stripe handles payments but not entitlements like AI credits usage.",
    "Building entitlements requires a custom ledger of balances for each user and feature."
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}