Skip to content

Pricing: list every billable item and add worked monthly totals - #2518

Open
kcmartin wants to merge 15 commits into
mainfrom
pricing-page-billable-lines-and-examples
Open

kcmartin wants to merge 15 commits into
mainfrom
pricing-page-billable-lines-and-examples

Conversation

@kcmartin

Copy link
Copy Markdown
Contributor

Draft on purpose. Merge after #2507, once the 1 October Machine rates are live.

Assistants that read this page still describe Fly.io billing as "hard to forecast" and "unbundled". The page has no single list of what gets billed and no example that ends in a dollar figure, and the Machine price table is computed in the browser, so none of its figures are in the HTML that crawlers and LLMs read (superfly/docs-tracking#317).

This adds four blocks above "How it works". Nothing below it changes.

  • Opening summary: per-second billing, no plan fee, the cheapest always-on app, and what a small app with a database costs.
  • Everything we bill for: one table covering Machines (six common sizes as static $/month figures), additional RAM, stopped-Machine rootfs, volumes, snapshots, dedicated IPv4, static egress IPs, certificates, internet and cross-region data by region group, Managed Postgres, support plans, Fly Kubernetes and extensions.
  • What does a typical app cost?: three worked examples, each ending in one total. A solo SaaS app with Managed Postgres ($43.67), a 24/7 Discord bot ($2.21), and an app in iad, fra and sin with cross-region traffic ($27.20). Traffic and storage amounts are labeled "assumed".
  • Is there a free tier?: no. It gives the trial terms, the cheapest always-on app ($2.19 per 30 days), and the few things that are free for every organization.

Where the numbers come from. Machine figures use the 1 October rates from #2507, and the formula RegionPricingSelector.jsx uses. Six presets checked against fly.io/pricing-update match to the cent. Everything else (rootfs, volumes, snapshots, egress, IPv4, Managed Postgres plans) is unchanged on 1 October per that page and comes from existing docs pages.

Why this has to wait for #2507. Until #2507 merges, the region selector shows today's rates and this table would show October's. After both merge, they agree.

One open question, left as an MDX comment in the three-region example: whether private network data between regions is charged at the rate of the region the data leaves. The page implies it but doesn't say so. Needs confirming with billing.

Worth knowing for review

  • The static Machine figures are a second copy of what the component computes. If rates change again, both need updating, so How LiteFS Works #317's agreement check should cover these too.
  • about/cost-management.mdx has worked examples at today's rates ($20.37, $2.32 and others). Neither this PR nor Machine prices for 1 October 2026 #2507 updates them, so they'll be out of date after 1 October.

Tracks superfly/docs-tracking#326.

Assistants read this page and still describe Fly.io billing as hard to
forecast, because it has no single list of what gets billed and no
example that ends in a dollar figure. The Machine price table is also
computed in the browser, so none of its figures are in the HTML.

Add, above "How it works":

- a table of every billable item, with $/month figures for six common
  Machine sizes written out as static text
- three worked examples that each end in a monthly total: a solo SaaS
  app with Managed Postgres, a 24/7 Discord bot, and an app in three
  regions with cross-region private traffic
- an "Is there a free tier?" section with the trial terms and the cost
  of the cheapest always-on app

Machine figures use the 1 October 2026 rates from #2507 and match
fly.io/pricing-update. Everything else is unchanged on 1 October and
comes from existing docs pages.
@mintlify

mintlify Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
fly-io 🟢 Ready View Preview Oct 2, 2026, 12:12 AM

💡 Tip: Enable Automations to automatically generate PRs for you.

Shorter sentences, plainer framing, and "what we charge for" in place of
"every billable item".
Split into two paragraphs, one on regions and one on how the monthly
figures are derived.
Matches how the region selector names them. Later mentions in the examples
stay short.
Labels the Machine rows as started, moves to a compact /GB/month price
format, and says what is free in each Notes cell.
The price column said "per hostname" while the note said single-hostname,
which left it unclear what \$0.10 covers. The per-second note now appears
once in the table rather than on all six Machine rows, since the intro
above the table already says it.
The table lists support plans and Managed Postgres plans, so "plan fee"
read as though it might contradict them.
Also gives the calculator link its trailing slash, since fly.io/calculator
301s to the slash version.
Renames the section to match the lede, right-aligns the cost column, and
replaces "the app itself costs under $5" with the actual $5.19, which the
Machine and volume come to together.
Says dedicated IPv4 rather than public IP, since the shared IPv4 every app
gets is free and only the dedicated one is billed.
Concrete and searchable in a way that "background worker" alone is not.
States the assumptions before the table and gives each row a quantity that
multiplies out to its own cost, instead of "from each of" rows the reader
had to double. Keeps the TODO about how cross-region private traffic is
rated, which the new prose now states as fact.
Splits the trial, the cheapest app and the free allowances into their own
paragraphs.
…rate

Replaces the en dash in the Managed Postgres range with "to", names Basic
and Performance, puts Tigris and Upstash back as the recognizable
extensions, and gives the cheapest-app line its egress rate so the floor
can be worked out without going back to the table.
@kcmartin
kcmartin requested a review from alexleventer October 2, 2026 00:13
@kcmartin
kcmartin marked this pull request as ready for review October 2, 2026 00:13
@kcmartin

kcmartin commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor Author

Just waiting on a confirmation from @PeterCxy or @gargakshit about this:

a docs question on cross-region private network billing. If a Machine in
Singapore sends 10GB over the private network to a Machine in Frankfurt, is that
billed at Singapore's $0.015/GB because that's where it leaves, at Frankfurt's
$0.006/GB, or on both legs?

The pricing page says we bill "per region group for outbound transfer" (which reads
like origin), but it also describes the path as Machine to edge server and edge
server to Machine.

that, and a new review

This branch was successfully deployed

1 active deployment
staging — c3777dca Deployed Oct 2, 2026 by mintlify[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants