Claude Code Billing: Pro / Max, API Keys, and Extra Usage
Subscription guides
Paying for Claude Pro and seeing an API bill does not necessarily mean the same membership was charged twice. Establish how the running Claude Code session authenticates and which account owns the bill. This is an observation-to-verification workflow for personal Pro / Max accounts; team policies and third-party gateways need their own checks.
Separate the ledgers before buying capacity
Included plan usage, extra usage beyond the plan, and Console API calls are separate accounting questions. Claude and Claude Code share Pro / Max limits; on the review date the official guidance listed five-hour and weekly limits. Web conversations can therefore affect the subsequent coding session.
Collect the charge time, billing platform, authentication route at that time, and whether you accepted a paid continuation option. A card statement’s merchant name alone often cannot identify the route.
| Ledger | What to inspect | What it does not establish |
|---|---|---|
| Pro / Max | Membership account, validity, usage windows | Unlimited access or funded API balance |
| Plan extra usage | Enabled state, spending / allowance settings | Another month of membership |
| Console API | Organization / project, calls, auto-reload | The key belongs to your membership account |
Check for a key without displaying the secret
Claude documents ANTHROPIC_API_KEY as taking precedence over subscription authentication. A browser logged into Pro does not establish that a launched process has no inherited key. Run /status in Claude Code to record the authentication type and account, then run the following check in the same terminal used to launch it.
This macOS / Linux shell command prints only present or absent. Keep the key out of screenshots, tickets, and public conversations. For an IDE session, check its integrated terminal: absent in another window does not prove that the IDE-launched process inherited no key.
if [ -n "${ANTHROPIC_API_KEY:-}" ]; then
printf "%s\n" "ANTHROPIC_API_KEY: present"
else
printf "%s\n" "ANTHROPIC_API_KEY: absent"
fiSwitch to the plan, then verify the result
If you intend to use personal membership capacity, exit the running Claude Code process, unset ANTHROPIC_API_KEY in its launching shell, and restart. This changes only the current shell. It neither revokes the key nor modifies another tool’s configuration.
Use /login inside Claude Code and select the Claude account with Pro / Max rather than the Console pay-as-you-go route. Run /status again. The success condition is the expected account and authentication, not a closed login dialog. A small task can help verify the route, but concurrent programs using the same API project make a billing comparison hard to attribute.
If a new terminal reports present again, something re-injects the key. Inspect your shell startup configuration, IDE environment, or environment-management tool and change the responsible setting. Avoid deleting every line mentioning the variable; another project may still need it. On Windows, remove the current PowerShell environment variable and inspect user environment settings rather than copying shell syntax.
unset ANTHROPIC_API_KEY
claude
# Inside Claude Code:
# /login
# /statusA remaining limit is a different problem from unexpected billing
Only after authentication is correct should an exhausted allowance be treated as a capacity problem. Resetting a short window does not restore an exhausted weekly allowance. Read the actual limiting window and reset time in your usage view rather than assuming a five-hour reset clears every limit.
For a fixed subscription budget, decline API paid continuation and inspect any enabled extra usage or Console auto-reload separately. They control different expenses. Choose extra usage deliberately for a sprint; compare Max 5x / 20x after observing repeated weekly shortages.
An important boundary: the monthly API credits currently included with Max cannot be used in Claude Code or Claude-app extra usage. The word “credits” in a plan is not evidence of a balance usable across all products. Check the eligible surfaces.
$17/month with annual billing; $20 billed monthly.
A support report should locate the failure
A useful report might say: “Personal Pro; /status shows subscription authentication; the same terminal reports the key absent; weekly usage is exhausted and the warning persists after the short window resets.” Add the version, time, and a redacted warning. That gives support more to work with than “membership broken”, without exposing credentials.
For API charges, identify the time range, project, and authentication path in use. Changing configuration does not reverse calls already billed. Route future sessions correctly before discussing historical charges.
Claude was still coming soon in my shop when reviewed, so this article has no purchase button. If troubleshooting shows the existing plan is sufficient, there is no reason to buy it again.