{
  "slug": "roast-loss-wholesale-pricing",
  "title": "Roast Shrinkage Wholesale Pricing Calculator",
  "heading": "Roast Weight Loss Wholesale Pricing Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/roast-loss-wholesale-pricing",
  "summary": "Price wholesale coffee bags correctly after roast shrinkage eats your yield.",
  "description": "Green coffee loses 12-20% of its weight during roasting as moisture and chaff burn off, so a wholesale account ordering pounds of roasted coffee is really consuming more green coffee than the bag weight suggests. This calculator works backward from your target roasted bag weight and roast loss percentage to find how much green coffee you actually need to buy, then builds a wholesale price per bag that hits your target margin after green cost, roasting labor and energy, packaging, and freight. Roasters who price off roasted weight alone without adjusting for shrinkage systematically underprice darker roasts, since darker roasts lose more weight than light roasts (light roast loss is often 12-14%, dark roast 16-19%). This tool lets you set roast level shrinkage separately so a dark roast wholesale account isn't accidentally subsidized by your light roast margins.",
  "formula": "Green needed = roasted weight ÷ (1 − shrinkage%). Total cost = green cost + roasting cost + packaging + freight. Wholesale price = total cost ÷ (1 − target margin%).",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=roast-loss-wholesale-pricing",
  "inputs": [
    {
      "id": "bagWeightOz",
      "label": "Roasted bag weight",
      "kind": "number",
      "hint": null,
      "default": 12,
      "unit": "oz",
      "min": 1,
      "max": null
    },
    {
      "id": "shrinkPct",
      "label": "Roast weight loss (shrinkage)",
      "kind": "number",
      "hint": null,
      "default": 15,
      "unit": "%",
      "min": 8,
      "max": 25
    },
    {
      "id": "greenCostLb",
      "label": "Green coffee cost per lb",
      "kind": "number",
      "hint": null,
      "default": 4.75,
      "unit": "$",
      "min": 0.5,
      "max": null
    },
    {
      "id": "roastCostLb",
      "label": "Roasting labor + energy per roasted lb",
      "kind": "number",
      "hint": null,
      "default": 1.1,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "packagingBag",
      "label": "Bag, valve, label cost",
      "kind": "number",
      "hint": null,
      "default": 0.85,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "freightBag",
      "label": "Freight/delivery cost per bag",
      "kind": "number",
      "hint": null,
      "default": 0.6,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "marginPct",
      "label": "Target wholesale margin",
      "kind": "number",
      "hint": null,
      "default": 35,
      "unit": "%",
      "min": 5,
      "max": 70
    }
  ],
  "outputs": [
    {
      "id": "wholesalePrice",
      "label": "Wholesale price per bag",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "totalCost",
      "label": "Total cost per bag",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "greenNeededLb",
      "label": "Green coffee needed per bag",
      "format": "decimal",
      "hint": null,
      "primary": false
    },
    {
      "id": "greenCost",
      "label": "Green coffee cost per bag",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "profitPerBag",
      "label": "Profit per bag",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Roasted bag weight: 12 oz",
      "Roast weight loss (shrinkage): 15 %",
      "Green coffee cost per lb: 4.75 $",
      "Roasting labor + energy per roasted lb: 1.1 $",
      "Bag, valve, label cost: 0.85 $",
      "Freight/delivery cost per bag: 0.6 $",
      "Target wholesale margin: 35 %"
    ],
    "outputs": [
      "Wholesale price per bag: $9.95",
      "Total cost per bag: $6.47",
      "Green coffee needed per bag: 0.882",
      "Green coffee cost per bag: $4.19",
      "Profit per bag: $3.48"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter roasted bag weight (oz).",
      "Enter roast weight loss (shrinkage) (%).",
      "Enter green coffee cost per lb ($).",
      "Enter roasting labor + energy per roasted lb ($).",
      "Enter bag, valve, label cost ($).",
      "Enter freight/delivery cost per bag ($).",
      "Enter target wholesale margin (%).",
      "Read your wholesale price per bag 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": {
        "bagWeightOz": 7,
        "shrinkPct": 9,
        "greenCostLb": 2.85,
        "roastCostLb": 0.66,
        "packagingBag": 0.51,
        "freightBag": 0.36,
        "marginPct": 21
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "bagWeightOz": 12,
        "shrinkPct": 15,
        "greenCostLb": 4.75,
        "roastCostLb": 1.1,
        "packagingBag": 0.85,
        "freightBag": 0.6,
        "marginPct": 35
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "bagWeightOz": 19,
        "shrinkPct": 24,
        "greenCostLb": 7.6000000000000005,
        "roastCostLb": 1.7600000000000002,
        "packagingBag": 1.36,
        "freightBag": 0.96,
        "marginPct": 56
      }
    }
  ],
  "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 roast level matter for pricing?",
      "a": "Darker roasts stay in the drum longer and drive off more moisture and mass as smoke and chaff, typically losing 16-19% of green weight versus 12-14% for light roasts. If you price every roast level the same, your dark roast wholesale accounts are quietly less profitable because you're buying more green coffee to fill the same bag."
    },
    {
      "q": "What shrinkage percentage should I actually use?",
      "a": "Weigh a green batch before roasting and the roasted output after cooling and de-chaffing, then divide the weight lost by the starting weight. Do this for each roast profile you run rather than using an industry average, since drum type, batch size, and airflow all shift the number a few points."
    },
    {
      "q": "Is 35% margin reasonable for wholesale coffee?",
      "a": "Wholesale roasted coffee margins commonly run 30-45% depending on volume commitments and whether you're also providing equipment or marketing support to the account. Lower margins (20-25%) are common for large volume grocery or grab-and-go accounts where you're trading margin for guaranteed volume."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/green-coffee-landed-cost",
    "https://www.revenuelab.fyi/toolbox/espresso-shot-cost",
    "https://www.revenuelab.fyi/toolbox/wholesale-retail-channel-split"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Roast Shrinkage Wholesale Pricing Calculator (https://www.revenuelab.fyi/toolbox/roast-loss-wholesale-pricing)"
}