Who pays but uses little AI?
Find accounts with observed revenue and low attributable model cost without assuming that missing usage means zero.
Customer profitability
Revenue and AI cost only belong in the same row when they refer to the same customer account. Grow or Die makes that link explicit and keeps everything else in an unallocated bucket.
The short answer
Customer profitability analysis compares the revenue earned from each customer with the cost of serving that customer. For an AI SaaS, start by joining payment revenue and model usage to the same account ID, reporting window and currency. A team with several users can still be one paying account.
Observed contribution = customer revenue on the selected billing basis − attributable AI cost. This is not net profit. Support, hosting, acquisition, salaries and other expenses may be excluded. Fees, tax and refund coverage depend on the connected billing source; do not subtract an adjustment twice or assume an unavailable fee is zero.
A reproducible example
These four rows come from our executable account reconciliation example. They are synthetic fixtures, not customer results. In this example only, net receipts explicitly deduct tax, processor fees and customer refunds.
| Account | Currency | Net receipts | AI cost | Contribution |
|---|---|---|---|---|
| A | USD | 15 | 5 | 10 |
| A | EUR | 8 | 1 | 7 |
| B | USD | 10 | Unknown | Unknown |
| C | USD | Unknown | 4 | Unknown |
Account A has USD 10 of contribution, not USD 10 of net profit. Do not add its EUR 7 to that number without an explicit exchange-rate policy. B has a payment but incomplete AI cost; C has model cost but no revenue evidence. Neither is proven profitable or loss-making. A known zero payment is different from a missing payment ledger.
Use the SQLite fixture and expected output to reproduce the full six-row report. For your own data, first investigate unknown coverage, then review accounts with negative observed contribution. Use the contribution margin calculator to test pricing assumptions; an estimate is not a verified customer report.
A trustworthy join
Questions you can answer
Find accounts with observed revenue and low attributable model cost without assuming that missing usage means zero.
Compare model cost with revenue for accounts whose identity coverage is complete enough to calculate.
See unallocated revenue and AI cost separately, then fix the missing account or payment link.
Use the evidence to investigate pricing, usage limits, model choice, caching, retries, or a costly product feature.
No invented allocation
Dividing unlinked cost evenly across customers makes a complete table and a misleading decision. Grow or Die shows coverage beside the result so you can tell a calculated margin from an incomplete one.
Related reading
Join payer identity and model usage without spreading unknown cost across every account.
Usage needs observed revenue and a trustworthy identity link before you can calculate customer contribution.
Connect Stripe revenue through one stable internal account ID, not email joins.