Skip to main content

Fly.io's Two New 2026 Billing Lines: Read the Invoice Before You Migrate Off It

10 min readDora NodaDora Noda
Share
On this page

Nobody announces a price hike anymore. They announce a "new billing line item," give you a dashboard preview and sixty days' notice, and let your own invoice do the arguing. On January 1, 2026, Fly.io's invoice grew two lines: metered billing for volume snapshots, which used to be free, and metered billing for app-scoped egress IPs, which did not exist before. A month later, a third meter started running on inter-region private-network traffic for Managed Postgres.

Here is the bottom line up front. For a typical small workload — two small apps, a 10 GB volume, 200 GB of North American egress, one dedicated IPv4 — the new lines add roughly a dollar or two to an ~$12 monthly Fly.io bill. Nobody migrates over a dollar. But the new lines are not the story; the pattern is. Since October 2024, Fly.io has removed its free tier, deprecated its entire GPU lineup, and put meters on three things that used to be free or nonexistent. Each change is defensible in isolation. Together they describe a vendor tightening margins — and a bill that will keep growing new lines. The flat alternative is a Hetzner CPX22 (2 vCPU, 4 GB RAM, 80 GB NVMe, 20 TB of included traffic) at $7.59 a month, where snapshots, IPs, and bandwidth are either included or simply not metered.

This post reads the new invoice line by line, totals a representative workload on both sides, shows where the metered bill bends hardest, and names what the pattern signals for anyone deciding whether to stay or go.

Line item 1: volume snapshots, $0.08 per GB-month

Fly.io takes automatic daily snapshots of every volume. Until this year, that was a free safety net. Starting January 1, 2026 — first appearing on the early-February invoice — stored snapshots cost $0.08 per GB per month, with the first 10 GB free each month.

Three details matter for reading this line correctly:

  • It meters stored bytes, not provisioned size. A 10 GB volume holding 1 GB of data produces roughly a 1 GB snapshot. Snapshots are incremental, so only changed blocks since the previous snapshot consume additional storage.
  • Retention is the dial. The default keeps 5 days of daily snapshots, configurable from 1 to 60 days, and there is now an option to disable automatic snapshots entirely — at the cost of the warning Fly.io itself attaches: volumes live on a single server, so no snapshots means a host failure can lose the data.
  • Most bills barely move — by Fly.io's own numbers. The announcement states 98% of customers will see no additional charge, and of the remaining 2%, 83% will see less than a 10% increase.

That framing is honest as far as it goes, and worth translating: the customers who do pay are the ones with large or churny volumes, where daily incrementals stack up against a short retention window. A 100 GB database volume with a 5-day retention can hold several tens of GB of stored snapshots — the first 10 GB free covers the hobbyists, and everyone past it pays per GB per month for what used to be included. Check exposure with fly volume snapshot ls <volume-id>, which reports stored versus provisioned size, or the Cost Explorer preview in the dashboard billing section.

Line item 2: app-scoped egress IPs, $3.60 per month per IPv4

The second January 1, 2026 line covers app-scoped egress IPs, a feature that launched in beta a few weeks before billing began. These are stable outbound IPs for an app — the kind of thing you need when a third-party API allowlists your traffic by source address. Pricing matches the legacy machine-scoped egress IPs: $3.60 per month per IPv4 address, with IPv6 not billed independently.

Note the contrast with the ordinary dedicated IPv4 for inbound traffic, which runs about $2 per month per app. An app that needs both a stable inbound address and a stable outbound address now carries two separate IP line items before serving a single request. Neither is large; both are new kinds of rent on something a flat server simply includes — a Hetzner cloud server ships one IPv4 in the base price, and outbound traffic leaves through it with no per-address meter.

And there is a third meter worth reading in the same sitting even though it arrived a month later: inter-region private-network usage for Managed Postgres (MPG), billed from February 2026. Same-region app-to-app traffic stays free, but cross-region private transfer is metered per GB. A primary in Frankfurt with a read replica in Virginia — a textbook resilience layout — now pays bandwidth rent on its own replication traffic.

The worked invoice: a typical small workload, both sides

Take a representative small production setup: two shared-CPU apps, one 10 GB volume with default snapshots, one dedicated IPv4, and 200 GB of monthly egress served from North America or Europe. All Fly.io rates below are the published catalog figures as of early 2026:

Line itemFly.io (metered)Hetzner CPX22 (flat $7.59/mo)
Compute, 2× shared-cpu-1x 256 MB$2/mo each = **$4.00**2 vCPU / 4 GB included
10 GB volume10 × $0.15 = $1.5080 GB NVMe included
Snapshot storage (~12 GB stored)10 GB free, 2 GB × $0.08 = **$0.16**Snapshots/backups available at ~20% of server price; no per-GB meter
1× dedicated IPv4$2.001 IPv4 included
200 GB egress, NA/EU200 × $0.02 = $4.0020 TB included
Total~$11.66/mo$7.59/mo

Two honest caveats. First, these are catalog snapshots, not quotes — re-run them against the current pricing pages before budgeting. Second, the Fly.io side buys genuine conveniences the flat box does not: per-second billing, global Anycast, fly deploy from a Dockerfile, and no host to patch. At this scale the delta is about four dollars a month, and convenience wins that trade easily.

