Skip to main content

No Monthly Minimum: What Four Usage-Only PaaS Bills Cost at 10%, 50%, and 100% Utilization

10 min readDora NodaDora Noda
Share
On this page

Most platform pricing starts with a floor: Render's Starter web service is $7/month, Railway's minimum is $5, Heroku's cheapest usable dyno tier is $7, and Vercel Pro is $20. You pay that whether your app serves a million requests or zero. But a handful of platforms bill pure usage with no monthly minimum at all — and an August 2026 pricing survey flagged four of them: Fly.io, Cloudflare Workers, Neon, and Northflank.

So I modeled all four against the same reference workload at three utilization levels, with a flat Hetzner Cloud server as the baseline. Here is the full result table first — the rest of this post shows the math, the billing mechanics behind each number, and the exact utilization where the flat box takes the lead.

The short version: the full cost table in 60 seconds

Reference workload: one small API container (1 shared vCPU, 1 GB RAM) plus Postgres (Neon minimum 0.25 CU, 1 GB storage), with traffic scaling alongside running hours. Utilization means fraction of the 730-hour month the stack is running: 10% ≈ 73 hours and ~1M requests, 50% ≈ 365 hours and ~5M requests, 100% = always-on with ~10M requests.

Monthly cost10% (side project)50% (business hours)100% (always-on)
Fly.io (app container)$0.72$2.85$5.70
Cloudflare Workers (requests)$0.00$5.00$5.40
Northflank (1 vCPU + 1 GB)$1.83$9.13$18.25
Neon (Postgres row)$2.28$10.02$19.70
Usage-only full stack (Fly + Neon)$3.00$12.87$25.40
Hetzner CX22 (2 vCPU, 4 GB, all-in)$4.85$4.85$4.85

Read it left to right and the story is simple: at 10% utilization the usage-only stack wins ($3.00 vs $4.85). At 50% the flat box wins by 2.6×. At 100% it wins by more than 5× — and that flat $4.85 also includes 20 TB of transfer and room for several more services. The crossover sits around 17–25% utilization, roughly 4–6 running hours a day. Everything below now earns those numbers.

How each of the four actually bills you

Fly.io: per-second presets with scale-to-zero. Fly Machines bill by the second while in the started state, priced by CPU/RAM preset: a shared-cpu-1x with 256 MB runs about $1.94/month if left on continuously, 512 MB about $3.19, and 1 GB about $5.70. With auto_stop_machines enabled and min_machines_running = 0, an idle app stops and the compute meter drops to zero — but stopped is not free: the machine's root filesystem still bills at $0.15/GB per month, pennies per stopped app. There is no monthly minimum on pay-as-you-go.

Cloudflare Workers: a free tier, then a $5 floor. Workers is the odd one in this list and honesty requires saying so up front. The free tier (100K requests/day) genuinely has no floor — low-traffic workloads cost exactly $0. But once you exceed it, the Paid plan is $5/month including 10M requests and 30M CPU-ms, with overages at $0.30 per additional million requests and $0.02 per additional million CPU-ms. So Workers is "no monthly floor" below ~3M requests a month and "$5 floor" above it. Keep that in mind when the table shows $0.00 at 10% and $5.00 at 50%.

Northflank: per-second vCPU/GB-hour, no minimum. Northflank's pay-as-you-go tier has no monthly minimum and no per-seat fee: $0.01667 per vCPU-hour and $0.00833 per GB-hour, billed per second, plus $0.15/GB-month for SSD volumes and $0.06/GB egress. A 1 vCPU + 1 GB service left running all month costs about $18.25 (730 × $0.01667 + 730 × $0.00833). The smallest plan (0.1 vCPU + 256 MB) runs about $2.70/month always-on. Pricing is tied to the plan size you pick, so you size for peak and pay per second while running.

Neon: serverless Postgres by the CU-hour, no minimum since December 2025. Neon separated compute from storage: Launch-plan compute is $0.106 per CU-hour (1 CU ≈ 1 vCPU + 4 GB RAM, minimum 0.25 CU), storage is $0.35/GB-month, and idle compute suspends to zero after the idle timeout. There has been no monthly minimum since December 2025 — spend $3 and you pay $3. The free tier covers 100 CU-hours a month. Neon is database-only, so treat its row as the database line of the bill, not an app host.

The baseline: Hetzner CX22 at ~$4.85/month. Two shared vCPUs, 4 GB RAM, 40 GB NVMe, 20 TB of included transfer, for €4.49/month (about $4.85 at recent rates, before VAT). The ARM CAX11 with the same RAM is even cheaper at ~€3.79. Northflank's own blog covered Hetzner's 2026 price increases in detail — the flat-box baseline moved a little, but it is still flat: the price does not care whether your app runs 73 hours or 730.

The workload model, stated plainly

A cost model you cannot audit is marketing. Here are the exact assumptions so you can redo the arithmetic:

Assumption10%50%100%
Running hours/month73365730
Requests/month~1M~5M~10M
Avg CPU per request (Workers)5 ms5 ms5 ms
App container1 shared vCPU, 1 GBsamesame
Postgres0.25 CU, 1 GB storedsamesame
Egress100 GB100 GB100 GB

