Fly.io Hidden Costs in 2026 — What Your Invoice Actually Shows
Fly.io started 2026 with two billing changes that surprised a lot of developers. In January, they introduced fees for volume snapshots — automated backups of your persistent storage that were previously free. In February, inter-region private network traffic became billable for the first time.
Neither change was announced prominently. Developers discovered both through their invoices.
This post documents every cost that Fly.io does not prominently display on its pricing page, with exact rates, real invoice calculations, and the dates each fee was introduced. If you are evaluating Fly.io or trying to understand a surprising bill, this is the complete picture.
What Fly.io Does Well
Before the costs: Fly.io built something genuinely impressive. Their anycast network runs machines in 35+ regions. The fly launch experience is fast and developer-friendly. For latency-sensitive applications that need to run close to users in multiple geographies simultaneously, Fly.io's architecture is well-suited.
The pricing model — pay for what you use, down to per-second billing — works well for very small or very large deployments. The complexity comes in the middle: production applications with volumes, multi-region setups, and sustained traffic.
The 2026 Fee Changes
Volume Snapshot Fees (January 2026)
Before January 2026, Fly.io automatically took volume snapshots (point-in-time backups of your persistent volumes) at no charge. Starting in January 2026, these snapshots are billed at $0.08 per GB per month.
This affects any Fly.io deployment that uses volumes — which includes all Fly Postgres setups, any application that needs persistent storage, and most production workloads.
Example: A Fly Postgres cluster with a 10 GB volume now costs an additional $0.80/month in snapshot fees. A 50 GB volume costs $4/month in snapshots alone, on top of the $0.15/GB/month volume storage fee.
The fee is applied per snapshot stored, not per GB of original data. Fly.io retains multiple snapshots by default (the retention policy varies), so the actual cost can be 2–5× the raw snapshot storage rate until snapshots age out.
For a 10 GB volume with a 7-day retention period and daily snapshots, the actual snapshot cost is closer to $5–6/month, not $0.80.
Inter-Region Private Network Charges (February 2026)
Fly.io's private network (.internal addresses) allows machines in different regions to communicate over an encrypted WireGuard mesh. Before February 2026, this traffic was free. Starting in February, inter-region private network traffic is billed at $0.01/GB in and $0.02/GB out.
This affects:
- Multi-region Fly Postgres (primary in one region, replicas in others): every replication write now costs money
- Global Anycast apps that make backend calls across regions (common for read-replica fan-out patterns)
- Multi-region job queues that distribute work across regions
For a primary database in Frankfurt with a read replica in Amsterdam (same-region cluster, short distance but different Fly regions), replication traffic of 5 GB/day costs approximately $3/month in private network fees.
For genuine global deployments with 50 GB/month of inter-region traffic, this adds $1–1.50/month at low volumes. For high-replication setups (active-active patterns, high-write databases), the fee can exceed $20–50/month.
The Complete Fly.io Cost Breakdown
Here is every billable item on Fly.io as of April 2026:
Machines (Compute)
| Machine type | vCPU | RAM | Price/month |
|---|---|---|---|
| shared-cpu-1x | 1 (shared) | 256 MB | $1.94 |
| shared-cpu-2x | 2 (shared) | 512 MB | $3.88 |
| shared-cpu-4x | 4 (shared) | 1 GB | $7.76 |
| shared-cpu-8x | 8 (shared) | 2 GB | $15.52 |
| performance-1x | 1 (dedicated) | 2 GB | $31 |
| performance-2x | 2 (dedicated) | 4 GB | $62 |
| performance-4x | 4 (dedicated) | 8 GB | $124 |
| performance-8x | 8 (dedicated) | 16 GB | $248 |
Machines are billed per second of wall-clock time while running. Stopped machines do not accrue compute charges but still occupy volume storage.
Volumes (Persistent Storage)
| Item | Rate |
|---|---|
| Volume storage | $0.15/GB/month |
| Volume snapshots ⚠️ (NEW Jan 2026) | $0.08/GB/month per snapshot stored |
A 10 GB volume costs:
- Storage: $1.50/month
- Snapshots (1 snapshot, no retention): $0.80/month
- Snapshots (7-day daily retention, 7 snapshots): ~$5.60/month
- Total: $2.30–$7.10/month for 10 GB (snapshot policy dependent)
Network
| Item | Rate |
|---|---|
| Outbound (egress) to internet | $0.02/GB (first 30 GB free) |
| Inbound from internet | Free |
| Private network (same region) | Free |
| Inter-region private network ⚠️ (NEW Feb 2026) | $0.01/GB in, $0.02/GB out |
IPv4 Addresses
| Item | Rate |
|---|---|
| Dedicated IPv4 | $2/month per IP |
| Shared IPv4 | Included (1 per app) |
Most production apps need a dedicated IPv4 for custom domains and TLS. This adds $2/month per application — a small but real fee that surprises developers who assumed IP addresses were included.
Builder Machines
When you run fly deploy, Fly.io spins up a remote builder machine to build your Docker image (unless you push a pre-built image). Builder machines are performance-2x (4 GB RAM, 2 vCPU) and billed per second at the compute rate.
For a typical build of 2–5 minutes: $0.04–$0.10 per build.
For a CI/CD pipeline running 20 builds/day: $0.80–$2/day, or $24–$60/month in builder charges alone.
You can avoid builder fees by building images locally and using fly deploy --image. This is worth doing for active development workflows.
Fly Postgres Add-On
Fly Postgres is a self-managed Postgres cluster running as Fly machines — it is not a fully managed database (no automatic failover, no managed backups, you are responsible for recovery).
A minimal production Postgres setup:
- 1× performance-1x machine (2 GB RAM): $31/month
- 1× 10 GB volume: $1.50/month
- Volume snapshots: $0.80–$7/month (new, Jan 2026)
- Total: $33–$40/month for a basic single-node Postgres
A high-availability setup (primary + replica):
- 2× performance-1x machines: $62/month
- 2× 10 GB volumes: $3/month
- Volume snapshots (×2): $1.60–$14/month
- Inter-region replication traffic: $1–10/month (new, Feb 2026)
- Total: $67–$89/month for HA Postgres
A Realistic Production Invoice
Let us calculate the actual monthly cost for a typical small production deployment on Fly.io:
Setup: 1 web app (Node.js/Python API) + 1 Postgres database, EU region, light traffic
| Item | Cost |
|---|---|
| App: 1× performance-2x (4GB/2vCPU) | $62.00 |
| Postgres: 1× performance-1x (2GB/1vCPU) | $31.00 |
| Postgres volume (20 GB) | $3.00 |
| Volume snapshots (20 GB × 7 days) | $11.20 |
| Dedicated IPv4 (app) | $2.00 |
| Dedicated IPv4 (Postgres) | $2.00 |
| Outbound traffic (30 GB, first 30 GB free) | $0.00 |
| Builder (10 builds/month × $0.05) | $0.50 |
| Total | $111.70/month |
In 2025, the same setup cost approximately $80–85/month (no snapshot fees, no private network fees). The 2026 changes added $25–30/month to this configuration.
For EU data residency specifically: Fly.io's EU region pricing is identical to US pricing, but GDPR compliance is not guaranteed out of the box. Fly.io is a US company (incorporated in Delaware, headquartered in San Francisco). Storing EU user data on Fly.io requires a carefully evaluated Data Processing Agreement and potentially a Schrems II transfer impact assessment — something many developers do not know they need until their legal team raises it.
Why This Matters Now
Fly.io's value proposition was always "pay for what you use at competitive rates." The 2026 changes shift some always-on costs (backups, replication) into the usage model, which changes the math for production deployments significantly.
The Reddit thread reactions from January 2026 (r/devops, r/selfhosted) show a clear pattern: developers who had been on Fly.io for 12–18 months without issue opened their January invoice to find it 20–40% higher than expected. Many were not aware their Postgres volumes had been accumulating snapshot storage.
The frustration is compounded by the communication: the snapshot fee change was documented in the Fly.io changelog but not sent as a direct billing notification. Developers who do not read changelogs found out from their bank statement.
The Alternative: Predictable Flat-Rate Pricing
If you are re-evaluating your hosting because of a surprising Fly.io invoice, the core question is: do you need Fly.io's multi-region architecture, or do you need reliable EU infrastructure at a predictable cost?
For most small SaaS applications and internal tools, the answer is the latter. One region, close to your users, at a price you can plan around.
sota.io offers a flat-rate EU hosting model:
| Plan | RAM | Storage | Price/month |
|---|---|---|---|
| Indie | 2 GB | 2 GB | €9 |
Includes: managed PostgreSQL, EU data residency (Hetzner Germany), TLS, custom domains, deployment pipeline. No snapshot fees. No network egress fees. No builder charges. No IPv4 add-ons. One number on your invoice.
For the same production workload that costs $111.70/month on Fly.io (post-2026 fees), the equivalent sota.io setup is €9/month.
The trade-off is clear: Fly.io offers genuine global distribution and a rich ecosystem. sota.io offers simplicity and a fixed bill. For applications that do not need multi-region anycast, the trade-off is straightforward.
The Checklist Before Your Next Fly.io Invoice
If you are staying on Fly.io, these are the settings worth reviewing today:
- Check your volume snapshot policy. Run
fly volumes snapshots list <volume-id>to see how many snapshots are being retained. You can reduce retention to lower costs. - Audit your IPv4 allocations. Run
fly ips list— you may have dedicated IPs assigned to apps that no longer need them. - Switch to pre-built images for CI/CD. Build your Docker image in your CI pipeline and push with
--imageto avoid builder charges on every deploy. - Review multi-region topology. If you deployed to multiple regions as an experiment and are not actively serving traffic from all of them, consolidating regions eliminates inter-region replication costs.
- Set a billing alert. Fly.io's billing dashboard supports spend alerts — set one at 120% of your expected monthly cost to catch unexpected increases early.
The fundamental issue is not that Fly.io is expensive. It is that the pricing model has enough variables that the monthly cost is difficult to predict — and two of those variables got more expensive in 2026 without prominent notice.
Related: Railway vs Render vs Fly.io vs sota.io — Real Pricing Comparison 2026