Skip to main content

Fly.io Added Two Billing Lines in 60 Days: What They Do to a Three-Service Bill

11 min readDora NodaDora Noda
Share
On this page

Fly.io billed a three-service side project at roughly $38 a month through all of 2025. In January 2026 a new line appeared for volume snapshots at $0.08 per GB. In February a second line appeared for Managed Postgres inter-region private networking. Run the same stack through the new price list and the total lands at $38.94 — a 64-cent increase that is the most dangerous number in this post.

Here is the verdict up front: at defaults, the two new charges are pennies, and that is exactly why they work. Both meter things that grow silently — retained snapshot bytes and cross-region chatter — and both compound the moment you leave the happy path (longer retention, more volumes, regions with 6x multipliers). The table below is the whole argument; the rest of this post is the evidence. All figures are estimates from Fly.io's published price list for NA/EU regions, rounded, for the reference stack defined below.

Monthly lineBefore (2025, post-free-tier)After (Feb 2026)
Compute: 6x shared-cpu-1x, HA pairs$22.00$22.00
Provisioned volumes: 2x 40 GB at $0.15/GB$12.00$12.00
Volume snapshots: ~18 GB stored, 10 GB free, at $0.08/GB$0.00$0.64
Public egress: 100 GB at $0.02/GB$2.00$2.00
Cross-region private transfer: 50 GB at $0.006/GB$0.30$0.30
Dedicated IPv4 for the web app$2.00$2.00
MPG inter-region (memo: managed-Postgres variant, see below)$0.00$0.30
Total, self-managed Postgres$38.30$38.94 (+1.7%)

The short version: the 2026 lines add less than a dollar to a disciplined small stack — and up to tens of dollars the moment retention, volume count, or region choice stops being disciplined. This post prices each line, shows where each one bites, and puts the Hetzner flat-rate column next to it.

Three pricing events in sixteen months

The two 2026 charges only make sense against the 2024 event that set them up. Fly.io ended its free tier for new organizations on October 7, 2024: no more three free shared machines, no more 3 GB of free volumes. New signups get a one-time trial of 2 VM-hours or 7 days, and the floor becomes usage-based billing with the $5/month Hobby plan acting as a $5 usage credit. Every line below is therefore measured against a post-free-tier 2025 baseline — the delta isolates only the two new charges, not the free-tier removal.

DateEventRate
Oct 7, 2024Free tier removed for new orgs; trial + pay-as-you-go onlyFloor ~$5/mo Hobby credit
Jan 1, 2026Volume snapshots billed (first invoice Feb 2026)$0.08/GB-mo, first 10 GB free
Feb 2026Managed Postgres inter-region private networking billedSame as existing private-network rates; same-region free

The pattern matters more than any single rate. Each conversion arrives as a forum announcement roughly a month before the first invoice: snapshots were previously free and unlimited-feeling with daily automatic snapshots and up to 60-day retention; MPG cross-region traffic previously rode free while only non-managed private transfer was metered. Nothing about the product changed — only the meter. Teams that budget "last month plus a little" absorb each one without noticing, which is a fine way to wake up a year later paying for three things you never chose.

The reference stack

To keep the bill concrete instead of vibes, fix a typical small production setup — the kind of side project or early SaaS that is Fly.io's bread and butter:

  • Web frontend: 2x shared-cpu-1x with 256 MB RAM (HA pair, the fly launch default), one region.
  • API service: 2x shared-cpu-1x with 512 MB RAM (HA pair), same region as web.
  • Postgres, self-managed: 2x shared-cpu-1x with 1 GB RAM (primary plus standby) with one 40 GB volume each, in a second region for failure isolation — which is what makes the cross-region rows nonzero.
  • Traffic: 100 GB/month public egress, 50 GB/month app-to-database chatter across regions.
  • Snapshots: daily automatic snapshots, 5-day default retention, moderate churn, landing around 18 GB of incremental stored bytes.

Nothing exotic: six small machines, two volumes, two regions. Independent community research transcribing Fly.io's price list puts a "2-machine app plus small self-managed Postgres" at roughly $13–20/month, so a doubled-up HA version landing near $38 scans correctly. The managed-Postgres variant swaps the self-managed pair for MPG Basic (shared 2x CPU, 1 GB RAM, $38/month plus $0.28/GB-month storage) and is priced as a memo row.

Pricing line one: snapshots at $0.08 per GB

Volume billing itself is unchanged — $0.15 per GB-month of provisioned capacity, charged 24/7 even when the machine is stopped or the volume is detached. Snapshots are the new layer on top: every automatic daily snapshot of every volume now accumulates billable bytes at $0.08 per GB-month beyond the 10 GB monthly free band.

For the reference stack the math is gentle: ~18 GB stored minus 10 GB free leaves 8 GB billable, which is $0.64/month. Three properties of this meter decide whether it stays gentle:

  • It keys off retention, not volume size. Five days of a quiet 40 GB volume barely clears the free band. Thirty-day retention on the same volume, or a churn-heavy database where each daily snapshot diverges, can push stored bytes to 40–60 GB — $2.40 to $4.00/month per volume, forever, until somebody sets a lifecycle.
  • It multiplies by volume count. Preview environments, per-tenant volumes, and forgotten volumes from deleted machines each bring their own snapshot stream. Deleting a machine does not always delete its volume, and a detached volume still bills provisioned capacity plus its snapshots.
  • The free band is per organization, not per volume. One volume's 18 GB leaves 8 GB billable; five such volumes leave 80 GB billable — $6.40/month — with no additional free allowance.

