{
  "slug": "retainer-vs-project-mix",
  "title": "Retainer vs Project Revenue Mix Calculator",
  "heading": "Retainer vs Project Mix Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/retainer-vs-project-mix",
  "summary": "See how much of your cost base is covered by predictable recurring revenue.",
  "description": "Recurring retainer revenue is worth more than the same dollar of project revenue because it's predictable, cheaper to service, and it's what buyers pay a multiple for. This calculator splits your book into retainer and project revenue, calculates the share of your monthly cost base covered by retainers alone, and shows how many additional retainers of a given size you'd need to reach full coverage. Agencies that cover 100% of fixed cost with retainers can treat project work as pure upside and stop making desperate pricing decisions in slow quarters — it's the single structural change that most improves both margin and valuation multiple.",
  "formula": "Coverage = monthly retainer revenue ÷ monthly fixed cost. Retainers to full coverage = (fixed cost − retainer revenue) ÷ average retainer size.",
  "dateModified": "2026-08-25",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=retainer-vs-project-mix",
  "inputs": [
    {
      "id": "retainers",
      "label": "Number of active retainers",
      "kind": "number",
      "hint": null,
      "default": 7,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "avgRetainer",
      "label": "Average retainer per month",
      "kind": "number",
      "hint": null,
      "default": 6500,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "projectRev",
      "label": "Project revenue per month (average)",
      "kind": "number",
      "hint": null,
      "default": 52000,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "fixedCost",
      "label": "Monthly fixed cost base",
      "kind": "number",
      "hint": null,
      "default": 74000,
      "unit": "$",
      "min": 0,
      "max": null
    }
  ],
  "outputs": [
    {
      "id": "coverage",
      "label": "Fixed cost covered by retainers",
      "format": "percent",
      "hint": null,
      "primary": true
    },
    {
      "id": "retainerRev",
      "label": "Monthly retainer revenue",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "recurringShare",
      "label": "Recurring share of total revenue",
      "format": "percent",
      "hint": null,
      "primary": false
    },
    {
      "id": "retainersNeeded",
      "label": "Extra retainers to reach full coverage",
      "format": "decimal",
      "hint": null,
      "primary": false
    },
    {
      "id": "gap",
      "label": "Monthly coverage gap",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Number of active retainers: 7",
      "Average retainer per month: 6500 $",
      "Project revenue per month (average): 52000 $",
      "Monthly fixed cost base: 74000 $"
    ],
    "outputs": [
      "Fixed cost covered by retainers: 61.5%",
      "Monthly retainer revenue: $45,500.00",
      "Recurring share of total revenue: 46.7%",
      "Extra retainers to reach full coverage: 4.4",
      "Monthly coverage gap: $28,500.00"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter number of active retainers.",
      "Enter average retainer per month ($).",
      "Enter project revenue per month (average) ($).",
      "Enter monthly fixed cost base ($).",
      "Read your fixed cost covered by retainers 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": {
        "retainers": 4,
        "avgRetainer": 4000,
        "projectRev": 31000,
        "fixedCost": 44000
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "retainers": 7,
        "avgRetainer": 6500,
        "projectRev": 52000,
        "fixedCost": 74000
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "retainers": 11,
        "avgRetainer": 10500,
        "projectRev": 83000,
        "fixedCost": 118000
      }
    }
  ],
  "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": "Why does retainer coverage affect valuation?",
      "a": "Buyers discount lumpy project revenue heavily because it doesn't survive an owner transition reliably. Agencies with a high recurring share commonly transact at meaningfully higher EBITDA multiples than project shops of the same size and profitability."
    },
    {
      "q": "Is 100% coverage the goal?",
      "a": "It's a strong position, but not the only one. Some high-margin project shops deliberately stay project-only and hold larger cash reserves instead. The failure mode to avoid is low coverage plus low cash, which forces bad pricing decisions."
    },
    {
      "q": "How do I convert project clients to retainers?",
      "a": "Pitch the follow-through, not the maintenance: the optimisation, reporting, and iteration that makes the project investment pay off. Doing it in the final third of a successful project converts far better than doing it after the invoice clears."
    },
    {
      "q": "Do retainers have worse margin?",
      "a": "Often slightly, because clients push for volume pricing — but delivery cost is usually lower too, since the team already knows the account and pre-sales cost is near zero on renewal. Measure margin per account rather than assuming."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/agency-client-concentration",
    "https://www.revenuelab.fyi/toolbox/retainer-scope-creep",
    "https://www.revenuelab.fyi/toolbox/agency-runway-months"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Retainer vs Project Revenue Mix Calculator (https://www.revenuelab.fyi/toolbox/retainer-vs-project-mix)"
}