CAC calculator
Spending 50,000 on sales and marketing to win 200 new customers means a customer acquisition cost of 250 each. Enter your spend and new customers for the same period to get the figure you compare against lifetime value. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Spend
- 50,000
- Customers acquired
- 200
- Cac
- 250
- Cost per customer
- 250
Customer acquisition cost, almost always abbreviated CAC in SaaS dashboards, fundraising decks, and weekly growth reviews, is the money spent to win one new customer. You add the sales and marketing outlays for a period—paid ads, agency fees, sales salaries, commissions, events, tools, and related spend—then divide by how many customers you actually acquired in that same window. The quotient is cost per customer. Founders compare it to lifetime value when they ask whether a channel is viable. This CAC calculator takes total sales and marketing spend and the number of customers acquired, returns cost per customer, and rejects a zero customer count so the ratio is always defined.
What CAC measures and why it is a cost per customer
Customer acquisition cost, almost always abbreviated CAC in SaaS metrics packs, investor decks, and weekly growth reviews, is total sales and marketing spend divided by the number of customers acquired in the same period. That quotient is a cost per customer: how much you spent, on average, to win one new paying relationship.
Sales and marketing spend is the outlay that exists to create demand and close it—paid search and social, display, affiliates, events, outbound tools, agency retainers, sales salaries and commissions, onboarding gifts that sit in the acquisition budget, and related campaign costs. It is not cost of goods sold, not support after the sale, and not the full operating budget. Lifetime value is a different identity: LTV asks what a customer is worth after they buy, while CAC asks what it cost to obtain them.
A company that spent fifty thousand on sales and marketing while acquiring two hundred customers has a CAC of two hundred fifty per customer, because fifty thousand divided by two hundred is two hundred fifty. That two hundred fifty is the number you compare to LTV, contribution margin, and payback months when you decide whether a channel stays on. When spend is zero at a strictly positive customer count, CAC is zero, which is allowed and simply means those customers arrived without paid acquisition.
The formula is one division so finance, product, and growth teams share a single reproducible definition without spreadsheet rounding drift on intermediate cells. Keep the two inputs in the same period and the same currency; mixing a quarterly ad budget with a monthly new-customer count is how a cost-per-customer figure quietly lies.
Where a CAC calculator earns its keep
People who type cac into a search box already know the acronym and want the cost-per-customer figure, not a lecture that starts from first principles of the marketing funnel. A publisher ranking for that short query is serving founders who have an ad-plus-sales total and a new-customer count, operators who must fill a unit-economics table before a board meeting, and engineers who need a deterministic oracle that rejects a zero customer count instead of silently producing infinity.
Early-stage teams building a weekly metrics notebook want the same spend-over-customers figure analysts write on slides, without hand errors when currency decimals change. Failed validation does not consume balance. Pair this capability with a separate lifetime-value or payback tool when you need LTV or months to recover CAC; keep this surface focused on the acquisition unit cost that people mean when they search cac.
What you can do with it
Channel and campaign cost-per-customer checks
Enter total sales and marketing spend for a campaign or period and the customers acquired to publish CAC as cost per customer without rebuilding the ratio in a spreadsheet.
FAQ
How do I calculate CAC?
CAC equals total sales and marketing spend divided by the number of customers acquired. Example: 50000 / 200 = 250 cost per customer.
What happens if customers acquired is zero?
Customer acquisition cost divides by customers acquired, so a zero denominator is rejected and is not billed.
Does this include LTV or compute LTV:CAC?
No. CAC uses only sales and marketing spend and customers acquired. Lifetime value and the LTV to CAC ratio are separate identities you compute with your own revenue data.
Which costs should I include in CAC?
Everything spent to create demand and close it: paid search and social, display, affiliates, events, outbound tools, agency retainers, and sales salaries and commissions. Leave out the cost of goods sold, support after the sale and the rest of the operating budget.
Why must spend and new customers cover the same period?
Because mixing windows distorts the result. A quarterly ad budget divided by one month of new customers makes each customer look far more expensive than it really was. Use the same period and the same currency for both numbers.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/fin/cac \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"spend":50000,"customers_acquired":200}'const res = await fetch("https://api.kit.forhosting.com/fin/cac", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"spend": 50000,
"customers_acquired": 200
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/cac",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"spend": 50000,
"customers_acquired": 200
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/cac", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"spend":50000,"customers_acquired":200}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"spend":50000,"customers_acquired":200}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/cac", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"spend": 50000,
"customers_acquired": 200
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.cac",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Successful calls are billed at $0.002; invalid input is not charged.
What CAC measures and why it is a cost per customer
When customers acquired is zero, CAC is not defined: there is no customer to attach the spend to, and this calculator rejects the request instead of returning infinity or a nonsense ratio.
Input contract, response shape, and validation
Example: spend fifty thousand and customers acquired two hundred yield CAC two hundred fifty and cost per customer two hundred fifty. Prefer bare numbers over formatted strings; currency marks, thousands separators, and trailing unit labels are not parsed. Pair the result with your own LTV comparison if you need the LTV to CAC ratio. POST a JSON body with two required finite numbers in the same currency and the same acquisition window. spend is the sum of sales and marketing costs for the campaign, channel, or period you are studying; it must be greater than or equal to zero. Aliases total_spend, marketing_spend, sales_and_marketing_spend, and cost are accepted so a ledger export does not need a rename step. customers_acquired is the count of new customers won in that same window and must be strictly greater than zero, because CAC divides by that count; aliases customers, acquired, and new_customers are accepted. Each field may arrive as a JSON number or as a numeric string that matches a strict finite decimal pattern. Missing fields, empty strings, non-finite values, a negative spend, or a customer count of zero or below fail with invalid_input naming the field and are not billed. On success the body echoes rounded spend and customers_acquired, returns cac as their quotient, repeats that same figure as cost_per_customer so a dashboard can bind either key, and includes a formula string set to CAC = spend / customers_acquired that you can print next to the numbers. This endpoint does not take revenue, lifetime value, churn, or a payback target; it only returns the cost per customer. Pricing for a successful item is a flat $0.002.
Where a CAC calculator earns its keep
Classroom and certification courses that teach SaaS unit economics need an endpoint that returns cost per customer and nothing else, so a grader can compare LTV to CAC in a later step without this tool pretending to take lifetime value as an input. Keep requests small, pin the rounded cac and cost_per_customer in tests, and you get reproducible customer acquisition cost for homework, exam generators, and lightweight growth notebooks without standing up a full attribution system.
Integration use cases
Homework and unit-economics oracles
Students compute CAC = spend / customers acquired by hand and compare against a deterministic result that rejects a zero customer count as invalid_input.
LTV comparison prep without taking lifetime value
Compute cost per customer first, then compare LTV to CAC in your own notebook; this endpoint returns customer acquisition cost only.
Technical questions
Is CAC the same as cost per customer?
Yes: this calculator returns cac and cost_per_customer as the same quotient spend / customers_acquired. It does not include cost of goods or lifetime value.
What does the CAC calculator cost?
The browser tool is free. API requests use prepaid balance at $0.002 per successful call; invalid input is not billed.