Aug 9, 2025

Aug 9, 2025

The complete guide to Cursor pricing in 2025

The complete guide to Cursor pricing in 2025

Aug 9, 2025

Aug 9, 2025

10 mins

10 mins

Koshima Satija

Koshima Satija

Co-founder, Flexprice

Co-founder, Flexprice

Cursor is an AI code editor used heavily by developers for code generation, and background agents. As of August 2025, its pricing has multiple components; monthly plans, usage credit pools, overages, and model-based feature access.

cursor's ai code editor homepage

For developers, unclear pricing isn’t a minor inconvenience, it affects whether you can trust the tool in production. Cursor’s June 2025 pricing change, which moved from request-based to usage-based billing, triggered exactly those concerns and became a major discussion point in its community.

This breakdown explains Cursor’s current pricing, why it’s structured this way, and how to pick a plan based on actual usage, not just the pricing table.

How Cursor’s pricing changed from request-based limits to usage-based credit pools

In March 2025, Cursor’s Pro plan cost $20/month and included:

  • Unlimited Tab completions

  • 500 fast premium requests/month

  • Unlimited slow premium requests

Teams were $40/user/month with SSO, privacy mode, and admin features. Limits were based on the number of requests, not the compute cost of those requests.

In June 2025, Cursor replaced request caps with a monthly usage credit pool pinned to model API pricing. On Pro, this equals $20 worth of non-Auto model usage each month, plus unlimited Auto. After the pool is used up, you can either switch to Auto or enable overages at API cost.

Cursor said this shift was to align pricing with actual compute cost, heavier models, longer contexts, and MAX mode consume more credits, while lighter use stays within the pool. The rollout, however, was rushed and poorly communicated, leading to backlash from existing users.

The backlash Cursor faced after the June 2025 pricing change

When Cursor moved from request-based limits to usage-based credit pools in June 2025, the announcement was poorly timed and poorly explained. Existing customers reported being overcharged without prior warning, as the new system measured consumption in dollar-equivalent credits tied to model API costs, something many hadn’t tracked before.

The main pain points:

  • “Unlimited” confusion, many assumed it applied to all models, not just Auto.

  • No clear usage meter, developers couldn’t see in real time how much of their pool was left.

  • Short notice, no extended transition window before charges kicked in.

By July 4, Cursor posted an apology, clarified the new rules, and offered refunds for unexpected usage between June 16 and July 4. The damage was partly reputational: on Reddit and Cursor’s forum, threads remain where users share billing screenshots and warn others to watch their usage closely.

Check out this Reddit thread by Cursor

reddit image of an user talking about cursor's new pricing change


How Cursor’s August 2025 pricing is structured and calculated

cursor's pricing in august 2025


Cursor’s August 2025 pricing uses a hybrid model: a flat monthly fee, an included usage credit pool pegged to model API pricing, and optional overages if you exceed that pool.

Plans:

  • Hobby (Free): Entry-level limits on Tab and Agent usage.

  • Pro ($20/mo): Unlimited Tab, unlimited Auto, and a $20/month credit pool for non-Auto models.

  • Ultra ($200/mo): ~20× Pro’s usage pool, priority feature access, same unlimited Auto.

  • Teams ($40/user/mo): All Pro features plus SSO, admin controls, and per-user request accounting (~500 included Agent requests/user, with some models costing more than 1 request).

  • Enterprise: Custom usage and controls.

How usage works:

  • Auto requests are unlimited on Pro/Ultra.

  • Non-Auto requests consume the pool at rates based on the underlying model’s API cost.

  • When the pool runs out, you can switch to Auto or enable pay-as-you-go overages.

Overages are charged at raw API rates, so heavier models, longer contexts, and MAX mode deplete credits faster.

How Cursor’s August 2025 pricing is structured and calculated

Cursor’s August 2025 pricing uses a hybrid model: a flat monthly fee, an included usage credit pool pegged to model API pricing, and optional overages if you exceed that pool.

