Pricing a SaaS so infrastructure doesn’t eat the margin.
Cloud software companies average about 70% gross margin, with the middle half between 60% and 80%, according to Bessemer. Aim for 75% and work backwards: price × 25% is what hosting, payment fees and support can cost per customer. Then set each plan’s limits on the drivers that grow your bill, not on features.
Facts checked
What gross margin to aim for
Gross margin is revenue minus cost of goods sold, divided by revenue. For software, cost of goods sold usually means hosting, third-party services the product calls, payment processing and customer support. It leaves out sales, marketing and product development.
The best-known public benchmark comes from Bessemer Venture Partners, who publish figures from their portfolio. They are from 2021, before most products called a language model on every request; Bessemer’s 2025 report on AI companies shows how much lower margins go when they do.
| Benchmark | Figure | Source |
|---|---|---|
| Average, $1–10M ARR cloud companies † | 70% | Bessemer, Scaling to $100 Million (2021) |
| Middle 50% of cloud companies † | About 60% to 80% | Bessemer, Scaling to $100 Million (2021) |
| Top performers, $1–10M ARR † | 85% and up | Bessemer, Scaling to $100 Million (2021) |
| Fast-growing AI startups (“Supernovas”) † | About 25% on average | Bessemer, The State of AI 2025 |
| AI startups growing more steadily (“Shooting Stars”) † | About 60% | Bessemer, The State of AI 2025 |
† Competitor details come from each vendor’s own published pages on the dates shown; prices and plans change, so check the vendor before you decide. Average, $1–10M ARR cloud companies (2026-10-30) · Middle 50% of cloud companies (2026-10-30) · Top performers, $1–10M ARR (2026-10-30) · Fast-growing AI startups (“Supernovas”) (2026-10-30) · AI startups growing more steadily (“Shooting Stars”) (2026-10-30)
Turn the target into a hosting budget per plan
Pick a target margin, then work out how much each plan can spend on everything in cost of goods sold. At 75%, a $49 plan has $12.25 a month to cover hosting, payment fees and support for that customer.
- Payment fees are not small on small plans. Stripe charges 2.9% + 30¢ per domestic card payment in Canada. The fixed 30¢ is what hurts: on a $9 plan the fee is 56¢, 6.2% of the price.
- Support is the line founders forget. If you answer a ticket a month for each Team customer and it takes 15 minutes, that is a quarter-hour of your time inside every $49.
- Hosting is what’s left. Compare that ceiling with the measured cost per customer from hosting cost per customer. If the measured cost is above the ceiling for some customers, the plan’s limits are wrong, or its price is.
hosting ceiling = price × (1 − target margin) − payment fee − support allowance| Monthly price | Stripe fee (2.9% + 30¢) | Fee as % of price |
|---|---|---|
| $9 † | $0.56 | 6.2% |
| $19 † | $0.85 | 4.5% |
| $49 † | $1.72 | 3.5% |
| $99 † | $3.17 | 3.2% |
| $149 † | $4.62 | 3.1% |
† Competitor details come from each vendor’s own published pages on the dates shown; prices and plans change, so check the vendor before you decide. $9 (2026-10-30) · $19 (2026-10-30) · $49 (2026-10-30) · $99 (2026-10-30) · $149 (2026-10-30)
Put limits where the cost is
A plan limit should track something that costs you money. Seats rarely do: a second user on the same account adds little load. Storage, bandwidth, emails sent, AI calls, records processed and background-job minutes do. When you price by seat while your bill grows by gigabyte, the customer who stores the most pays the same as everyone else.
- Hard caps stop usage at a number. Easy to explain and safe for you, but a customer who hits one mid-month is stuck until they upgrade, so warn them at 80%.
- Included allowance plus overage. The plan includes, say, 20 GB of files and 10,000 emails; past that, a published price per unit. This keeps the flat price for most customers and makes the heavy ones pay their way.
- Fair use. A written policy instead of a number, with the right to talk to accounts that use far more than the rest. It works when heavy use is rare and you are willing to have the conversation. It doesn’t work as your only control on a line that grows with every customer.
- Price the overage above cost. Charging exactly what the provider charges you leaves no margin on the heaviest usage. Two to three times cost is common for small vendors and still reads as fair next to the plan price.
Flat or usage pricing for a small vendor
Usage pricing matches revenue to cost, which is why infrastructure companies use it. It also needs metering you can trust, invoices that change every month, and customers willing to budget for a number they can’t predict. Many small business buyers won’t, and explaining a disputed invoice costs you support time.
For most small SaaS products the workable middle is flat plans with included allowances on the two or three lines that grow, and per-unit pricing only where cost is large and linear: AI tokens, SMS, large file processing. If a single heavy customer can cost more than their plan, that line needs an allowance.
CAD or USD prices, briefly
If your vendors bill in US dollars and you price in Canadian dollars, the exchange rate moves your margin. At the Bank of Canada rate for 2026-10-29, 1.3985, a US$100 hosting bill is $139.85; a 5% fall in the loonie adds about $7 with no change in usage. Stripe adds 2% when it converts currency and 0.8% for international cards, so charging a Canadian customer in USD costs you too.
Price in the currency your customers budget in, and keep a few points of margin as a buffer for the rate. How the hosting platforms themselves price, including in CAD, is compared in usage-based vs flat PaaS pricing.
A worked example
The hosting costs come from the worked example in hosting cost per customer: $1.96 a month for a Solo account, $7.47 for Team and $55.21 for an Agency account. Prices are in CAD. Margins here are before support.
- Solo and Team are healthy even after an hour of support a month for every few accounts.
- Agency is the problem. At $149 it sits at the bottom of Bessemer’s middle range before a single support ticket. Three accounts out of 120 are taking a quarter of the app servers.
- Two fixes. Raise the price to $249, which brings it to about 75%. Or keep $149 and include an allowance on the driver that makes Agency expensive, here request time and stored data, with overage past it. The second keeps the entry price and charges the agency that actually runs fifty clients through the product.
- Then measure again next month. Limits change behaviour, and the heavy accounts are usually the ones that notice first.
| Plan | Price | Hosting | Stripe fee | Gross margin before support |
|---|---|---|---|---|
| Solo | $19 | $1.96 | $0.85 | 85.2% |
| Team | $49 | $7.47 | $1.72 | 81.2% |
| Agency | $149 | $55.21 | $4.62 | 59.8% |
| Agency, repriced | $249 | $55.21 | $7.52 | 74.8% |
Lowering the cost side
Pricing is half the margin; the hosting bill is the other half. A flat-priced platform takes the bandwidth line out of the sum: Canner Live is $9 a month in Canadian dollars with 1 TB of traffic included and no per-GB charge, and memory, storage and a dedicated database are fixed-price add-ons listed on the pricing page. It runs one process per project in Montréal, without failover, so it is a fit for the small products this page is about. More guides for small software companies are on the hub page.
Questions
What is a good gross margin for a SaaS company?
Bessemer’s benchmark for cloud companies is about 70% on average, with the middle half between roughly 60% and 80%, and top performers above 80%. Products that call AI models on most requests often run lower; Bessemer reported about 25% to 60% for AI startups in 2025.
What counts in cost of goods sold for a SaaS?
Usually hosting, third-party services the product uses (email, SMS, AI APIs), payment processing and customer support. Sales, marketing and development of new features are operating expenses, not cost of goods sold.
Should a small SaaS use usage-based pricing?
Rarely as the whole model. Flat plans with included allowances on the lines that grow, plus a published overage price, keep invoices predictable while making heavy customers pay their way. Use pure per-unit pricing only for large, linear costs such as AI tokens or SMS.
Related
- BlogIn Quebec Tech, Wealth Picks the Founders
- BlogCanadian Pre-Seed Funding: What Each Program Actually Gives You
- GuideSide project to production hosting
- GuideA stack you can maintain alone
- GuideA SaaS on a small monthly budget
- GuideWhen a dedicated server beats PaaS on cost
A hosting line that doesn’t move.
Live is $9 a month in Canadian dollars, with 1 TB of traffic included. Start free on Starter.