Short answer
Here's how to calculate CAC by channel. Add up each channel's full cost for a period, including ad spend, agency fees, tools and the share of salaries spent on it. Count new paying customers in Stripe whose first known source was that channel. Divide cost by customers. Report blended CAC and paid CAC side by side.
One founder wrote on Indie Hackers in April 2026: "Most founders I talk to know their ad spend but completely ignore their own hours when calculating CAC." A commenter replied: "Most founders don't count their own time because once they do, the math stops working."
That's half the problem. The other half is the customer count. Google Ads and Meta each report their own conversions, and both often claim the same buyer. This guide uses Stripe payments instead.
The customer acquisition cost formula#
CAC = sales and marketing costs in a period ÷ new paying customers in that period.
Andreessen Horowitz puts it plainly: CAC "should be the full cost of acquiring users, stated on a per user basis" (a16z, 16 Startup Metrics). They also name a common mistake: "failing to include all the costs incurred in user acquisition such as referral fees, credits, or discounts."
Two words in that formula matter most.
- Paying. Not sign-ups, not trials, not leads. A channel that brings 200 trials and no payments has an infinite CAC.
- New. Upgrades from existing customers don't count. They have their own cost, mostly customer success.
What I'd check first: is your CAC denominator coming from Stripe or from an ad platform? If it's from an ad platform, you're dividing by that platform's claimed conversions. That number is built to make the platform look good.
Blended vs paid CAC: why you need both#
Blended CAC divides all sales and marketing cost by all new customers, including those who found you through search, word of mouth or a podcast.
Paid CAC divides paid acquisition cost by only the customers who came from paid channels.
The a16z team warns against relying on blended alone: "While blended CAC isn't wrong, it doesn't inform how well your paid campaigns are working and whether they're profitable" (a16z). They add that "investors consider paid CAC to be more important than blended CAC in evaluating the viability of a business."
I'd report both every month, and I'd make decisions on paid CAC by channel. Blended CAC tells you whether the business works. Channel CAC tells you where to put the next dollar.
The opposite case: if paid channels bring under about 20% of your new customers, channel-level paid CAC will be noisy. A handful of customers swings it by hundreds of dollars. In that case, watch blended CAC monthly and look at channel CAC on a rolling quarter.
What goes into fully loaded CAC#
Ad spend is the easy part. The costs people forget are usually bigger.
Greg Head of Practical Founders lists the claim "We have zero CAC because we don't do paid ads" as a common founder mistake. Founder selling time, staff, commissions and rent all belong in it (Practical Founders).
A fully loaded CAC includes:
- Media spend. Google Ads, Meta, LinkedIn, sponsorships.
- Agency and freelancer fees, assigned to the channel they work on.
- Tools. Split shared tools by how the team uses them.
- People. Salaries split by time per channel, including the founder's selling time at a fair rate.
- Incentives and sales costs. Referral fees, credits, discounts, commissions.
A rough salary split by percentage of time is fine. Write it down once and keep it stable, so changes reflect real changes.
David Skok suggests counting only part of expensive team salaries in the very early days (For Entrepreneurs). I'd do that for a board deck, but keep the full figure for your own decisions.
How to calculate CAC by channel from Stripe, step by step#
Here's the method I'd use. A spreadsheet is enough; expect about two hours the first time.
- Pick the period. Use a calendar month or quarter. Quarterly is steadier for smaller companies.
- Pull new paying customers from Stripe. Export customers whose first successful payment fell in the period. Exclude upgrades, reactivations and test accounts.
- Attach a source to each customer. The cleanest way is to capture UTM parameters and click IDs at sign-up, then pass a reference into Stripe. Checkout Sessions accept a
client_reference_idof up to 200 characters (Stripe API). You can also store source fields as metadata, but metadata doesn't copy across to related objects, so set it where you'll read it (Stripe Docs). The setup is in our guide to SaaS marketing attribution. - Choose one rule and keep it. I'd use first touch for CAC, because CAC asks "what brought this customer to us?" Last non-direct click is fine too. Mixing them across months is not. The trade-offs are in last non-direct click vs first touch.
- Add a self-reported field. Ask "How did you hear about us?" at sign-up. It catches channels software can't see.
- Sum each channel's full cost for the same period, using the list above.
- Divide. Cost per channel ÷ new paying customers per channel.
Self-reported data can look very different from tracked data. Refine Labs, a B2B agency, analyzed 620 conversions in 2023. Software attribution credited web search with 78% of conversions. Customers named web search only 12% of the time (Refine Labs). That's one agency's client data, not a universal rule. But it shows why I'd collect both.