Plans:

  • Hobby (Free): Entry-level limits on Tab and Agent usage.

  • Pro ($20/mo): Unlimited Tab, unlimited Auto, and a $20/month credit pool for non-Auto models.

  • Ultra ($200/mo): ~20× Pro’s usage pool, priority feature access, same unlimited Auto.

  • Teams ($40/user/mo): All Pro features plus SSO, admin controls, and per-user request accounting (~500 included Agent requests/user, with some models costing more than 1 request).

  • Enterprise: Custom usage and controls.

How usage works:

  • Auto requests are unlimited on Pro/Ultra.

  • Non-Auto requests consume the pool at rates based on the underlying model’s API cost.

  • When the pool runs out, you can switch to Auto or enable pay-as-you-go overages.

Overages are charged at raw API rates, so heavier models, longer contexts, and MAX mode deplete credits faster.

Get started with your billing today.

Get started with your billing today.

How overage charges work once you exceed Cursor’s usage pool

Every Pro or Ultra plan comes with a monthly allowance for non-Auto models.

  • Pro: $20 worth of usage.

  • Ultra: About 20× Pro’s allowance.

When you use a non-Auto model, the cost is subtracted from that allowance. Bigger models and longer contexts cost more, so your allowance runs out faster if you use those often.

If you finish your allowance before the month ends, you have two choices:

  1. Switch to Auto,  it’s unlimited on Pro/Ultra, but may not always run on the largest model.

  2. Pay for extra usage, charged at the same price the model’s API would cost.

Example: If you spend most of your time in MAX mode, a single request might use several times more allowance than a normal request. If you mostly use smaller models, you’ll stretch your allowance much further.

How models and features affect what you can use and what you pay

Not all Cursor features work the same way, or cost the same to use.

Auto vs non-Auto models:

  • Auto is unlimited on Pro and Ultra. Cursor chooses the model for you, balancing speed and cost.

  • Non-Auto models (like Claude Sonnet or GPT-4.1) use up your monthly allowance and cost more if you go over.

MAX mode:

  • Gives you bigger context and longer reasoning, but uses more allowance per request.

  • The bigger the context, the faster your allowance runs out.

BYO API key limits:

  • You can connect your own API key for some models to avoid using your allowance.

  • But key features, like Tab and Apply from Chat, run on Cursor’s own models and can’t be billed to your key.

Why this matters:
If most of your work is Tab or Auto, you can stay within Pro’s limits. If you run MAX mode or specific non-Auto models all day, expect to need more than the base plan.

What happened during the June 2025 pricing rollout and why it frustrated developers

On June 16, 2025, Cursor rolled out its new usage-based pricing. The change replaced request limits with dollar-based usage pools, but the announcement left out key details developers needed to budget their usage.

Main issues developers raised:

  • Confusion about “unlimited”, many thought it applied to all models, not just Auto.

  • No live usage tracker, you couldn’t see in real time how much of your allowance was gone.

  • Short notice, the switch happened without a clear transition period, so extra charges hit immediately.

By July 4, Cursor posted an apology, clarified that unlimited only applied to Auto, and offered refunds for unexpected usage between June 16 and July 4.

While the refund helped, Reddit threads and forum posts show many developers still hesitant about the model because tracking is still limited.

The incident highlighted a key lesson: when pricing is tied to usage, visibility and predictability matter as much as the rate itself.

How to choose the right Cursor plan for your workflow

Picking the right plan comes down to how often you use non-Auto models and how heavy your requests are.

If you mostly use Tab and Auto:

  • Go with Pro ($20), you’ll have unlimited Auto and likely stay within the $20 non-Auto allowance.

If you run MAX mode or premium non-Auto models daily:

  • Choose Ultra ($200), ~20× the usage allowance covers heavy, high-context work.

If you’re part of a team needing SSO and admin controls:

  • Use Teams ($40/user), same features as Pro plus usage tracking and security features for orgs.

If you want predictable cost above all else:

  • Stick to Auto and avoid overages, or use BYO API key where possible.

The easiest way to decide: Track your model usage for a week. If you’re blowing through Pro’s $20 allowance in days, Ultra or Teams will prevent constant overage charges.

Hidden costs and upgrade traps to watch out for

Cursor’s pricing table doesn’t always show the extra ways you can spend more than you expect.

