Mastering SaaS Pricing: Why You're Probably Undercharging
Setting your price too low is the fastest way to kill your SaaS. Learn how to transition from cost-plus pricing to value-based pricing and instantly increase your ARR.

Most founders agonize over their tech stack, their landing page copy, their launch strategy. Then they slap a $5/month price tag on their product and wonder why they can't sustain the business.
Pricing is the single highest-leverage decision you'll make. Get it wrong and nothing else matters, not your features, not your marketing, not your code quality. Get it right and you buy yourself runway, focus, and the ability to actually serve your customers well.
I've thought about this a lot while building MoveFast, and I want to break down the pricing strategies that actually work, using MoveFast's own pricing as a real-world case study.
The Problem with Cheap SaaS
When you sell to businesses, price is a proxy for trust. If a company has a burning $10,000 problem, they won't trust a $5/month tool to solve it. Low prices signal that your product is a side project that might disappear next month.
But the damage goes deeper than perception. A low price point systematically destroys your unit economics:
| Metric | At $5/mo | At $99/mo |
|---|---|---|
| Annual revenue per customer | $60 | $1,188 |
| Customers needed for $100K ARR | 1,667 | 85 |
| Customer acquisition budget | ~$0 | ~$200 |
| Support capacity | Minimal | Dedicated |
| Sustainable growth | Unlikely | Very possible |
At $5/month, you can't afford paid ads, quality support, or sales reps. You're forcing yourself to rely entirely on viral, organic growth, which is incredibly rare for B2B tools.
Cost-Plus vs. Value-Based Pricing
There are two fundamental approaches to pricing, and most founders default to the wrong one.
Cost-plus pricing is when you calculate your infrastructure costs, add a small margin, and charge that amount. "My servers cost $2/user/month, so I'll charge $5." This is terrible for software because the marginal cost of serving a new user is near zero. You're leaving enormous value on the table.
Value-based pricing is when you charge based on the value your customer extracts from your product. This requires understanding your customer's world: what are they spending time and money on today that your tool eliminates?
Here's a concrete example:
If your tool saves a marketing agency 10 hours a week, and they bill at $100/hour, you're saving them $4,000/month. Charging $199/month for that isn't expensive. It's a 20x return on investment.
The key insight: your price should be anchored to customer value, not to your costs. When there's a massive gap between value delivered and price charged, customers are happy, retention is high, and your business is sustainable.
Case Study: How MoveFast Prices Itself
Let me pull back the curtain on how I priced MoveFast, a production-ready Next.js SaaS boilerplate, because it illustrates several pricing principles in action.
The price: $90 one-time payment. Lifetime access. All 18 stack variants included.
Let's unpack the psychology behind each decision.
One-Time vs. Subscription
For a boilerplate (something you buy once, clone, and build on top of) a one-time payment makes more sense than a subscription. The value is delivered upfront: you get the codebase, you ship your SaaS, you move on. Forcing a subscription on a product like this would feel misaligned with how customers actually use it.
But here's the thing: when you're building your own SaaS product on top of MoveFast, subscriptions might be exactly right for you. That's why MoveFast ships with built-in support for both one-time payments and subscriptions via PAYMENT_MODEL in your pricing config. Different products demand different pricing models, and your boilerplate should support whatever your business needs.
Value-Based Justification
MoveFast saves you roughly $200 in LLM costs you'd otherwise spend prompting your way through boilerplate setup, plus approximately 40 hours of development time. If you value your time at even $50/hour, that's $2,000 worth of saved effort.
$90 for $2,000+ in value? That's a 22x return. The price isn't cheap because the product is unserious. It's cheap because the value gap is intentionally massive, which drives word-of-mouth and high conversion rates.
Everything Included
With MoveFast, you don't pick a tier. You get everything in one purchase:
- All 18 stack variants (MongoDB/Supabase, Resend/Postmark/Nodemailer, Stripe/Polar/Dodo)
- Next.js 16 with React 19, TypeScript, Tailwind CSS 4, shadcn/ui
- Auth.js with magic links, Google OAuth, RBAC, impersonation
- Full admin dashboard with user management, analytics, waitlist, invites
- 7 React Email templates with local preview
- SEO, sitemap, robots.txt, blog system, docs system
- Lifetime updates and support
One price. No upsells. No feature gating.
Making Pricing Experimentation Easy
One of the biggest mistakes founders make is treating pricing as a one-time decision. It's not. Pricing is a continuous experiment.
This is exactly why MoveFast ships with a flexible pricing configuration in src/config/pricing.config.ts. You can:
- Switch between
PaymentModel.ONE_TIMEandPaymentModel.SUBSCRIPTIONwith one line - Define multiple pricing tiers with features, badges, and highlight states
- Set any currency (code and symbol separately)
- Add monthly/yearly billing toggles for subscription plans
The payment infrastructure (Stripe, Polar, or Dodo, depending on your variant) handles checkout, webhooks, subscription lifecycle, and billing portals. That means you can:
- Launch with a one-time lifetime deal (like MoveFast does)
- Switch to monthly subscriptions once you have recurring value to deliver
- Test annual vs. monthly pricing
- Add usage-based billing as you scale
- Run pricing experiments without rewriting your payment infrastructure
// One line changes your entire payment model
export const PAYMENT_MODEL: PaymentModel = PaymentModel.ONE_TIME;
// or
export const PAYMENT_MODEL: PaymentModel = PaymentModel.SUBSCRIPTION;The payment integration is not just a tutorial in a README. It's production-ready code with webhook verification, payment history tracking, normalized events across all three providers, and error handling already wired up.
How to Structure Your Pricing Tiers
If you're building a SaaS with recurring revenue, a three-tier structure is a proven starting point:
1. The Starter Tier (The Anchor)
Price: $29-$49/month
This tier exists to capture early adopters and create a psychological anchor that makes your Pro tier look like the obvious upgrade. Include just enough features to be useful, but leave out what growing teams need: team seats, advanced analytics, priority support.
2. The Pro Tier (The Sweet Spot)
Price: $79-$149/month
This is your core revenue driver. It should include everything a serious team needs: multiple seats, priority support, advanced analytics, API access, and custom branding.
Pro tip: Design your pricing page so the Pro tier is visually highlighted as the "recommended" option. MoveFast supports this with the
highlighted: trueandbadge: "Most Popular"fields in the pricing config. Studies show this increases Pro tier selection by 20-30%.
3. The Enterprise Tier (The Cash Cow)
Price: Custom pricing (or $499+/month)
For large organizations that need SSO, custom SLAs, dedicated account management, and compliance features. Don't show a price. Use a "Contact Sales" button. This signals exclusivity and lets you price based on each customer's specific needs.
MoveFast's PRICING_PLANS array supports as many tiers as you want, each with its own product IDs, feature lists, CTAs, and visual styling:
export const PRICING_PLANS: PricingPlan[] = [
{
name: "Starter",
productIds: { monthly: "prod_starter_monthly", yearly: "prod_starter_yearly" },
price: { monthly: 29, yearly: 23 },
features: [
{ name: "Up to 5 team members", included: true },
{ name: "Advanced analytics", included: false },
],
cta: { text: "Get Started", variant: "outline" },
},
{
name: "Pro",
productIds: { monthly: "prod_pro_monthly", yearly: "prod_pro_yearly" },
price: { monthly: 79, yearly: 63 },
highlighted: true,
badge: "Most Popular",
features: [
{ name: "Unlimited team members", included: true },
{ name: "Advanced analytics", included: true },
],
cta: { text: "Start Free Trial", variant: "default" },
},
];The Quarterly Pricing Experiment
Here's a simple framework you can run every quarter:
Step 1: Double your price. Yes, literally. Deploy the new pricing page and run it for 2 weeks.
Step 2: Measure three metrics:
- Conversion rate (visitors to signups)
- Revenue per visitor
- Customer quality (engagement, retention, support load)
Step 3: Analyze. In most cases, you'll find that conversion drops slightly (10-20%), but revenue per visitor jumps significantly (60-80%). Customer quality almost always improves: fewer tire-kickers, more serious users.
Step 4: Adjust. Find the sweet spot where revenue per visitor is maximized while maintaining a healthy conversion rate.
With MoveFast's payment infrastructure already wired up, running these experiments is simple. Update your pricing config, redeploy, and start collecting data. No payment infrastructure rewrites. No webhook debugging. Just ship and learn.
The Takeaway
Your price is a signal. It tells the market how seriously you take your product, how much value you believe it delivers, and what kind of customer you're building for.
Don't set it based on server costs. Don't set it based on competitors. Set it based on the value you create, and make sure there's a massive gap between value delivered and price charged.
That gap is where happy customers, low churn, and sustainable growth live. And if you want to start testing your pricing strategy today, MoveFast gives you the payment infrastructure to do it (Stripe, Polar, or Dodo Payments, one-time or subscription) right out of the box for $90.
