Skip to main content

Your PaaS Bill Is a Discovery Process, Not a Plan

9 min readDora NodaDora Noda
Share
On this page

He was on the Pro plan, had budgeted $20 a month, and opened a bill for $286.

That invoice — the opening exhibit of Tural Allahverdiyev's June 2026 bill autopsy, "Your PaaS Bill Lied to You" — is the whole metered-billing debate in one number. Not because $286 is catastrophic, but because it was unforecastable. The team did everything right: picked a plan, read the pricing page, set a budget. The invoice arrived as a discovery process anyway.

This post is about that gap between the quoted price and the knowable price. Since 2024, Vercel has adjusted its pricing four separate times, Fly.io killed its permanent free tier and then added two brand-new billing line items in early 2026, and Railway became the small-project default with edge cases of its own. Each change was individually defensible. Collectively, they turned the monthly invoice into something you find out, not something you plan. And against all of it sits a Hetzner box that costs the same euros whether the month was quiet or viral.

Same workload, two months: what unpredictability costs in dollars​

Start with the numbers, because the argument is arithmetic before it is philosophical. Take a typical small SaaS: one web service, one Postgres database, 10 GB of volume storage, and 50 GB of monthly transfer as the quiet baseline. Then a viral month multiplies traffic by 10. Here is what that workload costs across four platforms, computed from published list prices:

PlatformQuiet monthViral month (10x traffic)The delta
Vercel Pro~$20–45 (seat + usage inside 1 TB included)~$170–300 (bandwidth, invocations, Active CPU scale together)8–10x
Railway~$5–12 ($5 base covers first $5 of usage)~$70–120 (compute meters at ~$0.028/vCPU-hr, storage $0.15/GB-mo)~10x
Fly.io Machines~$12–18 (shared CPU, volume, 50 GB egress at $0.02/GB)~$45–70 (extra Machines + 500 GB egress)~4x
Hetzner AX42 dedicated~€57 fixed~€57 fixed (viral traffic still inside included allowance)1x

Three things stand out. First, every metered platform is cheaper than the dedicated box in the quiet month — that is the entire appeal, and it is real. Second, in the viral month, two of the three metered options blow past the fixed box, and the ratio between best and worst case on any one platform is 4–10x. Third, the dedicated box is the only row where next month's number is knowable today: €57, before the month begins.

The bandwidth unit economics explain most of the viral-month damage. Vercel's Fast Data Transfer bills at $0.15/GB — $150 per terabyte. Hetzner's cloud servers include 20 TB of traffic with overage around €1.20 per terabyte. That is a markup north of 100x on the marginal byte, which means traffic is the variable that converts a good month for the business into a bad month for the budget. When your product going viral is a finance event, the pricing model has misaligned itself with your success.

The drift catalog: what actually changed since 2024​

The viral-month math above is bad enough. What makes it unforecastable — rather than merely expensive — is that the rules keep changing underneath the spreadsheet. The catalog:

  • April 2024 — Vercel's "Improved infrastructure pricing." Two big combined buckets (bandwidth, functions) split into granular meters: Fast Data Transfer at $0.15/GB, Fast Origin Transfer at $0.06/GB, Edge Requests at $2 per million, separate cache read/write pricing. Headline rates fell; the number of variables in the bill multiplied.
  • October 2024 — Fly.io ends free allowances. New organizations lose the old free tier entirely, replaced by a one-time trial of 2 machine-hours or 7 days. The hobby project that cost $0 now needs a credit card on day one.
  • 2025 — Vercel's Fluid Compute and Active CPU pricing. Functions billing moves from GB-hour duration to CPU-active-only metering (June 2025), then a $20 flexible usage credit lands on Pro plans (September 2025), alongside hard spend limits. Each step is arguably fairer. Each step also invalidates whatever cost model the team built the year before.
  • Early 2026 — Vercel makes Active CPU the default across all plans, with invocations shifting from bundled packages to per-unit metering and ISR/image-cache moving to regional 8 KB-unit pricing.
  • January 2026 — Fly.io starts billing two lines that used to ride free. Volume snapshots at $0.08/GB-month (first 10 GB free) and app-scoped static egress IPs begin charging — the quiet unbundling strategy: nothing repriced, just newly metered.
  • 2026 — Railway's replan. Pro flattens to $20 per workspace with $20 of included usage and unlimited seats, replacing per-seat pricing. Better deal, different math — every existing forecast recomputed.