BYO API key limitations

  • You can connect your own API key for some models to bypass your allowance.

  • But key features like Tab and Apply from Chat always run on Cursor’s own models, so they can’t be billed to your key.

Background Agents

  • Billed separately at the model’s API rate.

  • No fixed monthly cap, you need to set your own spend limit.

Bugbot subscription

  • Not included in Pro/Ultra. Costs extra ($40/mo for Pro, $40/user for Teams).

MAX mode

  • Larger context windows and deeper reasoning use more credits per request.

  • Heavy MAX usage can burn through your pool in days, even on Ultra.

Upgrade pressure

  • If you regularly hit your allowance early, you may feel forced into Ultra or Teams.

  • Without real-time usage tracking, it’s hard to judge when you’re nearing that point.

Knowing these helps you avoid unexpected charges and choose a pricing plan based on actual, not assumed, usage.

How to replicate Cursor’s pricing with Flexprice

Complete guide to replicate Cursor AI code editor multi-tier pricing structure with usage-based billing in flexprice.io.

Cursor uses a sophisticated multi-tier pricing model with AI model usage-based scaling:

Plan

Base Price

Key Features

Hobby

$0/month

2K Tab completions, 50 slow requests, 14-day Pro trial

Pro

$20/month

Unlimited Tab, $20 API credits, unlimited Auto model

Ultra

$200/month

Everything in Pro + 20x usage limits on all models

Teams

$40/user/month

Pro features + team collaboration + admin dashboard

Enterprise

Custom pricing

Teams features + SSO + compliance + priority support

Prerequisites

  • flexprice.io account

  • API key ready

  • Understanding of AI model pricing and token consumption

  • Knowledge of developer tools and IDE billing models

Step 1: Get Your API Key

  • Log in to your flexprice.io dashboard

  • Navigate to Settings → API Keys

  • Copy your API key

Step 2: Create Core Usage Features

Create metered features for all Cursor usage metrics:

Tab Completions Feature

curl --location 'https://api.cloud.flexprice.io/v1/features' \
  -X POST \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Tab Completions",
    "type": "metered",
    "unit_singular": "completion",
    "unit_plural": "completions",
    "description": "AI-powered code completions and suggestions",
    "meter": {
      "aggregation": {
        "type": "SUM",
        "field": "completion_count",
        "multiplier": 1
      },
      "reset_usage": "BILLING_PERIOD",
      "name": "Tab Completions",
      "filters": [],
      "event_name": "tab.completions"
    }
  }'

Frontier Model Usage Feature

curl --location 'https://api.cloud.flexprice.io/v1/features' \
  -X POST \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Frontier Model Usage",
    "type": "metered",
    "unit_singular": "dollar",
    "unit_plural": "dollars",
    "description": "Usage credits for premium AI models (GPT-4, Claude, etc.)",
    "meter": {
      "aggregation": {
        "type": "SUM",
        "field": "api_cost_usd",
        "multiplier": 1
      },
      "reset_usage": "BILLING_PERIOD",
      "name": "Frontier Model Usage",
      "filters": [],
      "event_name": "models.frontier_usage"
    }
  }'

Fast Premium Requests Feature

curl --location 'https://api.cloud.flexprice.io/v1/features' \
  -X POST \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Fast Premium Requests",
    "type": "metered",
    "unit_singular": "request",
    "unit_plural": "requests",
    "description": "High-priority AI model requests with fast response",
    "meter": {
      "aggregation": {
        "type": "SUM",
        "field": "fast_requests",
        "multiplier": 1
      },
      "reset_usage": "BILLING_PERIOD",
      "name": "Fast Premium Requests",
      "filters": [],
      "event_name": "models.fast_requests"
    }
  }'

Slow Premium Requests Feature

curl --location 'https://api.cloud.flexprice.io/v1/features' \
  -X POST \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Slow Premium Requests",
    "type": "metered",
    "unit_singular": "request",
    "unit_plural": "requests",
    "description": "Standard priority AI model requests",
    "meter": {
      "aggregation": {
        "type": "SUM",
        "field": "slow_requests",
        "multiplier": 1
      },
      "reset_usage": "BILLING_PERIOD",
      "name": "Slow Premium Requests",
      "filters": [],
      "event_name": "models.slow_requests"
    }
  }'

