insufficient_quota: the 429 that is not a rate limit
“You exceeded your current quota, please check your plan and billing details” arrives with HTTP status 429, so most people slow their request rate — and nothing changes. That is because insufficient_quota is a billing state, not a speed limit: the account has no usable credit behind it. This page separates the two 429s, walks through the official-API fixes, 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
The official OpenAI API returns HTTP 429 with type and code set to insufficient_quota. Despite the status code, no amount of waiting or backoff clears it:
{
"error": {
"message": "You exceeded your current quota, please check your plan and billing details. ...",
"type": "insufficient_quota",
"code": "insufficient_quota"
}
}Why you are seeing it
- Prepaid credits are used up or expired — the most common case on pay-as-you-go accounts.
- No payment method is attached, or the card on file was declined at the top-up or auto-recharge step.
- A monthly budget cap on the account or project has been reached.
- Free-tier or promotional credits ended and nothing replaced them.
- The key belongs to an organization or project whose own limit is exhausted, even if another one of yours still has credit.
insufficient_quota vs rate_limit_exceeded
The official API uses 429 for both. They need opposite responses, so identify which one you have before changing anything:
| insufficient_quota | rate_limit_exceeded | |
|---|---|---|
| What it means | No usable credit or budget behind the account. | Too many requests or tokens per minute for your tier. |
| Retrying helps? | Never — the state persists until billing changes. | Yes — backoff and the next window usually succeed. |
| The fix | Top up, fix the payment method, or raise the budget cap. | Slow down, batch, or request a higher tier limit. |
Fix it on the official API
- Open the platform's billing page and check the credit balance first — if it reads $0.00, that alone explains the error.
- Add or update the payment method, then buy credits or re-enable auto-recharge.
- Check the spending limits the platform lets you set on the account and on each project; a conservative monthly cap silently reintroduces this error mid-month.
- Wait a few minutes after billing changes — quota state can lag the payment.
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:
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 both throughput limits and exhausted quota, and distinguishes them only in the error code field. 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?
- insufficient_quota is not about request volume. A $0 credit balance, an expired card, or a spent monthly cap triggers it on the very first request of the day.
- 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. Abuse prevention, per-account protection limits, and upstream constraints may still apply; if a request returns 429, check Dashboard -> Logs or contact support to raise limits.