Customer lifetime value for South African small businesses: a practical calculation
Hydra

Short answer: Customer lifetime value (CLV) estimates what one customer is worth across a relationship with your business. For a South African small merchant, start with a number you can actually check: 12-month contribution per new customer = revenue from a first-purchase group during each customer's first 12 months, minus the direct and order-level costs of those sales, divided by everyone who first bought in that group. Include people who never returned. Call it 12-month contribution, not a lifetime forecast. Use it to test whether repeat business leaves enough to justify acquisition and retention spending.
Definitions and linked product documentation checked on 22 October 2026. All rand figures below are worked examples, not industry benchmarks.
What is customer lifetime value—and which version should you use?
“CLV” is used for two different things. Revenue CLV describes sales attributed to a customer over a stated period or a predicted relationship. Contribution CLV removes the costs that rise with those sales, such as stock, ingredients, packaging and payment or delivery fees. Neither is the same as net profit after rent, permanent staff and other overhead.
Be explicit about the window too. “R600 CLV” tells a merchant little unless the figure says whether it covers six months, 12 months or an estimated lifetime, and whether it is revenue or contribution. A 12-month measure works well for a café or salon with frequent visits. A furniture shop may need a longer window or a different decision measure because happy customers do not necessarily buy furniture every year.
Google Analytics defines its LTV metric as revenue from recorded purchase events minus refunds. That is useful for the site or app activity it measures; it is not the shop's contribution after stock and order costs. Shopify's customer cohort report groups buyers by first order and can show later sales and repeat purchases. Check exactly what your own POS or ecommerce report calls “lifetime value” before comparing it with a spreadsheet calculation.
How do you calculate a 12-month value from real sales?
Pick a group of customers who made their first recorded completed purchase in one month or quarter. Follow every person for the same 12 months after their first purchase date. Then use these two formulas:
12-month revenue per acquired customer = net sales from the cohort in each person's first 12 months ÷ number of customers in the starting cohort.
12-month contribution per acquired customer = (those net sales − direct product or service costs − other variable order costs) ÷ number of customers in the starting cohort.
“Net sales” here means sales after discounts and refunds, measured on a consistent VAT basis. If you are VAT registered, do not treat VAT collected for SARS as your revenue; use comparable sales and cost figures. Our markup-versus-margin guide shows why mixing VAT-inclusive prices with VAT-exclusive costs distorts a margin.
Use a stable customer ID when one is available, not just a name typed differently on two receipts. Exclude cancelled transactions. Include fully refunded orders as zero net sales and account for any real unrecovered costs according to the question you are measuring. Keep the same rules across cohorts.
A worked example for a South African flower shop
Imagine a Durban florist with 100 identifiable first-time buyers in January 2025. The shop follows each person for 12 months after their own first purchase. By the time every window has finished, those 100 people made 180 completed orders in total, including first orders. This is a made-up teaching example.
| Measure for the cohort | Amount |
|---|---|
| Net sales after discounts and refunds | R36,000 |
| Flowers, wrapping and other direct product costs | R18,000 |
| Order-level delivery, packaging and payment costs not already included above | R3,600 |
| Contribution before fixed overhead and acquisition spend | R14,400 |
Revenue per acquired customer is R36,000 ÷ 100 = R360. Contribution per acquired customer is (R36,000 − R18,000 − R3,600) ÷ 100 = R144. The denominator is 100, not only the customers who came back. Otherwise the result would exaggerate the value of a typical person acquired that January.
Now suppose the florist can reliably attribute R5,000 of acquisition spend to bringing in those 100 new buyers. Acquisition cost per new buyer is R50. The illustrative 12-month contribution after that acquisition spend is R94 per buyer (R144 − R50), before rent and other fixed overhead. Do not call R94 net profit. And do not assign all marketing spend to this cohort if the spend also served existing customers or other months.
Why not just multiply average order value by years?
A common shortcut is average order value × purchases per year × expected years as a customer. It is a forecast, not an observed fact. It can help with rough planning if you have enough history to estimate buying frequency and the time customers stay active. It is fragile for a new shop, a seasonal retailer or a service where someone might return after a long gap.
For example, observing that a customer bought twice in six months does not prove that they will buy four times every year for three years. The shortcut also often produces a revenue figure while the marketing budget needs a contribution figure. If you use it, label every assumption and show a low, base and high case rather than one precise-looking number.
The cohort method avoids inventing a “customer lifespan,” but it has its own limits. A customer acquired late in the latest period has not had a full year to return. Mark that cohort incomplete and do not compare it directly with an older, fully observed cohort. Shopify's cohort report documentation describes grouping customers by their first order and comparing later intervals; your spreadsheet can follow the same principle.
What data does a merchant need?
Start with a transaction export containing a customer ID, order ID, completion date, net sales, direct cost, other variable order cost and refund status. Add first-purchase date for each customer. You can calculate a basic revenue measure without reliable cost data, but label it revenue until you can add the costs.
Check three common gaps before trusting the answer:
- Anonymous sales. If many cash or card purchases have no customer identifier, your cohort represents identifiable buyers, not every customer. Report the share of sales you can match to people.
- Split identities. The same person may appear under two phone numbers, or an online order and an in-store purchase may live in separate systems. Do not silently assume they are separate or perfectly matched.
- Old history. A “first purchase” may only mean first since a new POS was installed. Label it first recorded purchase unless the business has enough earlier data to verify newness.
Google's User lifetime exploration looks at measured site or app users and has its own identity and activity rules. Website sessions are not automatically customers, and a web revenue report can miss cash, in-store and phone sales. Use the system that records completed transactions for the merchant calculation.
How should you use the number?
Compare cohorts and decisions on the same basis. If the florist's 12-month contribution per new buyer moves from R144 to R170, inspect why: more second orders, larger baskets, fewer refunds, lower delivery cost or a change in customer mix. Our repeat-customer-rate guide shows how to measure the return behaviour separately. A higher repeat rate is useful, but a costly discount that drives those visits can still lower contribution.
Use a segment that changes an action. A neighbourhood florist might compare walk-ins with online delivery buyers. A gym might compare members who attended onboarding with those who did not. Keep the same observation window and cost definition for both groups. A small difference in a small cohort is a prompt to investigate, not proof that a campaign worked.
Before paying for a loyalty offer or new ads, ask: What extra contribution must this spend produce, by when, and how will we tell? If a proposed R20 reward is meant to bring a second order, test whether the additional order's contribution after the reward is positive, then compare similar customer groups over the same window. Customer lifetime value is most useful when it disciplines that decision, not when it is used as a large number in a pitch deck.
Photo: Amina Filkins on Pexels, used under the Pexels licence. The people pictured do not endorse Hydra or represent the worked example.