Tool Calls Feature

curl --location 'https://api.cloud.flexprice.io/v1/features' \
  -X POST \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Tool Calls",
    "type": "metered",
    "unit_singular": "call",
    "unit_plural": "calls",
    "description": "AI agent tool and function invocations",
    "meter": {
      "aggregation": {
        "type": "SUM",
        "field": "tool_calls",
        "multiplier": 1
      },
      "reset_usage": "BILLING_PERIOD",
      "name": "Tool Calls",
      "filters": [],
      "event_name": "agent.tool_calls"
    }
  }'

Background Agent Usage Feature

curl --location 'https://api.cloud.flexprice.io/v1/features' \
  -X POST \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Background Agent Usage",
    "type": "metered",
    "unit_singular": "dollar",
    "unit_plural": "dollars",
    "description": "Background AI agent compute and model usage",
    "meter": {
      "aggregation": {
        "type": "SUM",
        "field": "background_cost_usd",
        "multiplier": 1
      },
      "reset_usage": "BILLING_PERIOD",
      "name": "Background Agent Usage",
      "filters": [],
      "event_name": "background.agent_usage"
    }
  }'

Code Reviews Feature (Bugbot)

curl --location 'https://api.cloud.flexprice.io/v1/features' \
  -X POST \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Code Reviews",
    "type": "metered",
    "unit_singular": "review",
    "unit_plural": "reviews",
    "description": "AI-powered code reviews and PR analysis",
    "meter": {
      "aggregation": {
        "type": "SUM",
        "field": "review_count",
        "multiplier": 1
      },
      "reset_usage": "BILLING_PERIOD",
      "name": "Code Reviews",
      "filters": [],
      "event_name": "bugbot.reviews"
    }
  }'

Pull Requests Feature

curl --location 'https://api.cloud.flexprice.io/v1/features' \
  -X POST \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Pull Requests",
    "type": "metered",
    "unit_singular": "PR",
    "unit_plural": "PRs",
    "description": "Pull requests processed for code review",
    "meter": {
      "aggregation": {
        "type": "SUM",
        "field": "pr_count",
        "multiplier": 1
      },
      "reset_usage": "BILLING_PERIOD",
      "name": "Pull Requests",
      "filters": [],
      "event_name": "bugbot.pull_requests"
    }
  }'

Step 3: Create Binary Features

Create binary features for premium functionality:

Privacy Mode Feature

curl --location 'https://api.cloud.flexprice.io/v1/features' \
  -X POST \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Privacy Mode",
    "type": "binary",
    "description": "Code is never trained on, enhanced privacy controls"
  }'

Max Mode Feature

curl --location 'https://api.cloud.flexprice.io/v1/features' \
  -X POST \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Max Mode",
    "type": "binary",
    "description": "Enhanced accuracy with more powerful AI models"
  }'

Background Agents Feature

curl --location 'https://api.cloud.flexprice.io/v1/features' \
  -X POST \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Background Agents",
    "type": "binary",
    "description": "AI agents that work in the background on code tasks"
  }'

Team Collaboration Feature

curl --location 'https://api.cloud.flexprice.io/v1/features' \
  -X POST \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Team Collaboration",
    "type": "binary",
    "description": "Team workspaces, shared projects, and collaboration tools"
  }'

Admin Dashboard Feature

curl --location 'https://api.cloud.flexprice.io/v1/features' \
  -X POST \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Admin Dashboard",
    "type": "binary",
    "description": "Usage analytics, team management, and admin controls"
  }'
SSO Integration Feature

