{
  "slug": "spa-package-pricing-calculator",
  "title": "Spa Package Pricing Calculator",
  "heading": "Spa & Salon Package Pricing Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/spa-package-pricing-calculator",
  "summary": "Bundle multiple services into a package price with the right discount.",
  "description": "Packages (a la carte services bundled together, like a facial plus massage plus scalp treatment) drive higher average ticket and can improve scheduling efficiency, but the bundle discount needs to be calculated deliberately rather than guessed. This calculator sums the individual retail price of each included service, applies a target discount percentage, and shows the resulting package price along with the effective margin assuming each component's normal product and labor cost still applies. It also shows how many individual sales the package effectively represents, which helps justify the discount against the guaranteed multi-service booking (and the reduced marketing cost of selling one package versus three separate appointments).",
  "formula": "Sum of individual prices × (1 − discount%) = package price. Package margin = package price − sum of individual costs.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=spa-package-pricing-calculator",
  "inputs": [
    {
      "id": "service1Price",
      "label": "Service 1 price",
      "kind": "number",
      "hint": null,
      "default": 90,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "service2Price",
      "label": "Service 2 price",
      "kind": "number",
      "hint": null,
      "default": 70,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "service3Price",
      "label": "Service 3 price",
      "kind": "number",
      "hint": null,
      "default": 45,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "totalCost",
      "label": "Combined product + labor cost of all services",
      "kind": "number",
      "hint": null,
      "default": 65,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "discountPct",
      "label": "Package discount",
      "kind": "number",
      "hint": null,
      "default": 15,
      "unit": "%",
      "min": 0,
      "max": 50
    }
  ],
  "outputs": [
    {
      "id": "packagePrice",
      "label": "Package price",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "savings",
      "label": "Client savings vs à la carte",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "margin",
      "label": "Package gross margin",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "marginPct",
      "label": "Package margin %",
      "format": "percent",
      "hint": null,
      "primary": false
    },
    {
      "id": "sum",
      "label": "Sum of individual service prices",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Service 1 price: 90 $",
      "Service 2 price: 70 $",
      "Service 3 price: 45 $",
      "Combined product + labor cost of all services: 65 $",
      "Package discount: 15 %"
    ],
    "outputs": [
      "Package price: $174",
      "Client savings vs à la carte: $31",
      "Package gross margin: $109",
      "Package margin %: 62.7%",
      "Sum of individual service prices: $205"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter service 1 price ($).",
      "Enter service 2 price ($).",
      "Enter service 3 price ($).",
      "Enter combined product + labor cost of all services ($).",
      "Enter package 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": {
        "service1Price": 55,
        "service2Price": 40,
        "service3Price": 25,
        "totalCost": 40,
        "discountPct": 9
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "service1Price": 90,
        "service2Price": 70,
        "service3Price": 45,
        "totalCost": 65,
        "discountPct": 15
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "service1Price": 145,
        "service2Price": 110,
        "service3Price": 70,
        "totalCost": 105,
        "discountPct": 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 discount level makes a package feel worth buying?",
      "a": "10-20% off the combined individual price is the typical sweet spot — enough to feel like a genuine deal without eroding margin too much. Deeper discounts (25%+) should be reserved for slow-season promotions or gift-card-driven packages rather than standing menu offerings."
    },
    {
      "q": "Does a package need to include services with different margins?",
      "a": "It works best when you pair a lower-margin, in-demand service (like a popular massage) with a higher-margin add-on (like a scalp or hand treatment), so the blended package margin stays healthy even with the discount applied. Pairing two thin-margin services together can push package margin too low."
    },
    {
      "q": "Should packages be sold as gift cards too?",
      "a": "Yes, packages make excellent gift purchases because the bundled price and clear value proposition are easy to market around holidays and birthdays. Just make sure your point-of-sale system tracks package redemptions properly so partial usage (client uses 2 of 3 included services) doesn't create accounting confusion."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/salon-membership-pricing",
    "https://www.revenuelab.fyi/toolbox/hair-color-cost-per-service",
    "https://www.revenuelab.fyi/toolbox/med-spa-membership-breakeven"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Spa Package Pricing Calculator (https://www.revenuelab.fyi/toolbox/spa-package-pricing-calculator)"
}