The honest summary: snapshots are the cheapest line on the 2026 bill and the easiest one to let compound. The meter rewards the operationally disciplined (short retention, few volumes, explicit destroys) and taxes everyone else a little more each month.

Pricing line two: inter-region networking at machine rates

Fly.io's data-transfer menu has always been region-tiered: public egress at $0.02/GB in NA/EU, $0.04 in APAC/Oceania/South America, $0.12 in Africa/India, with inbound and same-region private transfer free. Cross-region private traffic for regular apps was already metered at granular per-GB rates ($0.006 NA/EU, $0.015 APAC, $0.050 Africa/India for newer orgs) — which is why the reference stack's 50 GB of app-to-database chatter costs $0.30 both before and after. That row is the Rosetta stone: "machine rates" means the same per-GB private-network price list.

What February 2026 changed is the carve-out: Managed Postgres inter-region traffic, previously unbilled, now meters at exactly those rates and shares the existing private-network free quota, with same-region MPG traffic still free. For the MPG variant of the stack — app in one region, Basic cluster in another — 50 GB of queries and replication chatter adds a brand-new $0.30/month in NA/EU. Small number, new category.

The bite, as with snapshots, is in the multipliers and the architecture:

  • Region choice is now a price choice. The same 50 GB costs $0.75 in APAC and $2.50 in Africa/India. Colocating app and database in one region keeps private transfer at exactly $0 — the single highest-leverage line in this entire post.
  • MPG's $38 floor dwarfs its own network line. The managed-Postgres variant totals roughly $60/month before a single gigabyte moves: the inter-region charge is 0.5% of that. Teams adopting MPG for its included HA, backups, and pooling should budget the plan fee first and treat the network line as a placement nudge, not a cost driver.
  • There are no billing alerts or spend caps. Fly.io has no native spend notification, so a misconfigured multi-region topology bills until a human opens the dashboard. The inventory commands (fly apps list, fly machine list, fly volumes list, fly ips list) are the audit kit.

When pennies become dollars: the sensitivity table

One convenient data point proves nothing, so here is the range. Each row varies one assumption off the reference stack; everything else stays fixed.

ScenarioSnapshot lineCross-region lineMonthly delta vs 2025
Reference (5-day retention, NA/EU)$0.64$0.30 (unchanged)+$0.64
30-day retention, 100 GB volume, high churn (~60 GB stored)~$4.00$0.30+$4.00
Five volumes with default snapshots (~80 GB billable)~$6.40$0.30+$6.40
Same stack, APAC regions$0.64$0.75 (was already $0.75)+$0.64
Same stack, Africa/India egress 100 GB at $0.12$0.64$2.50 (was already $2.50)+$0.64
MPG variant, cross-region, NA/EU$0.00 (backups included)+$0.30 new+$0.30 on a ~$60 base

Two readings fall out. First, the genuinely new 2026 money is bounded: roughly $0–7/month for small stacks, driven almost entirely by snapshot retention hygiene. Second, the old meters still dominate the geography story — a 6x egress multiplier between NA/EU and Africa/India rates swamps both new lines combined. Price your region before you price your snapshots.

The Hetzner column

For the case-study half of the comparison — same three services, flat-rate hardware. A single Hetzner CX22 (2 vCPU, 4 GB RAM, 40 GB NVMe, ~€4.51/month) comfortably runs all three services as containers; a two-box HA equivalent doubles that to €9. An 80 GB block volume lists around €0.044/GB (€3.52), snapshots around €0.012/GB (the reference 18 GB ≈ €0.22), automated backups cost 20% of the instance price, and every server includes 20 TB of traffic — roughly 200x the reference stack's egress, unmetered in practice.

Fly.io (after Feb 2026)Hetzner (single box / HA pair)
Compute$22.00~$4.90 / ~$9.80
Stateful storage + backups$12.64 (volumes + snapshots)~$4.60 (volume + snapshots)
Egress + private transfer$2.30$0 (inside 20 TB)
Managed-Postgres equivalent+$38–44 (MPG variant)+$0 (run it yourself)
Total~$39 self-managed / ~$60 MPG~$10 / ~$15

The ratio is roughly 3–4x, and the two new billing lines are not the reason — the floor is. Fly.io charges per metered dimension (per-second compute, provisioned GB-hours, per-GB transfer, per-IPv4) while Hetzner charges per box with traffic bundled. What the per-dimension model buys is genuine elasticity: an auto-stopped staging app costs under a dollar, and per-second billing makes ephemeral machines nearly free as long as they are destroyed rather than stopped. What the box model buys is a bill you can predict from memory. The new lines widen that predictability gap by a little each time, which is the trend to watch rather than any single invoice.

What to do Monday morning

  • Colocate app and database in one region. Same-region private transfer is free; cross-region chatter is the only network line you can delete entirely.
  • Set snapshot retention deliberately. The 5-day default fits inside the 10 GB free band for small volumes; 30–60 day retention is a line item. Decide per volume, not per platform default.
  • Destroy detached volumes explicitly. fly volumes list is the audit; provisioned gigabytes bill while detached and their snapshots bill alongside.
  • Re-check MPG placement. If the database moved managed in 2025 with app and cluster in different regions, February 2026 quietly added a meter to that distance. Same-region MPG traffic remains free.

The through-line across all four: metered platforms reward operators who read the invoice the way they read logs — routinely, with alerts. Fly.io's two 2026 lines are individually trivial and structurally clarifying: every "previously free, now metered" announcement is the platform telling you which dimensions of your architecture have a price. Listen the first time and the bill stays boring.

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