```bash
curl --location 'https://api.cloud.flexprice.io/v1/features' \
  -X POST \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "SSO Integration",
    "type": "binary",
    "description": "SAML, OIDC, and enterprise SSO integration"
  }'

Step 4: Create Hobby Plan (Free Tier)

curl --request POST \
  --url 'https://api.cloud.flexprice.io/v1/plans' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --data '{
    "name": "Cursor Hobby Plan",
    "description": "Free forever for personal projects",
    "lookup_key": "cursor_hobby",
    "prices": [],
    "entitlements": [
      {
        "feature_id": "feat_tab_completions_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": false,
        "usage_limit": 2000,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_slow_requests_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": false,
        "usage_limit": 50,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_fast_requests_123",
        "feature_type": "metered",
        "is_enabled": false,
        "is_soft_limit": false,
        "usage_limit": 0,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_frontier_usage_123",
        "feature_type": "metered",
        "is_enabled": false,
        "is_soft_limit": false,
        "usage_limit": 0,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_privacy_mode_123",
        "feature_type": "binary",
        "is_enabled": false
      },
      {
        "feature_id": "feat_max_mode_123",
        "feature_type": "binary",
        "is_enabled": false
      },
      {
        "feature_id": "feat_background_agents_123",
        "feature_type": "binary",
        "is_enabled": false
      }
    ]
  }'

Step 5: Create Pro Plan

curl --request POST \
  --url 'https://api.cloud.flexprice.io/v1/plans' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --data '{
    "name": "Cursor Pro Plan",
    "description": "Everything in Hobby, plus unlimited usage",
    "lookup_key": "cursor_pro",
    "prices": [
      {
        "amount": "2000",
        "billing_model": "FLAT_FEE",
        "currency": "USD",
        "description": "Pro Plan Base Fee",
        "type": "RECURRING",
        "billing_period": "MONTHLY",
        "billing_period_count": 1
      },
      {
        "amount": "100",
        "billing_model": "PER_UNIT",
        "currency": "USD",
        "description": "Frontier Model Usage overage (per dollar)",
        "type": "USAGE",
        "tier_mode": "VOLUME",
        "tiers": [
          {
            "unit_amount": "100",
            "up_to": null
          }
        ],
        "filters": {
          "feature": "frontier_usage"
        }
      },
      {
        "amount": "100",
        "billing_model": "PER_UNIT",
        "currency": "USD",
        "description": "Background Agent Usage overage (per dollar)",
        "type": "USAGE",
        "tier_mode": "VOLUME",
        "tiers": [
          {
            "unit_amount": "100",
            "up_to": null
          }
        ],
        "filters": {
          "feature": "background_agent_usage"
        }
      }
    ],
    "entitlements": [
      {
        "feature_id": "feat_tab_completions_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": false,
        "usage_limit": -1,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_frontier_usage_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": true,
        "usage_limit": 20,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_fast_requests_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": false,
        "usage_limit": -1,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_slow_requests_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": false,
        "usage_limit": -1,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_tool_calls_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": false,
        "usage_limit": -1,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_background_usage_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": true,
        "usage_limit": 0,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_privacy_mode_123",
        "feature_type": "binary",
        "is_enabled": true
      },
      {
        "feature_id": "feat_max_mode_123",
        "feature_type": "binary",
        "is_enabled": true
      },
      {
        "feature_id": "feat_background_agents_123",
        "feature_type": "binary",
        "is_enabled": true
      }
    ]
  }'

Step 6: Create Ultra Plan

curl --request POST \
  --url 'https://api.cloud.flexprice.io/v1/plans' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --data '{
    "name": "Cursor Ultra Plan",
    "description": "Everything in Pro, plus 20x usage limits",
    "lookup_key": "cursor_ultra",
    "prices": [
      {
        "amount": "20000",
        "billing_model": "FLAT_FEE",
        "currency": "USD",
        "description": "Ultra Plan Base Fee",
        "type": "RECURRING",
        "billing_period": "MONTHLY",
        "billing_period_count": 1
      },
      {
        "amount": "100",
        "billing_model": "PER_UNIT",
        "currency": "USD",
        "description": "Frontier Model Usage overage (per dollar)",
        "type": "USAGE",
        "tier_mode": "VOLUME",
        "tiers": [
          {
            "unit_amount": "100",
            "up_to": null
          }
        ],
        "filters": {
          "feature": "frontier_usage"
        }
      },
      {
        "amount": "100",
        "billing_model": "PER_UNIT",
        "currency": "USD",
        "description": "Background Agent Usage overage (per dollar)",
        "type": "USAGE",
        "tier_mode": "VOLUME",
        "tiers": [
          {
            "unit_amount": "100",
            "up_to": null
          }
        ],
        "filters": {
          "feature": "background_agent_usage"
        }
      }
    ],
    "entitlements": [
      {
        "feature_id": "feat_tab_completions_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": false,
        "usage_limit": -1,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_frontier_usage_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": true,
        "usage_limit": 400,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_fast_requests_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": false,
        "usage_limit": -1,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_slow_requests_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": false,
        "usage_limit": -1,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_tool_calls_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": false,
        "usage_limit": -1,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_background_usage_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": true,
        "usage_limit": 0,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_privacy_mode_123",
        "feature_type": "binary",
        "is_enabled": true
      },
      {
        "feature_id": "feat_max_mode_123",
        "feature_type": "binary",
        "is_enabled": true
      },
      {
        "feature_id": "feat_background_agents_123",
        "feature_type": "binary",
        "is_enabled": true
      }
    ]
  }'

Step 7: Create Teams Plan

curl --request POST \
  --url 'https://api.cloud.flexprice.io/v1/plans' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --data '{
    "name": "Cursor Teams Plan",
    "description": "Everything in Pro, plus team features",
    "lookup_key": "cursor_teams",
    "prices": [
      {
        "amount": "4000",
        "billing_model": "FLAT_FEE",
        "currency": "USD",
        "description": "Teams Plan Base Fee per user",
        "type": "RECURRING",
        "billing_period": "MONTHLY",
        "billing_period_count": 1
      },
      {
        "amount": "100",
        "billing_model": "PER_UNIT",
        "currency": "USD",
        "description": "Frontier Model Usage overage (per dollar)",
        "type": "USAGE",
        "tier_mode": "VOLUME",
        "tiers": [
          {
            "unit_amount": "100",
            "up_to": null
          }
        ],
        "filters": {
          "feature": "frontier_usage"
        }
      },
      {
        "amount": "100",
        "billing_model": "PER_UNIT",
        "currency": "USD",
        "description": "Background Agent Usage overage (per dollar)",
        "type": "USAGE",
        "tier_mode": "VOLUME",
        "tiers": [
          {
            "unit_amount": "100",
            "up_to": null
          }
        ],
        "filters": {
          "feature": "background_agent_usage"
        }
      }
    ],
    "entitlements": [
      {
        "feature_id": "feat_tab_completions_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": false,
        "usage_limit": -1,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_frontier_usage_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": true,
        "usage_limit": 20,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_fast_requests_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": false,
        "usage_limit": -1,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_slow_requests_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": false,
        "usage_limit": -1,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_tool_calls_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": false,
        "usage_limit": -1,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_background_usage_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": true,
        "usage_limit": 0,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_privacy_mode_123",
        "feature_type": "binary",
        "is_enabled": true
      },
      {
        "feature_id": "feat_max_mode_123",
        "feature_type": "binary",
        "is_enabled": true
      },
      {
        "feature_id": "feat_background_agents_123",
        "feature_type": "binary",
        "is_enabled": true
      },
      {
        "feature_id": "feat_team_collaboration_123",
        "feature_type": "binary",
        "is_enabled": true
      },
      {
        "feature_id": "feat_admin_dashboard_123",
        "feature_type": "binary",
        "is_enabled": true
      }
    ]
  }'

Step 8: Create Enterprise Plan Template

curl --request POST \
  --url 'https://api.cloud.flexprice.io/v1/plans' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --data '{
    "name": "Cursor Enterprise Plan",
    "description": "Everything in Teams, plus enterprise features",
    "lookup_key": "cursor_enterprise",
    "prices": [
      {
        "amount": "10000",
        "billing_model": "FLAT_FEE",
        "currency": "USD",
        "description": "Enterprise Plan Base Fee per user (starting price)",
        "type": "RECURRING",
        "billing_period": "MONTHLY",
        "billing_period_count": 1
      }
    ],
    "entitlements": [
      {
        "feature_id": "feat_tab_completions_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": false,
        "usage_limit": -1,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_frontier_usage_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": true,
        "usage_limit": 100,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_team_collaboration_123",
        "feature_type": "binary",
        "is_enabled": true
      },
      {
        "feature_id": "feat_admin_dashboard_123",
        "feature_type": "binary",
        "is_enabled": true
      },
      {
        "feature_id": "feat_sso_integration_123",
        "feature_type": "binary",
        "is_enabled": true
      }
    ]
  }'

Step 9: Create Bugbot Add-on Plans

Bugbot Pro Add-on

curl --request POST \
  --url 'https://api.cloud.flexprice.io/v1/plans' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --data '{
    "name": "Bugbot Pro",
    "description": "AI-powered code reviews and bug detection",
    "lookup_key": "bugbot_pro",
    "prices": [
      {
        "amount": "4000",
        "billing_model": "FLAT_FEE",
        "currency": "USD",
        "description": "Bugbot Pro monthly fee",
        "type": "RECURRING",
        "billing_period": "MONTHLY",
        "billing_period_count": 1
      }
    ],
    "entitlements": [
      {
        "feature_id": "feat_code_reviews_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": false,
        "usage_limit": -1,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_pull_requests_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": false,
        "usage_limit": 200,
        "usage_reset_period": "MONTHLY"
      }
    ]
  }'

Bugbot Teams Add-on

curl --request POST \
  --url 'https://api.cloud.flexprice.io/v1/plans' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --data '{
    "name": "Bugbot Teams",
    "description": "Team-wide code reviews with pooled usage",
    "lookup_key": "bugbot_teams",
    "prices": [
      {
        "amount": "4000",
        "billing_model": "FLAT_FEE",
        "currency": "USD",
        "description": "Bugbot Teams per user monthly fee",
        "type": "RECURRING",
        "billing_period": "MONTHLY",
        "billing_period_count": 1
      }
    ],
    "entitlements": [
      {
        "feature_id": "feat_code_reviews_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": false,
        "usage_limit": -1,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_pull_requests_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": false,
        "usage_limit": -1,
        "usage_reset_period": "MONTHLY"
      }
    ]
  }'

Step 10: Create Student Discount Plan

curl --request POST \
  --url 'https://api.cloud.flexprice.io/v1/plans' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --data '{
    "name": "Cursor Pro Student",
    "description": "50% off Pro plan for verified students",
    "lookup_key": "cursor_pro_student",
    "prices": [
      {
        "amount": "1000",
        "billing_model": "FLAT_FEE",
        "currency": "USD",
        "description": "Pro Student Plan Base Fee (50% off)",
        "type": "RECURRING",
        "billing_period": "MONTHLY",
        "billing_period_count": 1
      },
      {
        "amount": "100",
        "billing_model": "PER_UNIT",
        "currency": "USD",
        "description": "Frontier Model Usage overage (per dollar)",
        "type": "USAGE",
        "tier_mode": "VOLUME",
        "tiers": [
          {
            "unit_amount": "100",
            "up_to": null
          }
        ],
        "filters": {
          "feature": "frontier_usage"
        }
      }
    ],
    "entitlements": [
      {
        "feature_id": "feat_tab_completions_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": false,
        "usage_limit": -1,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_frontier_usage_123",
        "feature_type": "metered",
        "is_enabled": true,
        "is_soft_limit": true,
        "usage_limit": 20,
        "usage_reset_period": "MONTHLY"
      },
      {
        "feature_id": "feat_privacy_mode_123",
        "feature_type": "binary",
        "is_enabled": true
      },
      {
        "feature_id": "feat_max_mode_123",
        "feature_type": "binary",
        "is_enabled": true
      },
      {
        "feature_id": "feat_background_agents_123",
        "feature_type": "binary",
        "is_enabled": true
      }
    ]
  }'

Step 11: Create Customer

curl --request POST \
  --url 'https://api.cloud.flexprice.io/v1/customers' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --data '{
    "name": "TechStartup Inc",
    "email": "dev@techstartup.com",
    "external_id": "cust_techstartup_123",
    "metadata": {
      "company": "TechStartup Inc",
      "industry": "Software Development",
      "plan_tier": "pro",
      "team_size": "3",
      "programming_languages": ["TypeScript", "Python", "Go"]
    }
  }'

Step 12: Create Pro Subscription

curl --request POST \
  --url 'https://api.cloud.flexprice.io/v1/subscriptions' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --data '{
    "customer_id": "cust_123456789",
    "plan_id": "plan_cursor_pro_123",
    "billing_period": "MONTHLY",
    "billing_period_count": 1,
    "currency": "USD",
    "start_date": "2025-01-15",
    "phases": [
      {
        "start_date": "2025-01-15",
        "line_items": [
          {
            "price_id": "price_pro_base_123",
            "quantity": 1,
            "display_name": "Cursor Pro Plan"
          }
        ]
      }
    ]
  }'

Step 13: Track Usage EventsTab Completions Usage

curl --request POST \
  --url 'https://api.cloud.flexprice.io/v1/usage' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --data '{
    "subscription_id": "sub_123456789",
    "feature_id": "feat_tab_completions_123",
    "quantity": 15000,
    "metadata": {
      "user_id": "dev_user_001",
      "project_id": "proj_main_app",
      "language": "typescript",
      "completion_type": "inline",
      "measurement_time": "2025-01-15T10:30:00Z"
    }
  }'

Frontier Model Usage

curl --request POST \
  --url 'https://api.cloud.flexprice.io/v1/usage' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --data '{
    "subscription_id": "sub_123456789",
    "feature_id": "feat_frontier_usage_123",
    "quantity": 25.50,
    "metadata": {
      "user_id": "dev_user_001",
      "model": "claude-3.5-sonnet",
      "request_type": "chat",
      "tokens_used": 85000,
      "api_cost": 25.50
    }
  }'

Fast Premium Requests

curl --request POST \
  --url 'https://api.cloud.flexprice.io/v1/usage' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --data '{
    "subscription_id": "sub_123456789",
    "feature_id": "feat_fast_requests_123",
    "quantity": 250,
    "metadata": {
      "user_id": "dev_user_001",
      "model": "gpt-4.1-turbo",
      "request_priority": "high",
      "response_time_ms": 1200
    }
  }'

Tool Calls Usage

curl --request POST \
  --url 'https://api.cloud.flexprice.io/v1/usage' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --data '{
    "subscription_id": "sub_123456789",
    "feature_id": "feat_tool_calls_123",
    "quantity": 45,
    "metadata": {
      "user_id": "dev_user_001",
      "tool_type": "terminal_command",
      "command": "npm install",
      "execution_time_ms": 3500
    }
  }'

Background Agent Usage

curl --request POST \
  --url 'https://api.cloud.flexprice.io/v1/usage' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --data '{
    "subscription_id": "sub_123456789",
    "feature_id": "feat_background_usage_123",
    "quantity": 8.75,
    "metadata": {
      "user_id": "dev_user_001",
      "agent_type": "code_refactor",
      "task_duration_minutes": 35,
      "api_cost": 8.75
    }
  }'

Code Reviews Usage (Bugbot)

curl --request POST \
  --url 'https://api.cloud.flexprice.io/v1/usage' \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY_HERE' \
  --data '{
    "subscription_id": "sub_123456789",
    "feature_id": "feat_code_reviews_123",
    "quantity": 12,
    "metadata": {
      "user_id": "dev_user_001",
      "repository": "main-app",
      "review_type": "automated",
      "issues_found": 3
    }
  }'

Step 14: Monitor Usage Check

Current usage across all features:

curl --location 'https://api.cloud.flexprice.io/v1/subscriptions/sub_123456789/usage' \
  --header 'x-api-key: YOUR_API_KEY_HERE'

Balancing flexibility and predictability in Cursor’s pricing

Cursor’s hybrid model offers flexibility, you can use any supported model, scale context size, and choose between unlimited Auto or pay-per-use non-Auto. This works well for developers who want control and are willing to manage usage actively.

The trade-off is predictability. If you don’t track which models you use or how often you’re in MAX mode, costs can jump unexpectedly. The June 2025 rollout showed that even well-intentioned changes can frustrate users if the rules aren’t clear and the tools to monitor usage aren’t in place.

For most developers, the best approach is to start small, track your usage for a month, and only move up when you know exactly why you need the extra headroom. Flexibility is valuable, but only if you can see, predict, and justify the cost.

More insights on billing

Insights on
billing and beyond

Explore expert tips, industry trends, and best practices for billing, pricing, and scaling revenue.

Get started with your billing today.