What it actually costs to run a one-Rails-app SaaS per month
Founders coding with AI tend to land in the same place. The first version is a $200/month no-code stack: a page builder, a chatbot, an auth gate, a workflow tool, two or three other SaaS seats glued together. The second version is a Rails app on a single host that costs $40/month. The transition keeps coming up in client conversations, and the math changes the day you decide to rebuild.
Most online answers about what that math actually is are partial. Hosting articles list the host's monthly fee and stop. Stack articles list the tools without prices. Nobody adds it up.
Here is the math, for a one-Rails-app SaaS, from MVP through validated to growing. Real numbers, all the line items, four host options ranked by what I'd actually pick today.
Hosting: the four real options for Rails in 2026
For a Rails app you actually own, four hosts cover almost every reasonable case. Ranked by what I'd recommend right now.
Fly.io: the simplicity pick. A pay-as-you-go platform that bundles compute, managed Postgres clusters, Tigris object storage, and a direct Sentry integration under one bill. The smallest shared VM is about $2/month. Tigris gives you 5 GB of object storage free and zero egress charges, which is the single biggest cost surprise on AWS S3 for anyone serving images or downloads. Real all-in for a small Rails app with Postgres, object storage, and monitoring: $10-20/month. The Tigris egress-free angle alone is worth picking Fly over hosts that use S3 underneath.
Kamal + Hetzner VPS: the Rails-default pick. Kamal ships in the rails new boilerplate in Rails 8. 37signals run their own stuff on it. The deal: you provision a VPS, Kamal handles deploys, you self-manage Postgres + Redis + storage on the same box. Hetzner's CX23 (2 vCPU shared Intel/AMD) is €4.79/month. That is the whole bill if you accept the operational load. All-in: about $5-8/month plus the time you spend doing what a PaaS would do for you.
Hatchbox + Hetzner VPS: Kamal with a UI. Hatchbox is $10/month per server, unlimited apps, the same VPS underneath. You get a deploy UI and one-click managed services on top of the box. Sensible compromise if Kamal's CLI feels like too much. All-in: $15-20/month.
Render: the PaaS pick. The closest analogue to Heroku. As of 2026, Render's pricing restructured: the Pro plan is $25/month as a platform fee plus separate pay-as-you-go compute and Postgres charges. For a small always-on Rails app with a Postgres database, expect $30-40/month all-in. Free tier still exists but the app sleeps after fifteen minutes of inactivity, which is fine for a side project and embarrassing for paying customers. Hit the pricing page for the current numbers.
My order changes if your situation does. For a founder who has never deployed anything before and wants to stay focused on shipping, Fly. For a founder who wants the canonical Rails workflow and is comfortable with a VPS, Kamal + Hetzner. For someone who wants to outsource ops without paying Heroku money, Hatchbox. Render if a PaaS browser-only experience matters.
The line items most cost articles forget
Hosting is the headline. The line items below are where surprise bills come from.
Stripe fees scale with revenue, not infrastructure. Standard rates are 2.9% plus a fixed €0.25 per transaction in Europe, or 2.9% plus $0.30 in the US. On €5,000 of monthly revenue across 50 customers paying €100 each, Stripe takes roughly €157. That is a real line item that no hosting calculator includes.
Object storage for user uploads, attachments, images. ActiveStorage will hit this the moment your app accepts a file. On Fly, Tigris gives you 5 GB free and $0.02/GB after with no egress charges. On other hosts, Cloudflare R2 gives you 10 GB free, $0.015/GB stored, also zero egress. Pick R2 over AWS S3 unless you have a specific reason. Budget $0-5/month for the first year.
Transactional email. Free up to 3,000/month on Resend or ~100/day on SendGrid. Once you cross the free tier, my pick is Postmark at $15/month for 10,000 emails. It just works, which is what you want from email. Expect to cross the free tier somewhere between customer 30 and customer 80, once password reset emails plus receipt confirmations plus account notifications stack up. Budget $0-15/month.
Error tracking and monitoring. On Fly you get the Sentry extension bundled into your bill. Off Fly, Sentry free covers 5,000 events/month, AppSignal free covers 100k events/month and one user, RorVsWild is in the $15/month range. For most Rails apps under 1,000 active users, free tiers cover you. Budget $0-20/month.
Backups. On Fly, Managed Postgres clusters include automated backups. On Render, daily Postgres backups are extra. On Hatchbox + Hetzner, you provision them yourself; the cheapest path is a Hetzner Storage Box at ~€3/month or a manual pg_dump to S3/R2 for cents. Budget $0-10/month.
CDN. Cloudflare's free tier covers static asset delivery and caching for almost every small SaaS. Set this in front of your domain on day one, regardless of host. Cost: $0.
Privacy-respecting analytics. Plausible at $9/month or Fathom at $15/month. Not strictly required but most founders add one within the first quarter once they start writing about the product. Budget $0-15/month.
Domain plus DNS plus SSL. Domain is $12-15/year via Namecheap or your registrar of choice. DNS is free with the registrar or Cloudflare. SSL is free via Let's Encrypt, auto-provisioned on all four hosts. Total: about $1.25/month amortised.
NOTE
If you went with Sidekiq instead of Solid Queue, you need Redis. Upstash Redis starts at $0 for 10,000 commands/day and scales to ~$10/month. On Kamal + Hetzner you can run Redis on the same VPS for free. On Fly you can use the Upstash integration. Solid Queue + Solid Cache backed by Postgres avoids this line item entirely and is the Rails 8 default for a reason.
What this actually costs you, by stage
MVP, nobody pays yet. Fly's free shared-cpu-1x VM plus Tigris's free 5 GB plus a free Postgres tier on Fly's Managed Postgres or Supabase. Sleep mode is fine because no real customers are watching. Total: $0/month plus the time you spend setting it up.
Validated, at least one paying customer. Fly with a $5-10 always-on shared VM plus a small Managed Postgres cluster plus Tigris still free. Skip the email tier until you cross 3,000 transactional emails/month. Sentry on the free tier. Total: ~$15-20/month. The $40/month landing zone most founders end up at is real, and yours can be lower than that.
Growing, 10 to 100 customers, real load, real reputation risk. Either bump the Fly setup to a larger VM and Postgres tier (~$25-35/month) or migrate to Hatchbox + a Hetzner CCX13 or equivalent Regular Performance instance (4 vCPU, around €16.79/month, ~$28-30 all-in with Hatchbox's $10/month). Add Postmark at $15/month, Plausible at $9/month, Sentry stays free or paid at $26/month. Total: $60-90/month before Stripe. On €10,000 of monthly revenue, Stripe takes roughly €290. Real all-in cost including Stripe: about €350/month on €10,000 in. That ratio (~3.5% to infrastructure plus tooling) is the steady state for a small Rails SaaS, and it does not get materially worse until well past customer 1,000.
NOTE
If your numbers are wildly different from this, two things explain almost every case. Either you are on Heroku at $35/month entry, or you bought into a managed Postgres tier you do not yet need. Both are correctable in an evening. Most founders never do, because the bill does not feel painful enough to act on.
The three stages at a glance
| Stage | Monthly cost | Stack | When to switch |
|---|---|---|---|
| MVP (no paying customers) | $0 | Fly free shared VM + Tigris free + free Postgres tier | First Stripe payment |
| Validated (1-10 customers) | $15-20 | Fly always-on VM + small Managed Postgres + Tigris | Crossing 3k transactional emails/month or customer 10 |
| Growing (10-100 customers) | $60-90 before Stripe | Larger Fly setup or Hatchbox + Hetzner, Postmark, Plausible, paid Sentry | Customer 100 or sustained 1k+ DAU |
Stripe fees not included; they scale linearly with revenue.
When you need a managed database
Self-hosted Postgres on a single VPS is fine until two things happen at the same time: you have paying customers AND a database crash would cost you a meaningful amount of trust. Around customer 25 for most apps.
When that lines up, three credible upgrade paths:
Supabase at $25/month for the Pro plan gets you point-in-time recovery, automated backups, a UI, and an API you may or may not use. Most teams using Supabase use it for the auth layer plus the Postgres together; if you only need the database it is fine but slightly overkill.
Neon at $19/month for Launch gives you serverless Postgres with branching, which is genuinely useful when an AI agent is generating migrations. The branching feature pays for itself the first time you avoid a production accident.
Crunchy Bridge at $29/month for Hobby is the boring sensible choice. Postgres specialists running Postgres clusters. Less marketing, more reliability.
For most founders building one Rails app, Fly's Managed Postgres is the default. It is on the same host as the rest of your stack, billing is one bill, and it scales without you migrating data. The dedicated managed providers above are where you go when Postgres is the most important thing in your business.
What this means for your first eighteen months
Run on Fly's free shared VM tier until the first paying customer. Switch to a $5-10 always-on Fly VM at customer 1, not before. Add Postmark somewhere between customer 30 and 80. Stop optimising costs around customer 50 and use that hour on customer acquisition instead.
Reframe what the math actually says. Across 50 paying customers at €100 each, you are running a €5,000/month business on €30/month in infrastructure plus tooling. The cost lever is approximately irrelevant compared to the customer acquisition lever. Founders coding with AI tend to spend more time tuning VM sizes than picking up the phone. That ratio is upside down.
If you want a second pair of eyes on the deployment your AI agent shipped, the audits I run cover exactly this. Architecture, cost, the AI patterns that quietly burn money. Two ways to start, both free.