Skip to content

insufficient_quota: the 429 that is not a rate limit

OpenAI's billing 429 — the one known for the message “You exceeded your current quota, please check your plan and billing details” and the insufficient_quota error type — makes most people slow their request rate, and nothing changes. That is because it is a billing state, not a speed limit: per OpenAI's error-codes guide (checked 2026-10-09), error.code names the cause — no prepaid credit left, a spend limit you set, or the usage limit OpenAI assigns. This page separates billing 429s from rate-limit 429s, walks through the official-API fix for each code, and covers the prepaid-wallet route for when the real blocker is that you cannot attach a payment method at all.

What the error actually says

On the official OpenAI API a billing 429 names its cause in error.code: credit_balance_exhausted (no prepaid credits left), organization_spend_limit_exceeded or project_spend_limit_exceeded (a hard monthly spend limit you set was reached), or organization_usage_limit_exceeded (the monthly usage limit OpenAI assigns your organization). Per OpenAI's error-codes guide (checked 2026-10-09), the broader error.type can still be insufficient_quota. Whatever the code, waiting or backoff does not clear it. An illustrative body for a depleted prepaid balance:

response.json
{
  "error": {
    "message": "...",
    "type": "insufficient_quota",
    "code": "credit_balance_exhausted"
  }
}

Why you are seeing it

  • Prepaid credits are used up — error.code credit_balance_exhausted, the most common case on pay-as-you-go accounts.
  • No payment method is attached, or the card on file was declined when you tried to buy credits, so no new credit arrived.
  • A hard monthly spend limit on the organization or the project has been reached — organization_spend_limit_exceeded or project_spend_limit_exceeded; spend alerts alone never block requests.
  • The organization reached the monthly usage limit OpenAI assigns to it — organization_usage_limit_exceeded, separate from any limit you set.
  • The key belongs to a project whose own spend limit is exhausted, even if another project of yours can still run — per OpenAI, other projects continue unless their own limit or the organization's is reached.

Billing 429 vs rate-limit 429

The official API uses 429 for both. They need opposite responses, so read error.code before changing anything:

Billing 429 vs rate-limit 429
Billing 429Rate-limit 429
What error.code sayscredit_balance_exhausted, organization_spend_limit_exceeded, project_spend_limit_exceeded or organization_usage_limit_exceeded (error.type can still be insufficient_quota)A “Rate limit reached for requests” or tokens message for your tier, or slow_down when traffic ramps up too quickly
What it meansNo usable credit, or a spend or usage limit reached.Too many requests or tokens per minute, or a ramp that is too steep.
Retrying helps?Never — OpenAI's guide says retrying billing, spend or quota errors won't restore access.Yes — follow Retry-After when it is present, otherwise back off with jitter.
The fixAdd credits, fix the payment method, raise or remove the hard spend limit, or request a higher usage limit.Slow down, batch, ramp gradually, or request a higher tier limit.

Fix it on the official API

  • Read error.code first; it names which of the four billing causes you hit.
  • credit_balance_exhausted: open the billing settings and check the prepaid credit balance; if it is depleted, add credits, and fix the payment method if a purchase failed.
  • organization_spend_limit_exceeded or project_spend_limit_exceeded: raise or remove the hard limit in the organization limits or the project's settings, or wait for the monthly reset; a conservative monthly cap silently reintroduces this error mid-month.
  • organization_usage_limit_exceeded: request a higher approved usage limit, or contact OpenAI support.
  • Retrying does not clear these codes: after you raise or remove a limit, traffic resumes once the update propagates (per OpenAI's spend-limits guide, checked 2026-10-09).

When the real blocker is payment, not usage

For many developers the loop is unbreakable: the fix requires attaching a card the platform accepts, and no such card exists — regional cards get declined and the account sits at $0 forever. Router One removes that dependency with a prepaid wallet. Top up with a card or Alipay through one hosted checkout, or with USDT/USDC on six chains (Tron, BSC, Ethereum, Polygon, Base, Arbitrum). No US credit card required. Balance-out returns a clear 402 (never a misleading 429), and each API key can carry its own maxSpend cap so one runaway project cannot drain the wallet.

Point your client at the gateway

Your request code does not change — swap the base URL and key, pick any model ID from the /models catalog, and the same call works:

terminal.sh
curl https://api.router.one/v1/chat/completions \
  -H "Authorization: Bearer sk-your-router-one-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<model-id-from-/models>",
    "messages": [{"role": "user", "content": "hello"}]
  }'

FAQ

Why does OpenAI use 429 for a billing problem?

The platform reuses the 429 status for throughput limits and for billing states, and tells them apart in the error body: error.code names the billing cause (credit_balance_exhausted, organization_spend_limit_exceeded, project_spend_limit_exceeded, organization_usage_limit_exceeded), while a rate limit carries its own message or the slow_down code. Router One keeps the two conditions apart: money problems return 402, speed problems return 429, so your retry logic never spins on an unpayable request.

I barely send any requests — how can I exceed a quota?

A billing 429 is not about request volume. A depleted prepaid balance, a monthly spend limit you set that is already spent, or OpenAI's monthly usage limit returns 429 on the next request, however few you send.

Do I have to rewrite anything to switch to a gateway?

No. Router One implements the OpenAI Chat Completions contract, so you change the base URL and API key and keep your SDK and request code. See the OpenAI-compatible API page for details.

How do I stop one project from draining the whole balance?

Create a separate Router One key per project and set maxSpend on each in Dashboard → API Keys. A key that hits its cap returns 402 while every other key keeps working — per-key budgets are the point of the wallet model.

Can I still hit 429 on Router One?

No low fixed cap for normal paid usage. Each key and each account runs under default request-per-minute and token-per-minute limits, and upstream constraints may still apply; if a request returns 429, back off and retry (honor Retry-After when it is sent), and if your traffic needs higher limits, email support@router.one to have the key or account limits raised.