{
  "slug": "tutoring-package-discount",
  "title": "Tutoring Package Discount Calculator",
  "heading": "Tutoring Package Pricing Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/tutoring-package-discount",
  "summary": "Set multi-session package prices that still protect your effective hourly rate.",
  "description": "Tutors sell packages of sessions at a discount to lock in commitment, but a poorly sized discount quietly erodes the hourly rate you actually need. This tool takes your single-session rate and a target discount, computes the package price, and shows your true effective hourly rate after the discount so you can see whether the retention benefit is worth the margin given up. It also compares two package sizes side by side.",
  "formula": "Package price = sessions × rate × (1 − discount%). Effective hourly = package price ÷ sessions.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=tutoring-package-discount",
  "inputs": [
    {
      "id": "rate",
      "label": "Single-session rate",
      "kind": "number",
      "hint": null,
      "default": 65,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "sessions",
      "label": "Sessions in package",
      "kind": "number",
      "hint": null,
      "default": 10,
      "unit": null,
      "min": 1,
      "max": null
    },
    {
      "id": "discount",
      "label": "Package discount",
      "kind": "number",
      "hint": null,
      "default": 10,
      "unit": "%",
      "min": 0,
      "max": 50
    },
    {
      "id": "sessions2",
      "label": "Alternate package size",
      "kind": "number",
      "hint": null,
      "default": 20,
      "unit": null,
      "min": 1,
      "max": null
    },
    {
      "id": "discount2",
      "label": "Alternate discount",
      "kind": "number",
      "hint": null,
      "default": 15,
      "unit": "%",
      "min": 0,
      "max": 50
    }
  ],
  "outputs": [
    {
      "id": "price",
      "label": "Package price",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "effHourly",
      "label": "Effective hourly rate",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "price2",
      "label": "Alternate package price",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "effHourly2",
      "label": "Alternate effective hourly rate",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Single-session rate: 65 $",
      "Sessions in package: 10",
      "Package discount: 10 %",
      "Alternate package size: 20",
      "Alternate discount: 15 %"
    ],
    "outputs": [
      "Package price: $585.00",
      "Effective hourly rate: $58.50",
      "Alternate package price: $1,105.00",
      "Alternate effective hourly rate: $55.25"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter single-session rate ($).",
      "Enter sessions in package.",
      "Enter package discount (%).",
      "Enter alternate package size.",
      "Enter alternate discount (%).",
      "Read your package price 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": {
        "rate": 65,
        "sessions": 6,
        "discount": 6,
        "sessions2": 12,
        "discount2": 9
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "rate": 65,
        "sessions": 10,
        "discount": 10,
        "sessions2": 20,
        "discount2": 15
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "rate": 65,
        "sessions": 16,
        "discount": 16,
        "sessions2": 32,
        "discount2": 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": "How big a discount is reasonable?",
      "a": "5-15% is typical for tutoring packages. It rewards commitment without giving away more margin than the reduced marketing and admin cost of a repeat client justifies. Discounts above 20% usually mean you're competing on price, not value."
    },
    {
      "q": "Does a bigger package always deserve a bigger discount?",
      "a": "Not proportionally. The main cost you're saving is acquisition cost, which is roughly fixed per client regardless of package size, so discounts should grow slowly, not linearly, with sessions."
    },
    {
      "q": "Should packages expire?",
      "a": "Yes — an expiration window (60-120 days) protects your calendar from a client banking heavily discounted sessions and using them a year later at your old rate, effectively demanding you honor stale pricing."
    },
    {
      "q": "What if a client wants a refund on unused sessions?",
      "a": "Refund unused sessions at the undiscounted single-session rate, not the package rate, and only refund the remaining balance — this discourages sessions being purchased purely to arbitrage a bulk discount."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/tutor-hourly-rate-utilization",
    "https://www.revenuelab.fyi/toolbox/test-prep-score-gain-value"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Tutoring Package Discount Calculator (https://www.revenuelab.fyi/toolbox/tutoring-package-discount)"
}