Back to guides
Troubleshooting·August 21, 2026·6 min read

OpenAI “You exceeded your current quota” (insufficient_quota) — why waiting never fixes it

This is the 429 that backoff cannot fix. insufficient_quota means your account has no spendable credit — the request was rejected before any model ran, and it will keep being rejected until billing changes. Here is how to confirm which billing state you're in and clear it in minutes.

Last reviewed on .

This is the 429 that backoff cannot fix. insufficient_quota means your account has no spendable credit — the request was rejected before any model ran, and it will keep being rejected until billing changes. Here is how to confirm which billing state you're in and clear it in minutes.

The error

response (HTTP 429)
{
  "error": {
    "message": "You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.",
    "type": "insufficient_quota",
    "param": null,
    "code": "insufficient_quota"
  }
}

Causes and fixes at a glance

CauseFix
Prepaid credit balance is $0The API is prepaid: buy credits (or enable auto-recharge) under Settings → Billing. A saved card alone adds nothing until credits are purchased.
Free trial credits expired or spentTrial grants expire (typically after 3 months) even if unused. The fix is the same: add a payment method and purchase credits.
Monthly budget limit reachedA budget you set yourself under Limits blocks requests for the rest of the month once hit. Raise it, or wait for the month to roll over.
Key belongs to a project or org with no budgetsk-proj- keys spend from their project; a project can have its own (lower) limit than the org. Check the key's project in the dashboard, not just the org total.

Confirm it's quota, not rate limiting

Read error.type. rate_limit_exceeded clears on its own within a minute and deserves backoff; insufficient_quota never clears on its own and retrying it is pure noise. If you're unsure, one retry after 60 seconds settles it: still 429 with the same message means billing.

Check the credit balance the key actually spends from

In platform.openai.com → Settings → Billing, look at the credit balance. Zero or negative: purchase credits. Then check Settings → Limits for a monthly budget cap, and — for sk-proj- keys — the owning project's own usage limits. All three can independently produce this error.

Stop the recurrence, not just the incident

Enable auto-recharge with a sensible threshold so a busy weekend doesn't take production down, and set the budget alert (not just the hard cap) so you hear about approaching limits before requests start failing.

If you’re calling through Kunavo

Kunavo runs the same prepaid model, so the honest comparison is about the wallet's blast radius, not the mechanism: one Kunavo balance covers GPT, Claude and Gemini together, priced per token, and failed requests are never billed. When Kunavo's own wallet runs dry you get a 402 with code insufficient_quota (deliberately the same code, so OpenAI-SDK error handling carries over) — topping up clears it instantly, with no monthly caps to un-stick. Budgeting the fix? Current per-token GPT rates, with OpenAI's official list beside ours, are on the GPT API price list.

FAQ

I added a credit card — why am I still getting insufficient_quota?

Because the API spends prepaid credits, not the card directly. Adding a card only enables purchasing; you still have to buy credits or switch on auto-recharge. The error clears within a minute or two of the balance going positive.

Does insufficient_quota ever fix itself?

Only in one case: a monthly budget cap, which resets when the month rolls over. The zero-balance and expired-trial cases persist until you buy credits. Either way, retry loops don't help — the request is rejected before any model runs.

Do the failed 429 requests cost anything?

No — OpenAI rejects them before inference, and on Kunavo failed requests are never billed either. The cost is downtime, which is why auto-recharge plus a budget alert beats a hard cap alone.

Related guides

More error semantics live in the error reference; getting a key takes a minute via sign up and the authentication docs.