Cursor switches pay-per-token when your plan limit end. Calls "On-Demand usage"
by hardwellvibe | 2026-02-10 21:03:25+00:00
I was a Cursor Pro subscriber. On January 14th, I hit my subscription usage limit. No warning. No "Hey, you've used up your included quota — want to keep going at per-token rates?"
Cursor just... kept going. Silently switched me to what they call "On-Demand" billing — meaning every single token I used from that point was billed at API rates. And I had no idea.
"On-Demand usage" — who interprets that as post-paid charges?
Here's what gets me. I've lived in the US for years. My English is fine. But when I saw "On-Demand usage" in my account, I genuinely thought it meant usage within my subscription plan — as in, I'm using it on demand, whenever I need it. You know, like on-demand streaming. On-demand services. That's what the phrase means in literally every other context.
It does not mean that here. In Cursor's world, "On-Demand" means "you are now being charged per token at full API pricing and we will bill you later." If that's not deliberately misleading terminology, it's at minimum terrible UX design.
How I blew through $20 in 4 days without knowing
The claude-4.5-opus-high-thinking model costs $0.50–$4.00+ per request. I didn't know I was on per-token billing, so I kept using it like normal. Four days. $20 gone.
When I was finally blocked, I thought my subscription limit had just run out late. The UI prompted me to "add API usage" for $20, so I did — thinking it was a top-up balance I could draw from.
Nope. Cursor support later told me:

"These aren't prepayments or top-ups — they're charges for API usage that already happened."

So I wasn't adding credit. I was raising a spending cap on charges that had already been silently accumulating. The UI gave me zero indication of this.
The bill
ItemAmountPro subscription~$20On-Demand charge #1 (Jan 18)$20On-Demand charge #2 (Feb 7)$20Total for ~2.5 weeks~$60
The final invoice showed $42.12 in total On-Demand usage. After subtracting the first $20 payment and a $2.12 refund for exceeding the hard limit, I was charged another $20.
Support made it worse
I emailed asking for a refund. Denied. Fine — I used the tokens, I accept that.
But here's what I can't accept: support misrepresented the charges. They told me the Feb 7th charge was for "17 calls to gpt-5.1-codex-max totalling $0.29" with a "$20 minimum charge applied."
That made it sound like I was charged $20 for 29 cents of usage. That's not what happened at all. The $20 was the remaining balance of $42.12 across multiple models. Why frame it that way? Either support doesn't understand their own billing, or they were trying to shut down my refund request with a misleading explanation.
What Cursor needs to fix

Hard-stop when subscription limit is reached. Don't silently switch to per-token billing. Ask the user. Get explicit consent. This is basic.
Rename "On-Demand usage." Nobody interprets this as "post-paid per-token charges." Call it what it is: "Pay-per-use billing" or "Overage charges." Be honest.
Make "Add API credit" actually work like credit. If I click a button that says I'm adding $20, I expect a $20 balance. Not a silent spending cap increase on charges I didn't know existed.
Train support to explain billing accurately. Don't cherry-pick one line item to make a $20 charge look like a minimum fee issue when it's actually part of a $42 total.

My advice to Cursor users

Check your billing page constantly. The subscription-to-on-demand switch is invisible.
Avoid Opus and high-thinking models unless you're actively monitoring costs. One session can cost $10+.
When you see "add API usage," understand you're NOT adding a balance. You're raising a spending limit.
If you cancel, watch for charges that show up weeks later.

I'm done with Cursor. The tool itself is fine, but the billing system feels designed to extract maximum revenue through confusion rather than transparency.

Anyone else get caught by this? Genuinely curious if this is a widespread issue or if I'm just the lucky one.