The table is not the argument. The sensitivity analysis is — because every row of the metered column scales with something the flat column absorbs.

Where the metered bill bends

Four variables decide whether the two bills stay within coffee money or diverge into migration math:

  • Egress region is a 6× multiplier. Outbound bandwidth costs $0.02 per GB in North America and Europe, $0.04 across much of Asia-Pacific and South America, and $0.12 per GB in Africa and India. That same 200 GB served to users in Mumbai or Johannesburg costs $24 instead of $4 — more than triple the entire Hetzner server. Push a terabyte anywhere and the metered egress line alone ($20–$120 depending on region) exceeds any single flat box, while 20 TB sits inside the Hetzner base price.
  • Snapshot cost follows churn, not size. A mostly static 10 GB volume costs pennies under the new meter. A 100 GB database with heavy daily writes and 5-day retention can accumulate tens of GB of stored incrementals past the free 10 GB — single dollars per month per volume, compounding across every volume in the org. Retention is the dial, but turning it down trades backup depth for bill depth.
  • IP charges multiply per app. $2 inbound plus $3.60 outbound egress IP is $5.60 per app per month for stable addresses in both directions. One app: rounding error. Ten microservices each needing allowlisted outbound traffic: $36 a month for addresses alone, on top of the compute they attach to.
  • Private traffic now has a price. The February 2026 MPG inter-region charge means multi-region Postgres topologies pay per GB for replication that used to ride free. Same-region stays free — which quietly nudges architecture toward single-region layouts on exactly the platform whose pitch was "run close to your users everywhere."

None of these bends is a trap. Each is a meter doing what meters do: converting architectural choices — serve users in Lagos, keep deep backups, split services, replicate across oceans — into line items. The question is only whether you want your architecture reviewed by your invoice.

What the pattern signals

No single change here is unreasonable. Snapshot storage genuinely costs Fly.io money; the announcement says so plainly. But zoom out to the 2024–2026 sequence and a direction emerges:

  1. October 2024: the free tier ends. New organizations get pay-as-you-go from the first machine — legacy Hobby, Launch, and Scale plans kept their allowances, everyone else gets a one-time trial measured in machine-hours — with a $5 monthly Hobby minimum as the floor.
  2. January–February 2026: three new meters. Snapshots, egress IPs, and MPG inter-region traffic all start billing within five weeks of each other.
  3. August 2026: GPUs exit entirely. GPU Machines — A10s at $0.75/hr, L40S at $0.70/hr, A100s up to $1.50/hr — become unavailable after August 1, 2026. The platform that once sold on-demand accelerators now sells none.

Deprecating GPUs while metering backups and IPs is not a product roadmap; it is a margin program. Fly.io is concentrating on its profitable core — small stateless-ish Machines near users — and either charging cost-plus or exiting everything else. That is a legitimate strategy, and for workloads inside that core it changes little. But it means the bill's direction of travel is set: more things metered, fewer things bundled, and no free tier absorbing the experiments. Read each future "new billing line item" announcement as confirmation, not surprise.

Stay or go: the shape of the answer

Staying on Fly.io still wins when the workload fits the core the vendor is converging on: a few small apps, modest egress in cheap regions, shallow snapshot needs, single-region Postgres. The premium over a flat box is a few dollars a month and buys global presence plus zero host operations. That is a good trade and no invoice line invalidates it.

The flat box wins when the workload lives in the meters: heavy or badly-regioned egress, large churny volumes with deep retention, fleets of services each needing stable IPs, or multi-region data topologies. There the metered total does not just exceed $7.59 — it grows with success, so every good month (more users, more data, more regions) makes the bill worse. Flat pricing inverts that: growth fills included capacity before it costs anything new.

Either way, the discipline is the same. Once a year, total one real month's invoice line by line — including the lines that did not exist last year — and price the same workload on a flat server with 20 TB included. If the meters keep winning, stay with a clear conscience. If they don't, the migration target is not another metered platform with a different logo. It is hardware you own, running a platform you operate, where a backup is a cron job and an IP address is not a subscription.

Sources: Fly.io community announcements — "We are going to start charging for volume snapshots from January 2026" ($0.08/GB-mo, 10 GB free, Jan 1 2026 / February invoice), "Billing for App-Scoped Egress IPs starts Jan 1, 2026" ($3.60/mo per IPv4), "Charging for MPG inter-region private network usage from February 2026"; free-tier removal Oct 7 2024 and GPU deprecation after Aug 1 2026 via Fly.io pricing docs and contemporaneous third-party comparisons; egress/volume/IPv4 catalog rates ($0.02/$0.04/$0.12 per GB by region, $0.15/GB-mo volumes, ~$2/mo IPv4) via the same docs and 2026 pricing surveys; Hetzner CPX22/CX33 figures ($7.59/mo 2 vCPU/4 GB/80 GB/20 TB; CX33 €8.49/mo post-June-15-2026 repricing) via Hetzner catalog and third-party 2026 comparisons — re-verify catalog rates before budgeting.

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