{
  "slug": "job-shop-quote-markup",
  "title": "Job Shop Quote Markup Calculator",
  "heading": "Job Shop Quote & Markup Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/job-shop-quote-markup",
  "summary": "Build a customer quote from material, labor, machine time, and target margin.",
  "description": "A job shop quote needs to recover every real cost — material, burdened labor, machine time, and outside processing like plating or heat treat — then add margin on top, not blend margin into a vague multiplier. This calculator sums your direct costs, applies a shop overhead percentage (rent, utilities, admin, quality) to get fully loaded cost, then calculates the sell price needed to hit a target gross margin percentage, distinguishing margin (percentage of sell price) from markup (percentage of cost) since the two numbers are frequently confused and lead to under-pricing when someone thinks a '30% markup' delivers a 30% margin — it actually delivers about 23%.",
  "formula": "Fully Loaded Cost = (Material + Labor + Machine Time + Outside Processing) × (1 + Overhead %). Sell Price = Fully Loaded Cost ÷ (1 − Target Margin %). Markup % = (Sell Price − Cost) ÷ Cost.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=job-shop-quote-markup",
  "inputs": [
    {
      "id": "material",
      "label": "Material cost",
      "kind": "number",
      "hint": null,
      "default": 45,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "laborCost",
      "label": "Burdened labor cost",
      "kind": "number",
      "hint": null,
      "default": 60,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "machineCost",
      "label": "Machine time cost",
      "kind": "number",
      "hint": null,
      "default": 80,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "outsideProcessing",
      "label": "Outside processing (plating, heat treat)",
      "kind": "number",
      "hint": null,
      "default": 15,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "overheadPct",
      "label": "Shop overhead",
      "kind": "number",
      "hint": null,
      "default": 25,
      "unit": "%",
      "min": 0,
      "max": 150
    },
    {
      "id": "targetMargin",
      "label": "Target gross margin",
      "kind": "number",
      "hint": null,
      "default": 30,
      "unit": "%",
      "min": 0,
      "max": 80
    }
  ],
  "outputs": [
    {
      "id": "sellPrice",
      "label": "Quote price",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "fullyLoaded",
      "label": "Fully loaded cost",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "markupPct",
      "label": "Equivalent markup %",
      "format": "percent",
      "hint": null,
      "primary": false
    },
    {
      "id": "profit",
      "label": "Gross profit per job",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Material cost: 45 $",
      "Burdened labor cost: 60 $",
      "Machine time cost: 80 $",
      "Outside processing (plating, heat treat): 15 $",
      "Shop overhead: 25 %",
      "Target gross margin: 30 %"
    ],
    "outputs": [
      "Quote price: $357.14",
      "Fully loaded cost: $250.00",
      "Equivalent markup %: 42.9%",
      "Gross profit per job: $107.14"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter material cost ($).",
      "Enter burdened labor cost ($).",
      "Enter machine time cost ($).",
      "Enter outside processing (plating, heat treat) ($).",
      "Enter shop overhead (%).",
      "Enter target gross margin (%).",
      "Read your quote 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": {
        "material": 27,
        "laborCost": 36,
        "machineCost": 48,
        "outsideProcessing": 9,
        "overheadPct": 15,
        "targetMargin": 18
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "material": 45,
        "laborCost": 60,
        "machineCost": 80,
        "outsideProcessing": 15,
        "overheadPct": 25,
        "targetMargin": 30
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "material": 72,
        "laborCost": 96,
        "machineCost": 128,
        "outsideProcessing": 24,
        "overheadPct": 40,
        "targetMargin": 48
      }
    }
  ],
  "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's the difference between margin and markup?",
      "a": "Margin is profit as a percentage of the sell price; markup is profit as a percentage of cost. A 30% margin requires roughly a 43% markup, and a 30% markup only produces about a 23% margin. Confusing the two is one of the most common pricing mistakes in job shops, and it silently erodes profitability."
    },
    {
      "q": "What overhead percentage should I use?",
      "a": "Calculate it directly from your books: total annual overhead (rent, utilities, admin salaries, insurance, quality, sales) divided by total annual direct costs (material + labor + machine time) across all jobs. Most small-to-mid job shops land between 20-50% depending on how lean the operation is and how much support staff they carry relative to production."
    },
    {
      "q": "What margin should a job shop target?",
      "a": "It varies by market and risk profile, but 20-35% gross margin is typical for competitive contract manufacturing, with higher margins (35-50%+) achievable for specialized, low-competition, or rush work, and thinner margins (10-20%) common on high-volume repeat production where the customer has leverage."
    },
    {
      "q": "Should I quote the same margin on every job?",
      "a": "No — risk, complexity, and how badly you want the capacity filled should all shift target margin up or down. A first-article prototype job with unknown scrap risk deserves a higher margin than a proven repeat run of a part you've made a thousand times."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/machine-hourly-rate",
    "https://www.revenuelab.fyi/toolbox/shop-labor-burden-rate",
    "https://www.revenuelab.fyi/toolbox/moq-negotiation-impact"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Job Shop Quote Markup Calculator (https://www.revenuelab.fyi/toolbox/job-shop-quote-markup)"
}