Organic, direct and "unknown" customers#
Some customers will have no tracked source. Don't hide them, and don't spread them across paid channels.
- Organic search. Give it a channel row. Its cost is content, SEO tools and the people who write. It has a CAC too.
- Direct. Usually a returning visitor, a typed URL or a stripped referrer. Check the self-reported answer before calling it direct.
- Unknown. Keep an "unknown" row. If it's over about 25% of customers, fix tracking before you trust any channel figure.
The trap is reallocating "unknown" customers to paid channels in proportion to their share. That makes paid CAC look cheaper than it is. I'd rather report a higher paid CAC that's true.
What I'd check first: compare the "direct" count with your brand search volume. A jump in both often means another channel (a podcast, a newsletter, a Reddit thread) is sending people who search your name later.
The time lag between spend and payment#
You spend today. The customer may pay next month or next quarter, especially with a trial.
If you divide January's spend by January's customers, you mismatch them. Skok makes the same point about sales efficiency. He uses the prior quarter's sales and marketing spend. His reason: "there is likely to be a delay between the spending of money and effort on sales and when the deal closes" (For Entrepreneurs). With a short sales cycle, same-period spend is fine.
My rule of thumb:
- Self-serve, no trial, pays within days: same month.
- 14-day trial: shift spend back by one month, or use a rolling three-month total for both cost and customers.
- Sales-led, 60+ day cycle: compare a quarter's customers with the prior quarter's spend.
Get this wrong and a channel you just scaled shows a CAC spike on paper. Teams then cut it just as it starts to pay. If you're judging a single campaign, see when to pause a Google Ads campaign for how to wait out conversion lag.
A worked example (illustrative numbers)#
These numbers are made up to show the method. They are not from a real company.
A SaaS company spends a quarter on three channels. Stripe shows 60 new paying customers. Each is tagged by first touch, with self-reported answers used to fill gaps.
| Channel | Media | Tools + agency | People (share) | Full cost | New paying customers | CAC |
|---|---|---|---|---|---|---|
| Google Ads | $18,000 | $3,000 | $6,000 | $27,000 | 18 | $1,500 |
| Meta Ads | $12,000 | $1,500 | $3,000 | $16,500 | 6 | $2,750 |
| Organic search + content | $0 | $1,200 | $9,000 | $10,200 | 20 | $510 |
| Direct / unknown | — | — | — | — | 16 | — |
| Total | $53,700 | 60 | $895 blended |
Paid CAC here is ($27,000 + $16,500) ÷ 24 = $1,813. Blended CAC is $895. The gap is why a blended figure alone can make paid look cheap.

What would I do with this table? Hold Meta at its current budget for one more quarter and fix the landing page. Then judge it on payback. CAC alone doesn't tell you if $2,750 is too much. That depends on how fast the customer earns it back; see CAC payback period benchmarks.
How to do this in Kratly#
- Connect your ad accounts, site and Stripe. Kratly matches new paying customers to the campaign, page or email that brought them.
- Add costs beyond media. Kratly starts from ad spend; add agency fees, tools and a share of salaries per channel to get the fully loaded figure.
- Review cost per paying customer by channel and campaign. Kratly shows blended and paid figures side by side and flags customers with no known source.
- Approve suggested budget changes. Kratly suggests moves between channels. You approve them, and every change is logged and reversible.
Go deeper: What is a good ROAS? Break-even ROAS for SaaS and ecommerce · LTV to CAC ratio: calculate it from real revenue, not estimates
Questions, answered
What is the formula for customer acquisition cost?
CAC equals total sales and marketing cost in a period divided by new paying customers in that period. Use the full cost: media, agency fees, tools, salaries and incentives such as referral fees or credits. Count only new customers who paid, from Stripe. Leave out sign-ups, trials, upgrades and reactivations.
What is the difference between blended and paid CAC?
Blended CAC divides all acquisition cost by all new customers, including organic and referral. Paid CAC divides paid-channel cost by customers from paid channels only. Blended CAC tells you whether the business works. Paid CAC tells you if your ad spend is profitable. Report both every month, side by side.
Which attribution model should I use for CAC by channel?
First touch is the best fit, because CAC asks what brought the customer in. Last non-direct click is also fine. Pick one and keep it, since mixing rules across months breaks the trend. Add a self-reported "How did you hear about us?" field as a cross-check. It catches channels software can't see.
Why does my ad platform show a lower CAC than my own calculation?
Because ad platforms count their own claimed conversions, often sign-ups or trials. Two platforms can also claim the same buyer. Your calculation divides by paying customers in Stripe and includes non-media costs such as agency fees, tools and salaries. Both push your figure higher, and closer to the truth.
Written by
Priyansh Kumar
Priyansh Kumar has spent more than a decade in growth, scaling brands from 1 to 10 and from 10 to 100. He now builds Kratly, an autonomous growth team that ties every campaign, page and email to the revenue it brings.
Sources
- Andreessen Horowitz: 16 Startup Metrics (Aug 2015)
- Practical Founders (Greg Head): 8 Common Mistakes Startup Founders Make About CAC (Feb 2022)
- For Entrepreneurs (David Skok): SaaS Metrics 2.0
- Stripe Docs: Create a Checkout Session (client_reference_id) · Metadata
- Refine Labs: The attribution mirage (Oct 2024, agency data)
- Indie Hackers: What's your actual cost per customer when you count your own time? (Apr 2026)
Was this article useful?
