Skip to content
MyStackPlan

How we verify prices

Where every price on MyStackPlan comes from, how often it is checked, how estimates are worked out, and what they leave out.

Last updated

Every number has a source

Each provider has one data file. Every plan in it records the pricing page its numbers were read from and the date someone checked that page. Provider pages show both, so you can open the source and check it yourself in one click.

A provider only appears on the site once all of its plans have been checked. Until then it stays a draft and is left out of the builder, the provider pages and the sitemap. We would rather list fewer services than show a number we have not confirmed.

How often

We aim to re-check every provider at least every 90 days, and sooner when a provider announces a change. The data files are validated every time the site is built, so a malformed price fails the build rather than reaching you.

How an estimate is worked out

The builder turns a number of monthly active users into usage, then prices each service you picked:

  1. Usage. You choose how many people will use your app: Just me, Launching, Growing or Popular, which stand for 10, 100, 1,000 and 10,000 monthly active users. Under Advanced you can pick an exact number from 10 to 100,000. Page views, bandwidth, requests, emails, stored data, AI tokens and payment volume are then estimated with simple per-user averages. Every average is listed under Advanced, in "How usage is estimated", and you can change it.
  2. Plan. Unless you choose a plan, we pick the cheapest one that fits: it must allow commercial use if your project is commercial, and it must not stop or pause at your usage.
  3. Cost. The plan's base price, plus any usage above what the plan includes, at the provider's published rates. Per-seat plans are multiplied by your team size.

Database data transfer. Databases that meter the data they send to your app (Neon, PlanetScale, Convex, Firestore, Upstash) are priced from a separate estimate, 10 KB per page view, not from file downloads. You can change it under Advanced.

What changes as you grow. For each service we also find the number of users at which its plan changes: when a free tier ends, when a cheaper plan stops being cheapest, or when nothing we list fits any more. We price the service at about 50 sizes from 1 to 100,000 users, then narrow each change down to the exact number, and show the limit that causes it. These are estimates from the same averages, so treat "about 1,500 users" as a rough guide.

Daily limits are checked against a busy day, assumed to be twice an average day. Per-minute limits are checked against the month's requests spread evenly over every minute.

  • Servers you size yourself. For servers and app hosting where you choose the size, we price the cheapest plan with at least the server size you set, running all month. The default is 1 GB of memory. You can pick 0.5, 1, 2, 4 or 8 GB under Advanced in the builder. If no plan is big enough, we show the largest one with a warning.
  • Railway is an upper bound. Railway bills the memory and CPU your app actually uses. We assume one service using the full server size all month, with 0.5 vCPU per GB of memory, so its figure is the most an always-on app of that size would cost. A quieter app costs less.
  • Bandwidth shared across servers. We price one server. Vultr's 2,048 GB of free bandwidth is per account, not per server, so we count it all against that one server; with several servers they share it. DigitalOcean, Linode and Vultr also pool each server's allowance across your account.
  • Cloud Run CPU time. Google Cloud Run bills CPU per vCPU-second while a request is being handled, at about ten times the memory rate. We work it out from your function calls, their run time and the "Function CPU (vCPU)" setting under Advanced (1 by default), and assume each instance handles one request at a time. If your instances handle several requests at once, the real bill can be lower.
  • Free AI tiers. A free AI plan bills no tokens, but it stops at its request limits, so a busy app outgrows it. We model the limits only where the provider publishes them: OpenRouter's free models allow 50 requests a day and 20 a minute, and Groq's Free plan allows 30 a minute and 1,000 a day. Groq's token limits are not modelled, so long prompts can run out sooner. Gemini and Mistral do not publish their free-tier limits, so their free tiers are not offered as plans.

Tax

Prices are shown before tax by default. In the builder's Estimated cost panel, choose Add tax, then your country (and your province, for Canada). The totals update to include its sales tax, GST or VAT.

  • One rule. The region's rate is applied to the whole monthly bill, and the yearly figure and the growth chart follow it. The per-service lines stay before tax.
  • Where the rates come from. Each rate is read from an official government or EU page. The page and the day we checked it are recorded in the data file, and rates are re-checked with the rest of the data.
  • Who pays it. The tax applies when the buyer is a consumer or is not registered for VAT or GST. A registered business can often reclaim it, or account for it under the reverse charge, so check with your accountant.
  • Vendors that include tax. Some vendors act as the merchant of record, such as Paddle and Lemon Squeezy, and already include tax in their price. Adding it again would count it twice.
  • United States. No US rate is offered. State sales tax varies and software is often untaxed.

Tax figures are estimates, not tax advice.

Trap badges

Badges like Non-commercial only, Pauses when idle, Hard cap, Daily cap and Priced per seat are worked out from the plan data itself, so a badge can never disagree with the numbers beside it. A few, such as Recent price change, Egress fees, SSO costs extra and Compliance costs extra, are written by hand from the provider's own pages, and each links to its source. Hover or tap a badge to read what it means for that plan.

What estimates leave out

  • Taxes and VAT unless you pick a region, and currency conversion fees.
  • Regional price differences: we use each provider's standard list price in US dollars.
  • Negotiated, startup-programme or committed-use discounts.
  • Support plans and add-ons.
  • Anything a provider bills that our data does not track.

An estimate is a planning aid, not a quote. Confirm on the provider's own page before you commit.

Rankings are not for sale

Some links may earn us a commission. That never affects which plan is picked, what it costs or how services are ordered. See the affiliate disclosure.

Spotted a wrong number?

Tell us and we will check it against the source and update the data. Every provider page also has a "Report a wrong price" link that fills in the provider for you.

How Help me choose picks

Help me choose follows these rules, read from the same file the code uses. Affiliate links never change them.

1. Which parts your stack needs

  • Domain: always.
  • Website hosting: always.
  • Database: when “Do people need to log in?” is “Yes”.
  • File storage: when “Will people upload files?” is “Yes”.
  • Email: when “Does it send emails?” is “Yes”, or when “Does it send emails?” is skipped and “Do people need to log in?” is “Yes”.
  • Payments: when “Will you take payments?” is “Yes, I'll take payments” and “What are you building?” is “A website or web app”, or when “Will you take payments?” is “Yes, I'll take payments” and “What are you building?” is skipped.
  • AI model: when “Does it use AI?” is “Yes”.
  • iPhone app: when “What are you building?” is “A phone app”, or when “What are you building?” is “Both”.
  • Android app: when “What are you building?” is “A phone app”, or when “What are you building?” is “Both”.
  • App builds: when “What are you building?” is “A phone app”, or when “What are you building?” is “Both”.
  • Push notifications: when “What are you building?” is “A phone app”, or when “What are you building?” is “Both”.
  • In-app subscriptions: when “What are you building?” is “A phone app” and “Will you take payments?” is “Yes, I'll take payments”, or when “What are you building?” is “Both” and “Will you take payments?” is “Yes, I'll take payments”.

If the database already includes logins or file storage, we don't add a separate service for them. The project counts as making money when “Will you take payments?” is “Yes, I'll take payments”, or when “Will you take payments?” is “No, but it's for a business”, so free plans that forbid business use are skipped.

2. Which services we consider

3. How one is chosen

  • Each candidate is priced by the same engine as the builder, for your first few users and for about 1,000.
  • Cheapest picks the lowest price that fits at the start, then the lowest at 1,000 users, then the order in the list.
  • Easiest picks the first service in its list with a free plan that fits, otherwise the first that fits.
  • If nothing fits, we pick the first candidate and the builder shows why.