Count the cadence: material changes roughly every six months for two years running. A team that built a cost model in early 2024 has rebuilt it four times since — not because their workload changed, but because the meter changed shape.

Why metered billing is structurally unforecastable​

Three mechanisms compound here, and none of them is "vendors are greedy."

Line-item proliferation. Every granular metric is a new random variable. The April 2024 Vercel split is the textbook case: one bandwidth number became Fast Data Transfer plus Fast Origin Transfer plus Edge Requests plus cache reads plus cache writes. Granularity helps you optimize after the fact — you can see exactly which meter ran hot — but it hurts you before the fact, because forecasting five correlated variables is strictly harder than forecasting one. Observability improved; predictability got worse. Those are different things.

Multiplicative failure modes. Metered bills multiply. A bot wave hits an unbounded route: requests scale invocations, page weight scales bandwidth, slow AI calls scale Active CPU — all at once, on the same incident.

The exhibits are public. One Vercel customer moved ~20 client-side requests server-side and watched the bill jump from $300 to $3,550 in a month, 99% of it serverless function duration. A February 2026 teardown showed how a static site's viral week back-solves to a $46,485 bandwidth invoice. Nobody forecast those numbers because the input distribution — bot traffic, virality — has no upper bound, and metered pricing passes unbounded inputs straight through to the invoice.

Repricing resets the mental model. Developers carry pricing in their heads: "Vercel is $20 plus bandwidth," "Fly is cheap for small stuff." Every repricing silently invalidates that cached intuition, and the invalidation is discovered — again — at invoice time. The September 2025 Netlify repricing that doubled the credit cost of bandwidth and compute halved every existing customer's effective free capacity overnight without touching the headline "300 free credits." The number on the pricing page stayed; the meaning changed.

This is why the invoice is a discovery process. Not because any single meter is unfair, but because the forecast depends on variables the team cannot bound (traffic), multiplied across meters they cannot hold constant (proliferating line items), under rules that change twice a year (repricing cadence).

What predictability is actually worth​

The honest counter first: metered billing wins real workloads. A side project that idles at zero and spikes on weekends should not rent a dedicated box. Scale-to-zero hobby apps, bursty batch jobs, and pre-product-market-fit experiments are all cheaper metered — the quiet-month column of the table above is not a trick. And fixed pricing is not free pricing: the €57 box still needs an operator, patches, backups, and a 3 a.m. plan. Anyone quoting the dedicated-server number without the ops cost is selling something.

But finance teams do not budget expectations; they budget variances. A workload that costs $12 most months and $286 once a quarter is not a $50/month workload — it is a workload that forces a $300/month budget line with wasted headroom, or a $50 line with quarterly fire drills. Runway math treats variance itself as a cost: every unplannable dollar is a dollar that must sit idle as buffer. That is the line item self-hosting wins that never appears on any pricing page — the budget you didn't have to pad.

There is also a second-order effect on engineering behavior. Teams on metered platforms learn to fear their own success metrics: the launch post that might go viral, the SEO win that might 10x crawl traffic, the customer who might embed their widget on a high-traffic page. When growth is a billing risk, teams throttle growth — caching aggressively, gating features, dreading the front page of Hacker News. Fixed-cost infrastructure inverts the incentive: the viral month costs €57, same as the quiet one, so the only rational response to a traffic spike is to enjoy it.

Own the box, keep the git push​

None of this argues for returning to hand-racked servers and 3 a.m. pager duty. The PaaS idea — push a git repo, get a running HTTPS service — was always the right developer experience; the billing model it arrived with was the negotiable part. What the 2024–2026 drift catalog proves is that metered pricing and forecastability are in structural tension, and two years of repricings have all resolved that tension in favor of the meter.

The resolution is to separate the interface from the invoice: PaaS-grade deploy UX on hardware with a fixed monthly number. That is the bet behind the current self-hosted wave — Coolify, Dokploy, and Kubernetes-native options — and behind bex's own model: git-push deploys and Render-compatible APIs running on machines you own, where the price of next month is knowable today. Predictability is not a discount. It is a feature — and for a team managing runway, it may be the most valuable one on the invoice.

Bex.co is the open-source, AI-native Render alternative — push a git repo, get a running HTTPS service on machines you own. Star the repo on GitHub or deploy your first app today.

Related articles

Run this on infrastructure you own

bex is the open-source, AI-native Render alternative — push a git repo and get a running HTTPS service on your own machines.

Get started with bex