Vercel bills Pro and Enterprise teams for usage on top of the plan: traffic, function compute, image optimization, builds and a handful of smaller meters. When an invoice jumps, the cause is nearly always one project and one usage line. Finding those two things is most of the work.
1. Find the line and the day
Open your team's Usage page and switch the range to cover the jump. Look for the line whose curve changed shape — a step up that stays, or a single tall day. Then filter by project. A step means something changed in the app or its traffic; a single day usually means a crawler, a launch, or a loop.
If you'd rather not eyeball charts: Vercel publishes billing charges through its API as daily FOCUS rows per service and project. That's what Soracin reads to tell you which project and which line moved, the morning after.
2. The usual suspects, by line
Data transfer and edge requests
- Bots and scrapers. AI crawlers and SEO bots can multiply requests overnight. Check the Firewall / Observability views for user agents and paths, then add bot protection or rate limits.
- Large static assets. A video or uncompressed image in
public/that got linked from somewhere popular — or hotlinked by another site. - Polling clients. A dashboard refreshing every few seconds in hundreds of open tabs.
Function compute
- A slow upstream. Functions are billed while they run; an API or database that got slower makes every invocation cost more. Check p95 duration, not just invocation count.
- Retry and webhook loops. A webhook handler that errors, gets retried, and calls itself.
- Static pages that went dynamic. Reading cookies or headers in a layout can turn a cached page into a function call on every request.
Image optimization
- Many distinct sizes or formats per image (wide
sizes, manydeviceSizes), or user-uploaded images passed through the optimizer, create new transformations instead of cache hits.
Builds
- A bot opening pull requests, or a monorepo building every project on every push. Use an ignored-build step so unrelated changes don't build.
3. Check what changed in settings, too
Bills move with config as well as code. Turning off Deployment Protection exposes preview URLs to crawlers; a domain pointed at the wrong project moves traffic; a new project attached to a busy domain inherits its load. These are the changes Soracin flags as drift: what changed, on which project, and when it was detected.
4. Put a ceiling on it
Set a spend limit and notifications in your team's billing settings, so the next surprise is an email rather than an invoice. Then fix the cause you found in step 2 — a limit alone just moves the pain to an outage.
How Soracin helps
Connect Vercel with the read-only integration (no access to environment variables). Every day Soracin compares yesterday with the four weeks before it, and if a day is at least 30% and $1 above normal, emails you which project and service moved. Spend needs a Vercel Pro or Enterprise team — Hobby accounts have no billing API.