The mental model
One account (same email/login) → two main billing systems
- ChatGPT billing (consumer/workspace subscription)
Paid monthly per user (Go/Plus/Pro/Business/Enterprise). Managed inside ChatGPT settings. (OpenAI Help Center) - OpenAI Platform billing (API usage / pay-as-you-go or contract)
Charged by tokens/seconds/etc. Managed inside platform settings, orgs, and projects. (OpenAI Help Center)
These are separate. Having ChatGPT Plus/Pro does not automatically give you paid API quota. (OpenAI Help Center)
How each product is billed + where usage shows
1) ChatGPT (chatgpt.com)
Billing: subscription (monthly per user). (OpenAI Help Center)
Usage limits: plan-based limits (messages/tools/agents vary by plan). (OpenAI)
Where you track: ChatGPT Settings → Account / My plan (and workspace billing pages for Business/Enterprise). (OpenAI Help Center)
Important: you can even end up with two ChatGPT subscriptions (web + mobile) billed separately if you subscribed in both places. (OpenAI Help Center)
2) OpenAI Platform API (platform.openai.com)
Billing: usage-based (tokens/requests/etc) under an Organization + Project. (OpenAI Help Center)
Where you track: Platform → Usage dashboard (and projects break it down; budgets can be set per project). (OpenAI Help Center)
What “$0 usage” can mean: if requests are blocked (no credits / spend limit), you can see $0 because nothing billable succeeded. (This matches the “quota exceeded” situation you saw.)
3) Codex
Codex is special: it can run in two modes.
Mode A — Sign in with ChatGPT
- Billed as part of your ChatGPT plan limits (with a 5-hour and weekly meter shown in the Codex usage dashboard). (OpenAI Help Center)
- If you hit included limits, you can buy additional credits (depending on plan). (OpenAI Developers)
- Where you track: Codex Settings → Usage dashboard (the page you opened). (OpenAI Help Center)
Mode B — Sign in with an API key
- Billed to your API org/project (shows on platform usage; charged like API calls). (OpenAI Developers)
- If your API org has no billing/credits or limits block spend, you get quota exceeded even when platform usage is still $0.
Critical detail
- Codex Cloud requires ChatGPT sign-in (API key mode won’t work for Codex Cloud). (OpenAI Developers)
So: API-key sign-in is mainly for local/IDE workflows billed via API.
4) Sora
Sora also has two sides:
Sora app (sora.chatgpt.com)
- Uses ChatGPT plan-based access and limits, with prioritization by plan; limits may be enforced. (OpenAI Help Center)
- You can buy additional usage via credits. (OpenAI Help Center)
- Where you track: Sora app experience + the shared credits concept (below).
Sora Video API (platform)
- Separate from the Sora app: usage-based billing priced per second (model/resolution). (OpenAI)
- Tracked in platform usage/costs like other API calls.
Are the bills centralized or separate?
Separate by default:
- ChatGPT subscription billing is separate from API billing. (OpenAI Help Center)
- Usage tracking is separate: ChatGPT/Codex/Sora in-app meters vs Platform token/$ meters. (OpenAI Help Center)
One bridge exists: Flexible Credits
OpenAI introduced credits that can be used across supported features:
- Credits you buy can work across Codex (Plus/Pro) and Sora (all users) (as supported). (OpenAI Help Center)
So: subscription + credits live in the ChatGPT ecosystem, while API usage remains separate.
Practical “where do I check what” cheat sheet
| What you’re doing | Which meter you’re spending | Where to see it |
|---|---|---|
| ChatGPT chatting / tools | ChatGPT plan limits | ChatGPT Settings / Plan (OpenAI Help Center) |
| Codex signed in with ChatGPT | Codex plan limits (+ optional credits) | Codex Usage dashboard (OpenAI Help Center) |
| Codex signed in with API key | API org/project spend | Platform Usage/Projects (OpenAI Help Center) |
| Sora app video creation | ChatGPT plan limits (+ credits) | Sora app + credits info (OpenAI Help Center) |
| Sora Video API | API billed per second | API pricing + Platform usage (OpenAI) |
Why you specifically saw “Quota exceeded” with API key while Platform shows $0
Because “quota exceeded” is about API billing being unavailable/blocked, and blocked calls don’t generate billable usage — so your usage chart can stay at $0.
Most common causes:
- no payment method / no prepaid credits on the API org
- project/org budget limit set too low
- using a project key tied to a project with 0 budget
- not looking at the same org/project the key belongs to (projects matter) (OpenAI Help Center)