Skip to main content

How Cursor Bills

Cursor combines a monthly subscription with a depleting pool of included usage. Users pay a predictable price, and Cursor covers the variable cost of different AI models from that pool. Pricing Tiers: Cursor offers tiers from Hobby to Ultra. Cursor’s plans include usage pools charged at each model’s API price, not fixed request counts (Cursor pricing docs). The request allowances in the table are illustrative values this deconstruction models. Model-Weighted Depletion: Each request consumes credits based on the cost of the underlying model. One subscription covers several model providers, and expensive operations draw more from the pool. Cursor doesn’t publish per-request credit costs, so the weights below are illustrative. Credit Exhaustion and Overages: When credits run out, users move to a “Slow” queue with cheaper models instead of being cut off. Users can also enable on-demand usage to keep premium access, billed at the end of the cycle. Enterprise: On the Enterprise plan, the whole organization shares one usage pool. Heavy users draw from the same pool as everyone else, so one person’s limit doesn’t block them while teammates have unused capacity. Cursor lists pooled usage as an Enterprise feature on its pricing page.

What Makes It Unique

Cursor’s model balances user experience against infrastructure cost in four ways:
  • Provider Abstraction: One subscription wraps several LLM providers, such as OpenAI and Anthropic. Cursor handles the provider pricing and API keys.
  • Weighted Depletion: Powerful models cost more credits, so the price of a request tracks its cost.
  • Graceful Degradation: The “Slow” queue replaces a hard cutoff. Users stay in the product, and the slower experience encourages an upgrade.
  • Pooled Credits: An organization-level pool lets a team share capacity instead of managing individual limits.

Build This with Dodo Payments

You can build this model with Dodo Payments credit entitlements and usage-based billing. The steps below create the credit, the plans, the meter, the slow-queue logic, and the checkout.
1

Create a Custom Unit Credit Entitlement

Go to Products → Credits and click Create Credit. This credit represents the “Premium Requests” that come with each subscription. Use these settings:
  • Credit Type: Custom Unit
  • Unit Name: “Premium Requests”
  • Precision: 0 (a request can’t be split)
  • Credit Expiry: 30 days (credits reset each billing cycle)
  • Rollover: Disabled (unused requests don’t carry over)
  • Allow Overage: Enabled
  • Price Per Unit: $0.04 (the cost of each request after the included pool is used)
  • Overage Behavior: Bill overage at billing (the overage cost is added to the next invoice)
Each user gets a fixed pool of requests per cycle and pays for extra requests at the per-unit price.
2

Create Subscription Products

Create one subscription product per tier. Attach the same credit entitlement to each product with a different Credits issued per billing cycle value. One credit system across all tiers keeps upgrades and downgrades simple.
  • Hobby: $0/month, 50 credits/cycle
  • Pro: $20/month, 500 credits/cycle
  • Pro+: $60/month, 5000 credits/cycle (effectively unlimited for most users)
  • Ultra: $200/month, 50000 credits/cycle (effectively unlimited)
When a customer subscribes, Dodo Payments grants the product’s credits for the billing cycle and grants them again at each renewal.
3

Create a Usage Meter Linked to Credits

Create a meter with the event name ai.request, Sum aggregation, and credit_cost as the Over Property. On your usage-based product, toggle Bill usage in Credits, select the credit entitlement, and set Meter units per credit to 1.Your application decides the credit cost of each request from the model and the action type, then sends it in the event:
A Sum meter over credit_cost lets a single event carry any weight. You send one event per request instead of one event per credit, which keeps high-volume ingestion small.
4

Handle Credit Exhaustion (Slow Queue)

Subscribe to the credit.balance_low webhook. When a customer’s balance falls below the Low Balance Threshold set on the product, move them to a slow queue in your application. This is the graceful degradation logic.
5

Create Checkout

Create a checkout session when a user subscribes to a plan. Dodo Payments processes the payment, calculates tax, and grants the plan’s credits.

Accelerate with the LLM Ingestion Blueprint

