How Cursor Bills
Cursor uses a hybrid model that combines a monthly subscription with a depleting credit pool. This approach provides a predictable price for users while managing the variable costs of different AI models. Pricing Tiers: Cursor offers tiers from Hobby to Ultra, balancing premium and standard access to fit different workflows.| Plan | Price | Premium Requests | Slow Requests |
|---|---|---|---|
| Hobby | Free | 50/month | Unlimited |
| Pro | $20/month | 500/month | Unlimited |
| Pro+ | $60/month | Unlimited premium | - |
| Ultra | $200/month | Unlimited premium | - |
| Request Type | Model | Credit Cost |
|---|---|---|
| Tab Completion | Default | 0 |
| Chat | GPT-4o Mini | 1 |
| Chat | Claude 3.5 Sonnet | 1 |
| Composer | GPT-4o | 5 |
| Agent | Claude 3.5 Sonnet | 10 |
| Agent | o1-preview | 25 |
- Enterprise and Business: Teams use pooled usage where the entire organization shares a single credit bucket. This simplifies management and ensures heavy users don’t hit individual limits while others have unused capacity.
What Makes It Unique
Cursor’s model balances user experience with infrastructure costs by solving problems that traditional SaaS billing models struggle with.- Provider Abstraction: A single subscription wraps multiple LLM providers like OpenAI and Anthropic, handling complex pricing and API keys behind the scenes.
- Weighted Depletion: Costs align with value by charging more for powerful models, making the pricing feel fair and transparent for all users.
- Graceful Degradation: The “Slow” queue prevents hard cutoffs, keeping users in the product and encouraging upgrades without being punitive.
- Pooled Credits: Team-level buckets reduce friction for enterprise customers by allowing efficient resource sharing across the entire organization.
Build This with Dodo Payments
You can replicate this exact model using Dodo Payments’ credit entitlements and usage-based billing. The following steps will guide you through the implementation.Create a Custom Unit Credit Entitlement
First, define the credit system in the Dodo dashboard. This entitlement will represent the “Premium Requests” that users get with their subscription.
- Credit Type: Custom Unit
- Unit Name: “Premium Requests”
- Precision: 0 (since you can’t use half a request)
- Credit Expiry: 30 days (this ensures credits reset each billing cycle)
- Rollover: Disabled (unused requests don’t carry over to the next month)
- Overage: Enabled
- Price Per Unit: $0.04 (the cost for each request after the initial pool is exhausted)
- Overage Behavior: Bill overage at billing (this adds the overage cost to the next invoice)
Create Subscription Products
Create separate products for each tier. Attach the same credit entitlement to each product, but with different amounts. This allows you to manage all tiers with a single credit system, making it easy to upgrade or downgrade users.
- Hobby: $0/month, 50 credits/cycle
- Pro: $20/month, 500 credits/cycle
- Pro+: $60/month, 5000 credits/cycle (effectively unlimited for most)
- Ultra: $200/month, 50000 credits/cycle (effectively unlimited)
Create a Usage Meter Linked to Credits
Create a meter named
ai.request with Sum aggregation on the credit_cost property. Link this meter to your credit entitlement by enabling the “Bill usage in Credits” toggle. Set the meter units per credit to 1.To handle model-weighted depletion, you’ll manage the credit cost at the application level. When a user makes a request, your app determines the cost based on the model or action type.Handle Credit Exhaustion (Slow Queue)
Listen for the
credit.balance_low webhook from Dodo. When a user’s credits are near zero, you can switch them to a slow queue in your application. This is where you implement the “graceful degradation” logic.Accelerate with the LLM Ingestion Blueprint
The credit-weighted billing above handles your core monetization. For deeper analytics on actual token consumption across providers, the LLM Ingestion Blueprint can run alongside your credit system.Pooled Team Credits (Enterprise)
Cursor’s Business and Enterprise plans pool credits across a team. You can implement this with Dodo by creating a single subscription for the organization rather than individual users. This ensures that the team’s usage is consolidated and managed as a single entity, which is a major requirement for larger customers.Implementation Strategy
- Organization-Level Customer: Create a single
customer_idin Dodo for the entire organization. This customer represents the billing entity for the team and holds the shared credit pool. All invoices and credit allocations are tied to this ID. - Seat-Based Billing: Use Dodo’s add-ons to charge a per-user platform fee. When a team adds a new member, you update the quantity of the “Seat” add-on. This ensures your revenue scales with the number of users while keeping the credit pool separate. It’s a clean way to handle multi-dimensional billing.
- Shared Usage Tracking: All team members’ requests are ingested using the organization’s
customer_id. This ensures that every request from any team member depletes the same central credit pool. You can still track individual user usage by including auser_idin the event metadata for internal reporting and analytics.
Comparison with Traditional SaaS Billing
Traditional SaaS billing usually involves flat-rate tiers (e.g., $10/month for 100 units). If a user needs 101 units, they often have to jump to a $50/month tier. This creates “cliff” effects that can frustrate users and lead to churn. It also doesn’t account for the variable cost of different types of usage, which is critical in the AI space. Cursor’s model, powered by Dodo, is much more flexible and fair:- No “Cliff” Effects: Users don’t have to upgrade just because they hit a limit. They can pay for overages or accept slower performance. This keeps them in the product and reduces friction, leading to higher customer satisfaction and lower churn.
- Cost Alignment: Your revenue scales directly with your infrastructure costs. If a user uses expensive models, they pay more (either through credits or overages). This protects your margins and allows you to offer high-cost features sustainably without risking your business model.
- Better Retention: By not cutting users off, you keep them engaged with your product even when they’ve reached their limit. They can continue to work, which builds long-term loyalty and increases the lifetime value of the customer. It’s a win-win for both the user and the provider.
Handling Model Updates and Evolution
One of the challenges with AI billing is that models are constantly being updated or replaced. New models might have different cost structures or performance characteristics. With Dodo’s credit system, you can handle this gracefully at the application level without needing to migrate your billing data. If you introduce a new, more expensive model, you simply update yourgetCreditCost function to assign it a higher cost. You don’t need to change your billing configuration or update existing subscriptions. This decoupling of billing and application logic is a major advantage, as it allows you to iterate on your product at the speed of AI without being constrained by your billing system.
User Notifications and Transparency
To provide a great user experience, it’s important to keep users informed about their credit usage. Transparency builds trust and helps users manage their costs effectively. You can use Dodo’s webhooks to trigger notifications at various thresholds (e.g., 50%, 80%, and 100% usage). These notifications can be sent via email, in-app alerts, or Slack messages. By providing real-time feedback on usage, you encourage users to manage their consumption or upgrade their plan before they hit the “slow queue”. This proactive approach reduces support tickets and improves the overall user experience, making your product feel more professional and user-centric.Security and Fraud Prevention
When implementing a credit-based system, it’s important to consider security and fraud prevention. Since credits have a direct monetary value, they can be a target for abuse.- Idempotency: Always use unique
event_ids when ingesting usage events to prevent double-counting. Dodo’s ingestion API handles idempotency automatically if you provide a unique ID, ensuring that a network retry doesn’t charge the user twice. - Rate Limiting: Implement rate limiting at the application level to prevent a single user from exhausting their credits (or your API budget) too quickly. This protects your infrastructure and the user’s wallet.
- Monitoring: Monitor usage patterns for anomalies that might indicate account sharing or automated abuse. Dodo’s analytics can help you identify these patterns, allowing you to take action before they become a major problem.
Best Practices for Credit Systems
When building a credit-based billing system, keep these best practices in mind:- Keep it Simple: Don’t make your credit system too complex. Users should be able to easily understand how much a request costs and how many credits they have left.
- Provide Value: Ensure that the credits provide real value to the user. If the cost of a request is too high, users will feel like they’re being nickel-and-dimed.
- Be Transparent: Always show the user their current credit balance and usage history. This builds trust and reduces confusion.
- Automate Everything: Use Dodo’s webhooks and APIs to automate as much of the billing process as possible. This reduces manual work and ensures that your billing is always accurate.
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 in real-time.
Event Ingestion
Send high-volume usage data to Dodo with low latency.
Webhooks
React to credit balance changes and automate user tiering.
LLM Ingestion Blueprint
Automatic token tracking across multiple LLM providers.