The real monthly cost of Clerk plus Stripe plus Lago plus Knock
Four best-of-breed vendors, added up with the assumptions shown. The subscriptions are not the expensive part.
In short
At 20,000 users the published subscriptions for auth and notifications come to roughly $375 a month before Stripe fees, and metering is unpriced because Lago publishes no cloud rate. The larger cost is the integration you own between four systems, which no pricing page shows and which does not go away.
Every "build vs buy" post compares subscription prices and stops there. The subscriptions are the part you can see. They are rarely the part that makes the decision expensive.
Here is the arithmetic anyway, with every assumption stated so you can argue with it.
The assumptions
Change any of these and the total moves. That is why they are listed.
- A B2B SaaS with 20,000 monthly active users
- Selling a metered product, so usage has to be counted and billed
- Transactional notifications: receipts, alerts, quota warnings
- US-based, standard card payments
- Prices verified 14 August 2026 and quoted from each vendor's own page
The subscriptions
| Vendor | Job | Monthly at 20,000 users |
|---|---|---|
| Clerk | Auth | $25 Pro plus $100 B2B add-on, so $125 |
| Stripe | Payments | Percentage of revenue, see below |
| Lago | Metering | Not published, see below |
| Knock | Notifications | $250 Starter, 50,000 messages included |
Clerk is the pleasant surprise. The Pro plan is $25 a month with 50,000 monthly retained users included, and $0.02 for each one beyond that. At 20,000 users you are inside the included allowance. The costs that bite are the add-ons: each enterprise SSO connection beyond the first is $75 a month, and the B2B organizations add-on is $100 a month. A B2B product selling to teams probably needs the second one, which takes the auth line from $25 to $125.
Knock is the largest published line at $250 a month for Starter, including 50,000 messages, then $0.005 per message. A metered product that emails a quota warning at 80 percent, a receipt monthly and an alert on failure will generate more messages than user count suggests.
Stripe is a percentage rather than a subscription. It scales with revenue, not with users, which makes it the one line you should be happy to see grow.
Lago publishes no cloud pricing. The self-hosted edition is free and open source, so the real cost there is infrastructure and the engineer who maintains it. Cloud pricing requires a sales conversation. I am not going to invent a figure for a post whose entire purpose is arithmetic you can check. If metering depth specifically is what's pulling you toward Lago rather than the rest of this stack, how it stacks up against bundling metering into BuildBase is the narrower version of this same arithmetic.
So: roughly $375 a month in visible subscriptions at this shape, or $275 if you skip the B2B add-on, plus Stripe's percentage, plus whatever Lago costs you.
The line nobody puts on a pricing page
Four vendors means three integrations you own forever.
Clerk knows who the user is. Lago knows what they used. Stripe knows what they paid. Knock knows what they were told. Nothing in that list knows all four things, so you write the code that makes them agree, and you keep writing it every time one of them changes an API or a webhook payload.
Concretely, the agreements you maintain:
- A user in Clerk maps to a customer in Stripe maps to a subscriber in Lago
- Usage recorded in Lago has to reach Stripe before the invoice closes
- A quota warning needs usage from Lago, entitlement from Lago or Stripe, and identity from Clerk before Knock can send it
- Every one of those has a failure mode, and the failure mode is a wrong invoice
That is not hypothetical overhead. It is the code that produces the support ticket that starts "I was charged for".
Where the assembled stack wins
Honestly: in depth, and in exit.
Each of these products is better at its single job than a module in a bundle. Knock's notification engine does more than our email module. Lago's metering model is richer. If one of them stops fitting, you replace one thing rather than migrating a platform.
If your product's difficulty is concentrated in exactly one of those areas, buy the best one for that area and assemble around it. That is a good decision and this post is not arguing against it.
Where the bundle wins
When no single area is your hard problem, and you need all four to work together. Then the integration is the work, and it is work that produces no product.
Our numbers are at /pricing. The comparison against a vendor that takes the assembled-stack position is in Kinde vs BuildBase, the entitlements-first position in Stigg vs BuildBase, and the identity-first position in Auth0 vs BuildBase, and the auth-with-billing-attached position - Clerk is the first line in the table above - in Clerk vs BuildBase. There is also a version of this argument one layer lower, starting from a raw database instead of a vendor stack, in Supabase vs BuildBase, and the mobile-and-realtime-first version of that same primitives argument in Firebase vs BuildBase. There is also a no-code, page-builder-first version of the same choice, for a stack built on Webflow or Squarespace instead of a codebase, in Outseta vs BuildBase.
If your plan was to skip the vendors entirely and buy a boilerplate, the same four accounts show up there too - what a one-time boilerplate leaves you operating is where that version of the arithmetic goes.
Re-check these numbers
Every figure above has a date on it because every figure above will move. Clerk, Knock and Stripe all changed pricing in the last two years. If you are making a decision on this post more than a month after that date, open the four pricing pages yourself. That is the honest instruction, and it applies to our page too.