How to Price Your SaaS: A Beginner's Guide to Charging for Your App
Pricing is the decision first-time founders avoid longest. How to pick a pricing model (flat, tiered, per-seat, usage), how to set a first number, why free plans are expensive, how AI costs change the maths, and how to raise prices later.
You've built an app people seem to like. Now you have to put a number on it, and every number feels wrong. Too high and nobody will pay; too low and you're running a charity.
Here's a practical way to think about it. None of this is financial advice — it's how small software businesses commonly approach the decision.
Price on value, not on cost
Your costs set the floor — you can't charge less than it costs to serve a customer. But customers don't care about your server bill. They care about what the app does for them.
Ask: what does this save or earn the customer? An invoicing tool that saves a freelancer two hours a month is worth more than the $3 of hosting it uses. A scheduling tool that prevents one missed appointment a month is worth the cost of that appointment.
Pick a model
| Model | How it works | Good when |
|---|---|---|
| Flat | One price, everything included | Simple product, one kind of customer |
| Tiered | Basic / Pro / Business | Customers differ in how much they need |
| Per-seat | Price × number of users | Value grows with team size |
| Usage-based | Pay per action, credit or GB | Costs scale with use (AI, storage, sending) |
| Hybrid | Base fee + usage above an allowance | AI features with a predictable core |
For a first product, tiered with 2–3 tiers or flat is the easiest to explain and to build in Stripe.
Choosing the first number
- Find the alternatives. What do people pay today — competitors, spreadsheets plus their time, a freelancer? That's your anchor.
- Pick a price that feels slightly uncomfortable. First-time founders almost always underprice.
- Make the middle tier the obvious choice. The cheapest tier is for trying; the middle one is where most customers should land.
- Offer annual billing at a discount (often around two months free). It improves cash flow and reduces churn.
The AI cost trap
If your app calls an AI model, each user action has a real cost. A flat $10/month plan with unlimited AI chats can lose money on your heaviest users.
Protect yourself:
- Know your cost per action. (Claude API pricing explained)
- Include an allowance in each tier and charge for (or cap) usage beyond it.
- Rate-limit and authenticate every AI endpoint. (Stop bots running up your AI bill)
Free plans and free trials
A free trial (14 days, full features) lets people experience the value, then decide. A free plan (forever, limited) brings more sign-ups but many never pay, and they still cost you support and hosting.
For a small team, a trial is usually the safer default. A free plan makes sense when free users bring in paying ones — for example, when they invite colleagues.
Don't forget taxes and fees
Payment processors take a cut per transaction, and selling digital products internationally comes with sales tax/VAT obligations. A merchant of record like Paddle or Lemon Squeezy handles tax for a higher fee; Stripe is cheaper but leaves more to you. (Stripe vs Paddle vs Lemon Squeezy)
Raising prices later
You can and should. Common approach: raise prices for new customers, and either keep existing customers on their old price ("grandfathering") or give them generous notice. Price increases are normal; surprises aren't.
The summary
- Costs set the floor; value sets the price.
- Start simple: flat or 2–3 tiers, with annual billing.
- Price higher than feels comfortable.
- Cap or meter AI usage so heavy users don't cost you money.
- Plan for processor fees and sales tax.
EasySpawn prices the same way we recommend: flat monthly pricing by server size, no per-request surprises. See pricing or join the waitlist.
Related: How Much Does It Cost to Run an App? · Stripe Subscriptions Explained · What Is an MVP? · Stripe Payment Links vs Checkout
Keep reading
Stripe Payment Links vs Checkout vs Elements: Which Do You Need?
Stripe offers three ways to take payments, from zero code to fully custom. Payment Links need no code, Checkout is a hosted page you create from your server, and Elements embeds payment fields in your own UI. What each can do, and how to pick.
How to Change the Model in Claude Code (and Which One to Pick)
Switch models in Claude Code with /model, the --model flag, an environment variable or settings.json. What the aliases mean — opus, sonnet, haiku, fable, opusplan, [1m] — which is the default, and how to choose for cost and quality.