{
  "slug": "recurring-vs-onetime-ltv",
  "title": "Recurring vs One-Time Customer LTV Calculator",
  "heading": "Recurring vs One-Time Customer LTV Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/recurring-vs-onetime-ltv",
  "summary": "Compare lifetime value of a recurring contract against a one-off job.",
  "description": "Home service owners chase one-time jobs because the cash lands immediately, but recurring customers usually win on total value once you account for retention and lower acquisition cost per visit. This calculator projects lifetime value for both models using visit frequency, average ticket, churn rate, and acquisition cost so you can see which one actually earns more per customer relationship.",
  "formula": "Recurring LTV = (avg ticket × visits per year × expected years) − acquisition cost, adjusted by annual churn. One-time LTV = avg ticket − acquisition cost + referral value.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=recurring-vs-onetime-ltv",
  "inputs": [
    {
      "id": "ticket",
      "label": "Average ticket (recurring visit)",
      "kind": "number",
      "hint": null,
      "default": 65,
      "unit": "$",
      "min": 5,
      "max": null
    },
    {
      "id": "visitsYear",
      "label": "Visits per year (recurring)",
      "kind": "number",
      "hint": null,
      "default": 26,
      "unit": null,
      "min": 1,
      "max": null
    },
    {
      "id": "churn",
      "label": "Annual churn rate",
      "kind": "number",
      "hint": null,
      "default": 25,
      "unit": "%",
      "min": 0,
      "max": 90
    },
    {
      "id": "acqCost",
      "label": "Customer acquisition cost",
      "kind": "number",
      "hint": null,
      "default": 90,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "oneTimeTicket",
      "label": "One-time job average ticket",
      "kind": "number",
      "hint": null,
      "default": 350,
      "unit": "$",
      "min": 10,
      "max": null
    },
    {
      "id": "referralRate",
      "label": "One-time job referral rate",
      "kind": "number",
      "hint": null,
      "default": 15,
      "unit": "%",
      "min": 0,
      "max": 100
    }
  ],
  "outputs": [
    {
      "id": "recurringLtv",
      "label": "Recurring customer LTV",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "oneTimeLtv",
      "label": "One-time customer LTV",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "expectedYears",
      "label": "Expected customer lifespan (yrs)",
      "format": "decimal",
      "hint": null,
      "primary": false
    },
    {
      "id": "annualRevenue",
      "label": "Annual recurring revenue per customer",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "difference",
      "label": "LTV advantage of recurring",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Average ticket (recurring visit): 65 $",
      "Visits per year (recurring): 26",
      "Annual churn rate: 25 %",
      "Customer acquisition cost: 90 $",
      "One-time job average ticket: 350 $",
      "One-time job referral rate: 15 %"
    ],
    "outputs": [
      "Recurring customer LTV: $6,670",
      "One-time customer LTV: $276",
      "Expected customer lifespan (yrs): 4",
      "Annual recurring revenue per customer: $1,690",
      "LTV advantage of recurring: $6,394"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter average ticket (recurring visit) ($).",
      "Enter visits per year (recurring).",
      "Enter annual churn rate (%).",
      "Enter customer acquisition cost ($).",
      "Enter one-time job average ticket ($).",
      "Enter one-time job referral rate (%).",
      "Read your recurring customer ltv on the right — it updates as you type.",
      "Hit Share to keep the scenario or send it to someone."
    ]
  },
  "scenarios": [
    {
      "name": "Conservative",
      "description": "Lower-end numbers — what if things land soft?",
      "values": {
        "ticket": 40,
        "visitsYear": 16,
        "churn": 15,
        "acqCost": 55,
        "oneTimeTicket": 210,
        "referralRate": 9
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "ticket": 65,
        "visitsYear": 26,
        "churn": 25,
        "acqCost": 90,
        "oneTimeTicket": 350,
        "referralRate": 15
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "ticket": 105,
        "visitsYear": 42,
        "churn": 40,
        "acqCost": 145,
        "oneTimeTicket": 560,
        "referralRate": 24
      }
    }
  ],
  "limitations": [
    "Results are estimates before tax, fees, and inflation unless an input explicitly covers them.",
    "Rates are treated as fixed for the whole period — variable-rate products will drift from this projection.",
    "This is educational maths, not financial advice. Check anything contractual with the lender or your accountant."
  ],
  "faq": [
    {
      "q": "What churn rate is normal for recurring home services?",
      "a": "Lawn care and pest control typically see 15-30% annual churn, cleaning services run 20-35%, and pool service tends to be stickier at 10-20% because switching providers mid-season is disruptive. Lower churn compounds dramatically: dropping from 30% to 15% roughly doubles expected customer lifespan and therefore LTV."
    },
    {
      "q": "Why does a $350 one-time job sometimes lose to a $65 recurring visit?",
      "a": "Because the recurring visit repeats. At 26 visits a year and even modest 4-year expected retention (25% churn), that customer generates over $6,700 in revenue against a single acquisition cost, while the one-time job caps out near its ticket price plus whatever referrals it generates. Recurring revenue amortizes acquisition cost across many transactions."
    },
    {
      "q": "How should this change marketing budget allocation?",
      "a": "If recurring LTV is 3-5x one-time LTV, you can justify paying 3-5x more to acquire a recurring customer through paid ads or door hangers, since the payback period is what matters, not the per-job margin. Track actual churn quarterly; a business that assumes 20% churn but actually sees 35% is over-investing in acquisition relative to real LTV."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/cleaning-square-foot-pricing",
    "https://www.revenuelab.fyi/toolbox/quote-close-rate-revenue"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Recurring vs One-Time Customer LTV Calculator (https://www.revenuelab.fyi/toolbox/recurring-vs-onetime-ltv)"
}