The credit-weighted events above drive billing. To also record raw token consumption per provider, run the LLM Ingestion Blueprint alongside your credit system.
Each tracked call sends inputTokens, outputTokens, totalTokens, and model in the event metadata. You get two layers of data: credit-weighted events for billing and raw token counts for cost and margin analysis.
The LLM Blueprint supports OpenAI, Anthropic, Groq, Google Gemini, OpenRouter, and the Vercel AI SDK. See the full blueprint documentation for all supported providers.

Pooled Team Credits (Enterprise)

Cursor’s Enterprise plan pools usage across a team. To build this with Dodo Payments, create one subscription for the organization instead of one per user. The team’s usage then accrues to a single billing entity, which larger customers expect.

Implementation Strategy

  1. Organization-Level Customer: Create one Dodo Payments customer for the whole organization. This customer holds the shared credit pool, and all invoices and credit grants belong to its customer_id.
  2. Seat-Based Billing: Charge a per-user platform fee with a seat add-on, as described in Seat-Based Billing. When the team adds a member, change the add-on quantity. Revenue grows with the number of users, and the credit pool stays separate.
  3. Shared Usage Tracking: Send every team member’s requests with the organization’s customer_id, so each request depletes the same pool. To report on individual users, add a user_id to the event metadata.
Each member pays a predictable platform fee, and the team shares one pool of credits for the expensive AI resources. Members don’t manage their own limits.

Comparison with Traditional SaaS Billing

Traditional SaaS billing uses flat-rate tiers, for example $10/month for 100 units. A user who needs 101 units must often jump to a $50/month tier. This “cliff” frustrates users and drives churn. Flat tiers also ignore the different costs of different kinds of usage, which matter for AI products. A Cursor-style model built on Dodo Payments avoids these problems:
  • No “Cliff” Effects: Users don’t have to upgrade when they hit a limit. They can pay for overage or accept slower performance, so they keep working in the product.
  • Cost Alignment: Revenue follows infrastructure cost. Users of expensive models pay more, through credits or overage, which protects your margins on high-cost features.
  • Better Retention: Users who reach their limit can keep working instead of being cut off. Continued use builds loyalty and raises customer lifetime value.

Handling Model Updates and Evolution

AI providers update and replace models often, and a new model can have a different cost. Because credit costs live in your application, you can price a new model without migrating billing data. To add a more expensive model, give it a higher cost in getCreditCost. You don’t change the credit entitlement, the meter, or existing subscriptions. Billing stays separate from application logic, so you can ship model changes without touching billing.

User Notifications and Transparency

Show users how many credits they have used so they can manage cost and trust the bill. The credit.balance_low webhook fires when a balance drops below the product’s Low Balance Threshold. For more checkpoints, such as 50% and 80% usage, compare the balance in credit.deducted events against the plan’s allocation. Send these alerts by email, in-app message, or Slack. A timely warning lets users reduce usage or upgrade before they reach the slow queue, which reduces support tickets.

Security and Fraud Prevention

Credits have direct monetary value, so protect the system that spends them.
  • Idempotency: Give every usage event a unique event_id. Dodo Payments uses event_id to detect duplicates, so a network retry with the same ID doesn’t charge the user twice.
  • Rate Limiting: Limit request rates in your application so one user can’t exhaust their credits, or your provider budget, too quickly.
  • Monitoring: Watch usage for anomalies such as account sharing or automated abuse. The meter dashboard’s Customers view shows per-customer usage totals.

Best Practices for Credit Systems

Keep these practices in mind when you design a credit system:
  1. Keep it Simple: Users should understand what a request costs and how many credits they have left.
  2. Provide Value: Price requests so users feel the credits are worth it. A cost that feels too high for a small action reads as nickel-and-diming.
  3. Be Transparent: Show the current credit balance and usage history. Customers can also see both in the Customer Portal.
  4. Automate Everything: Use Dodo Payments webhooks and APIs to automate billing tasks and remove manual work.

Key Dodo Features Used

Credit-Based Billing

Manage depleting credit pools and overages with custom units.

Subscriptions

Set up recurring billing for different tiers with integrated credits.

Usage-Based Billing

Track events and bill based on consumption.

Event Ingestion

Send high-volume usage data to Dodo Payments.

Webhooks

React to credit balance changes and automate user tiering.

LLM Ingestion Blueprint

Automatic token tracking across multiple LLM providers.
Last modified on September 26, 2026