Why HubSpot, Stripe and QuickBooks Give You Three Customer Counts

HubSpot, Stripe and QuickBooks each count customers differently. Why the numbers disagree, how that breaks churn and CAC, and how a customer crosswalk fixes it.

The short answerHubSpot counts companies with a closed-won deal, Stripe counts billing accounts and QuickBooks counts whoever got an invoice. None of them is wrong, and none of them is your customer count. The fix is a crosswalk: one ID per real customer, mapped to every system and checked every month.

Ask a SaaS company how many customers it has and you will often get three answers. The sales team quotes HubSpot. The founder quotes the Stripe dashboard. The accountant quotes QuickBooks. All three are telling the truth.

Each system answers a different question

SystemWhat it countsWhere it drifts
HubSpot or SalesforceCompanies with a closed-won dealChurned customers left as customers; duplicate company records
StripeBilling accountsTwo subscriptions for one company; re-subscriptions after a failed card; test accounts
QuickBooks or XeroWhoever received an invoiceOne-off services invoices; subsidiaries billed under a parent

None of these systems was built to answer “how many customers do we have?” Each was built to do its own job, and each does that job well.

Why it matters more than it seems

Customer count is the denominator under half your metrics. When it moves depending on who pulled the report, so does everything built on it:

  • Logo churn looks better or worse depending on which list you start from.
  • Net revenue retention double-counts expansion when one customer has two billing accounts.
  • CAC per customer shrinks when duplicates inflate the count of new customers.
  • Customer concentration, which every buyer checks, understates your largest accounts when they are split across records.

A worked example

Demo Co, our fictional $3M ARR SaaS company, shows 231 customers in HubSpot, 247 in Stripe and 219 in QuickBooks. Here is how each gets to the real number, 212.

Starting pointAdjustmentCount
StripeBilling accounts247
Second subscriptions for an existing customer−19
Subscriptions re-created after a failed payment−14
Test and internal accounts−2
Real customers212
HubSpotClosed-won companies231
Churned, never updated in the CRM−12
Duplicate company records−7
Real customers212
QuickBooksNames invoiced this year219
One-off services invoices, no subscription−9
Subsidiaries billed under a parent+2
Real customers212

The fix: a customer crosswalk

  1. Pick the master ID. Usually the CRM company ID, because that is where the relationship lives.
  2. Map every billing and accounting record to it. Exact matches first, then fuzzy name matches reviewed by a person.
  3. Write the rules down. When does a parent and its subsidiary count as one customer? Is a re-subscription within 30 days a continuation? Do services-only customers count?
  4. Check it every month. New records that don't map go on an exceptions list, and someone clears that list before the numbers go out.

Once the crosswalk exists, churn, NRR and CAC stop changing depending on who pulled the report. The first build takes some effort. Keeping it current takes minutes a month, and most of that can be automated.

What to do this week

  • Pull customer counts from all three systems for the same date.
  • If they differ by more than a few percent, export the lists and match them on name and email domain.
  • Sort the unmatched records into the categories above. Most companies find the same five or six causes.

If your board deck and your Stripe dashboard disagree, this is usually why.

Common questions

Why does Stripe show more customers than HubSpot?

Stripe creates a customer per billing account, so one company with two subscriptions, or one that re-subscribed after a failed card, can appear more than once. HubSpot usually has one company record per organization.

What is a customer crosswalk?

A mapping table that assigns one ID to each real customer and links it to that customer’s records in the CRM, billing system and accounting system, with written rules for edge cases.

Ryan Erwin
Ryan ErwinFounder & Fractional CFO at Prinsee. Ten years in finance and analytics, from Big4 Advisory to SaaS reporting for boards and buyers. More about Ryan.

Your next board meeting is coming either way.

Thirty minutes. Bring your last board deck or your messiest spreadsheet. You’ll leave with three things to fix, whether we work together or not.