{
  "slug": "monthly-giving-program",
  "title": "Monthly Giving Program Calculator",
  "heading": "Recurring Donor Program Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/monthly-giving-program",
  "summary": "Sustainer revenue, churn, and the value of converting one-time donors.",
  "description": "Recurring donors are worth several times a one-time giver because they renew by default. Model the program's monthly revenue, account for card failures and cancellations, and see what a conversion push is worth over three years.",
  "formula": "Monthly revenue = sustainers × average gift; retained value = revenue ÷ monthly churn.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=monthly-giving-program",
  "inputs": [
    {
      "id": "sustainers",
      "label": "Current monthly donors",
      "kind": "number",
      "hint": null,
      "default": 320,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "avgGift",
      "label": "Average monthly gift",
      "kind": "number",
      "hint": null,
      "default": 27,
      "unit": "$",
      "min": 1,
      "max": null
    },
    {
      "id": "newPerMonth",
      "label": "New sustainers per month",
      "kind": "number",
      "hint": null,
      "default": 18,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "churn",
      "label": "Monthly churn (cancels + card failures)",
      "kind": "number",
      "hint": null,
      "default": 3.5,
      "unit": "%",
      "min": 0.1,
      "max": 25
    },
    {
      "id": "months",
      "label": "Projection horizon",
      "kind": "number",
      "hint": null,
      "default": 36,
      "unit": "months",
      "min": 1,
      "max": 120
    },
    {
      "id": "processing",
      "label": "Processing fees",
      "kind": "number",
      "hint": null,
      "default": 2.5,
      "unit": "%",
      "min": 0,
      "max": 10
    }
  ],
  "outputs": [
    {
      "id": "monthlyNow",
      "label": "Net monthly revenue today",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "endMonthly",
      "label": "Net monthly revenue at horizon",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "endCount",
      "label": "Sustainers at horizon",
      "format": "number",
      "hint": null,
      "primary": false
    },
    {
      "id": "cumulative",
      "label": "Cumulative net revenue",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "ltv",
      "label": "Lifetime value per sustainer",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "lifespan",
      "label": "Average months retained",
      "format": "decimal",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Current monthly donors: 320",
      "Average monthly gift: 27 $",
      "New sustainers per month: 18",
      "Monthly churn (cancels + card failures): 3.5 %",
      "Projection horizon: 36 months",
      "Processing fees: 2.5 %"
    ],
    "outputs": [
      "Net monthly revenue today: $8,424",
      "Net monthly revenue at horizon: $12,120",
      "Sustainers at horizon: 460",
      "Cumulative net revenue: $381,783",
      "Lifetime value per sustainer: $752",
      "Average months retained: 28.6"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter current monthly donors.",
      "Enter average monthly gift ($).",
      "Enter new sustainers per month.",
      "Enter monthly churn (cancels + card failures) (%).",
      "Enter projection horizon (months).",
      "Enter processing fees (%).",
      "Read your net monthly revenue today 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": {
        "sustainers": 190,
        "avgGift": 16,
        "newPerMonth": 11,
        "churn": 2.1,
        "months": 22,
        "processing": 1.5
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "sustainers": 320,
        "avgGift": 27,
        "newPerMonth": 18,
        "churn": 3.5,
        "months": 36,
        "processing": 2.5
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "sustainers": 510,
        "avgGift": 43,
        "newPerMonth": 29,
        "churn": 5.6000000000000005,
        "months": 58,
        "processing": 4
      }
    }
  ],
  "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": "How much of churn is involuntary?",
      "a": "Often a third to a half. Expired and reissued cards silently kill recurring gifts, which is why account updater services and a dunning email sequence usually pay for themselves within a quarter."
    },
    {
      "q": "What ask amount converts best?",
      "a": "Framing around a unit of impact at $15–$35 per month converts far better than an open field. Anchoring too high suppresses starts, and starts compound while single large gifts do not."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/donor-retention",
    "https://www.revenuelab.fyi/toolbox/fundraising-goal"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Monthly Giving Program Calculator (https://www.revenuelab.fyi/toolbox/monthly-giving-program)"
}