Three simplifications to note. First, traffic and running hours scale together — a reasonable shape for an auto-stopping service, less so for a batch worker; the "where the model understates the bill" section below covers the gaps. Second, Workers CPU-ms per request is the most workload-dependent input here: 5M/25M/50M CPU-ms across the three levels. Third, egress is held at 100 GB in the base model and then stress-tested separately, because metered bandwidth is where usage bills ambush people.

The numbers: 10%, 50%, 100%

At 10% — the side project — usage-only wins across the board. Fly.io costs 10% of its $5.70 always-on rate ($0.57) plus ~$0.15 of stopped rootfs: $0.72. Workers serve 1M requests inside the free tier's ~3M monthly allowance: $0.00. Northflank costs 10% of $18.25: $1.83. Neon burns 0.25 CU × 73 hours = 18.25 CU-hours × $0.106 = $1.93 plus $0.35 storage: $2.28. Stack Fly + Neon for the full app-plus-database total: $3.00, comfortably under Hetzner's flat $4.85. Every usage platform beats the flat box here. This is the zone usage billing was designed for.

At 50% — business-hours production — the flat box takes the lead. Fly.io: $2.85. Workers cross the free tier, so the $5 plan kicks in (5M requests and 25M CPU-ms both fit inside its included 10M/30M allowances): $5.00 — a touch above Hetzner on its own. Northflank: $9.13. Neon: 0.25 × 365 = 91.25 CU-hours × $0.106 = $9.67 plus storage = $10.02. The stacked usage total is $12.87 vs $4.85 flat — the box wins by 2.6×. Note what happened: Neon, cheap at idle, became the most expensive line on the bill the moment the database stayed warm half the month.

At 100% — always-on — it is not close. Fly.io: $5.70. Workers: $5 base + zero request overage (10M included covers it) + 20M extra CPU-ms × $0.02 = $5.40. Northflank: $18.25. Neon: 182.5 CU-hours × $0.106 + $0.35 = $19.70. Stacked usage total: $25.40 vs $4.85 — more than 5×. An always-on database on per-hour serverless compute is the single most expensive way to run Postgres in this comparison.

The crossover: ~17–25% utilization. Solving the stacked usage cost (hourly share × $25.05 plus ~$0.50 of storage/rootfs floors) against the $4.85 flat line gives ~17% with a Fly app layer, or ~23% with a Workers app layer inside its free tier. In plain terms: if your stack runs more than about 4–6 hours a day on average, the flat box is already cheaper. Sensitivity runs one direction only — a hungrier database (0.5 CU average instead of 0.25) doubles Neon's line and pulls the crossover down near 10%.

Where the model understates the bill: egress, storage, always-on databases

Three meters can flip individual winners even where the base model looks settled.

Egress. The CX22 includes 20 TB of transfer. The metered platforms charge roughly $0.05–0.06/GB past small allowances. At the model's 100 GB, that is ~$5–6 — already larger than Fly's entire 10% compute line, and enough to erase Workers' $0. Push a media-heavy workload to 500 GB and egress alone costs ~$25–30 on metered billing while Hetzner shrugs. If your app serves bytes more than it computes, model egress first and compute second.

Storage floors. "Scales to zero" never means "bills zero": stopped Fly machines keep rootfs charges, Neon storage bills per GB-month regardless of compute state, Northflank volumes bill at $0.15/GB-month. These are pennies-to-dollars per service, but they are the reason a portfolio of ten stopped side projects still generates a bill.

The $5 Workers step. Workers' cost curve is not smooth — it jumps from $0 to $5 the request you exceed the free tier. For workloads hovering near 3M requests a month, that step is the entire decision: just under it, Workers is the cheapest compute in this post; just over it, a flat box running an always-on service is cheaper. Model which side of the step you are on before comparing anything else.

Apples-to-oranges, disclosed

One table invites unfair comparisons, so here are the three disclosures that matter.

First, Workers is not a container. A 128 MB isolate with CPU-time limits cannot run your Postgres, your background worker, or anything stateful — it is the cheapest line in this post precisely because it does the least. Comparing Workers to Fly.io or Northflank is comparing an edge-function surcharge to a full Linux VM.

Second, Neon is the database row, not a hosting alternative. It earns its place in the table because every app needs somewhere to put data, and its pricing shows how usage billing treats the warm-state part of your stack. And to be explicit about our own position: bex does not offer managed databases and has no plans to — this is a comparison point, not a feature claim.

Third, Northflank's premium buys managed UX — build pipelines, preview environments, and a console your whole team can use without SSH. At $18.25/month always-on for 1 vCPU/1 GB it is the priciest app compute here, but the comparison is against a bare Hetzner VM you operate yourself. Whether that delta is worth it depends on who is on call, not on the invoice.

The decision rule

If your workload is spiky or mostly idle — nights-and-weekends side projects, staging environments, per-PR preview stacks — usage-only billing is genuinely cheaper, often by 2–5×, and the four platforms above let you start without committing to any monthly floor (with Workers' $5 step past the free tier as the one asterisk). The moment anything in your stack is always-on — a production API, a database that never suspends, a worker that never drains — a flat ~$5 box wins on price, includes 20 TB of transfer the metered platforms charge per gigabyte for, and runs your next three services for free.

That crossover at roughly a quarter of the month is the number to remember. Below it, rent by the second. Above it, own the box.

Running above the crossover? Bex.co is the open-source, AI-native Render alternative — push a git repo, get a running HTTPS service on machines you own, with Render-compatible APIs your agents can drive. 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