Claude API Billing Alerts Setup Guide
Claude API billing alerts warn you before a cost spike turns into a surprise invoice. Anthropic's console gives you basic spend limits, but it doesn't offer email or Slack alerts at custom thresholds out of the box — so most teams end up combining console limits with a small script or a third-party layer that watches usage and notifies them.
This guide covers both paths: what you can configure natively in the Anthropic Console today, and how to build proper threshold-based alerts (50%, 80%, 100% of budget) using the usage API or a billing layer like SubToAPI, which surfaces per-key usage data you can wire into alerts directly.
What Anthropic's Console gives you natively
Anthropic's Console lets you set a monthly spend limit per organization. Once you hit it, API calls start failing with a billing error. This is a hard stop, not an alert — there's no configurable "notify me at 80%" option baked into the dashboard for arbitrary thresholds.
To find it:
- Open the Anthropic Console and go to Settings → Billing.
- Set a monthly usage limit in dollars.
- Optionally set a rate limit tier to cap requests per minute, which indirectly limits spend velocity.
This is a useful safety net, but it's blunt. If your limit is €500/month and you hit it on day 12, every request fails for the rest of the month — including production traffic. For most teams, a hard cutoff isn't actually what you want; you want early warning so a human can intervene before things break.
Building your own threshold alerts
The practical approach is: poll usage data on a schedule, compare it to your budget, and fire a notification (Slack, email, PagerDuty) when you cross a threshold.
Step 1: Decide your thresholds
A common pattern is three tiers:
- 50% of monthly budget — informational, posted to a low-priority channel.
- 80% — actionable, tags the team lead.
- 95–100% — urgent, triggers a page or blocks non-critical jobs.
Step 2: Pull usage data on a schedule
If you're calling the Claude API directly, you'll need to track spend yourself since Anthropic's usage export isn't real-time granular. A simple approach is to log token counts from every response (usage.input_tokens and usage.output_tokens are returned on each Messages API call) into your own database, then run a cron job that sums the day's spend and compares it to your threshold.
// nightly-cron.js — sums today's logged token usage and alerts on threshold
const dailyUsage = await db.usage.sum({
where: { date: today },
select: { costUsd: true },
});
const monthlyBudget = 500; // EUR
const percentUsed = (dailyUsage.costUsd / monthlyBudget) * 100;
if (percentUsed >= 80) {
await fetch(process.env.SLACK_WEBHOOK_URL, {
method: "POST",
body: JSON.stringify({
text: `⚠️ Claude API spend at ${percentUsed.toFixed(1)}% of monthly budget.`,
}),
});
}
This works, but it means you're maintaining a token-to-cost mapping yourself, updating it every time Anthropic changes pricing, and building the logging pipeline from scratch. That's fine for a weekend project, painful for something you want to trust in production.
Step 3: Alert per application, not just per account
The bigger gap with native billing tools is that they report spend at the account level, not per application or per team. If you run three products off one Claude API key, you can't tell which one is driving the spike — you just get a total.
This is where a layer that issues separate API keys per application matters. If each service, environment, or client gets its own key, you can alert on "the internal-tools key jumped 4x today" instead of "total spend jumped" — which is the difference between finding the bug in five minutes and spending an afternoon grepping logs.
Using SubToAPI for per-key usage and alerting
SubToAPI sits between your app and Claude, issuing scoped application keys (sub_live_...) and recording usage metadata per key — requests, tokens, and cost — in one dashboard. Because usage is broken out by key, you can build alerts that actually pinpoint the source instead of guessing at a single account-wide number.
A typical setup:
- Create one SubToAPI key per application, environment, or customer (see /docs/quickstart).
- Route requests through
https://api.subtoapi.app/v1/messagesinstead of calling Anthropic directly — the request shape is the same, you just swap the base URL and use your SubToAPI key (see /docs/messages). - Pull usage per key on a schedule and compare it against a per-key budget, the same way you would with the cron example above, but now each key gives you an isolated number.
curl https://api.subtoapi.app/v1/messages \
-H "Authorization: Bearer $SUBTOAPI_KEY" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Summarize this ticket."}]
}'
Because seats and keys are already split by team on the Team and Scale plans (see /pricing), the alert logic per application becomes straightforward: each key's monthly usage is visible in the dashboard, so a lightweight script that checks it once a day is enough to catch runaway loops, retry storms, or a customer-facing feature that's suddenly 10x more popular than expected — without writing your own token-to-cost pipeline first.
Practical checklist
- Set a hard monthly spend limit in the Anthropic Console as a last-resort safety net.
- Issue separate API keys per application or environment so spend spikes are traceable.
- Define at least two alert thresholds — one informational, one urgent.
- Route alerts to a channel someone actually checks, not just an inbox.
- Re-check thresholds quarterly as usage grows; a limit set at launch is rarely right six months later.
- If you're prototyping this, start with the free trial at /signup to see per-key usage data before building custom logging.
questions
Does Anthropic send billing alert emails automatically? No. The Console lets you set a hard monthly spend limit that blocks requests once reached, but it doesn't send threshold-based warning emails (e.g., at 80% of budget) on its own.
Can I get alerts per application instead of per account? Only if you separate usage by key. Anthropic reports spend at the account level, so per-application alerting requires either your own logging pipeline or a layer like SubToAPI that issues scoped keys with individual usage tracking.
What's the simplest way to start without building custom infrastructure? Set a monthly hard limit in the Anthropic Console first as a safety net, then add a daily cron job that checks usage and posts to Slack at 50%/80% thresholds — that covers most teams without needing a dedicated billing system.