{
  "slug": "promo-product-markup",
  "title": "Promotional Product Markup Calculator",
  "heading": "Promotional Product Markup Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/promo-product-markup",
  "summary": "Distributor cost, decoration, freight, and margin to a sell price.",
  "description": "Promo product distributors work off supplier net cost plus decoration (imprint) charge plus freight, then apply a keystone-style markup that's usually higher than typical retail because service and sourcing add real value the client doesn't see. This calculator adds unit cost, per-piece imprint charge, a flat setup/screen charge for the imprint spread across quantity, and inbound freight, then applies your target markup multiple to land on a resale price. Industry-typical markups run 1.8x-2.2x landed cost (that is, an 80-120% margin over cost) for standard items like pens and tote bags, and can run higher, 2.5x-3.5x, on lower-cost impulse items where the dollar amount is small enough that percentage markup barely registers to the buyer. Always keep decoration setup separate in your own cost model even if you bundle it into one client-facing price, because it's the piece that makes small orders unprofitable if quoted like large ones.",
  "formula": "Landed cost = (unit cost + imprint cost + setup ÷ qty) + freight per unit; price = landed cost × markup multiple.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=promo-product-markup",
  "inputs": [
    {
      "id": "unitCost",
      "label": "Supplier net cost per unit",
      "kind": "number",
      "hint": null,
      "default": 2.4,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "imprintCost",
      "label": "Imprint cost per unit",
      "kind": "number",
      "hint": null,
      "default": 0.85,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "setupFee",
      "label": "One-time setup/screen fee",
      "kind": "number",
      "hint": null,
      "default": 55,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "quantity",
      "label": "Order quantity",
      "kind": "number",
      "hint": null,
      "default": 250,
      "unit": null,
      "min": 1,
      "max": null
    },
    {
      "id": "freightTotal",
      "label": "Total inbound freight",
      "kind": "number",
      "hint": null,
      "default": 40,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "markup",
      "label": "Markup multiple",
      "kind": "number",
      "hint": null,
      "default": 2,
      "unit": null,
      "min": 1,
      "max": 5
    }
  ],
  "outputs": [
    {
      "id": "price",
      "label": "Resale price per unit",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "landedUnit",
      "label": "Landed cost per unit",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "totalRevenue",
      "label": "Total order revenue",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "totalProfit",
      "label": "Total gross profit",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "marginPct",
      "label": "Gross margin %",
      "format": "percent",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Supplier net cost per unit: 2.4 $",
      "Imprint cost per unit: 0.85 $",
      "One-time setup/screen fee: 55 $",
      "Order quantity: 250",
      "Total inbound freight: 40 $",
      "Markup multiple: 2"
    ],
    "outputs": [
      "Resale price per unit: $7.26",
      "Landed cost per unit: $3.63",
      "Total order revenue: $1,815.00",
      "Total gross profit: $907.50",
      "Gross margin %: 50.0%"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter supplier net cost per unit ($).",
      "Enter imprint cost per unit ($).",
      "Enter one-time setup/screen fee ($).",
      "Enter order quantity.",
      "Enter total inbound freight ($).",
      "Enter markup multiple.",
      "Read your resale price per unit 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": {
        "unitCost": 1.44,
        "imprintCost": 0.51,
        "setupFee": 35,
        "quantity": 150,
        "freightTotal": 25,
        "markup": 1.2
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "unitCost": 2.4,
        "imprintCost": 0.85,
        "setupFee": 55,
        "quantity": 250,
        "freightTotal": 40,
        "markup": 2
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "unitCost": 3.84,
        "imprintCost": 1.36,
        "setupFee": 90,
        "quantity": 400,
        "freightTotal": 65,
        "markup": 3.2
      }
    }
  ],
  "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 markup multiple is normal in promo products?",
      "a": "The ASI/PPAI distributor norm is roughly a 1.8x-2.2x multiple on landed cost, translating to 45-55% gross margin. Boutique or highly consultative distributors with heavy service (kitting, warehousing, complex logistics) can push higher, sometimes 2.5x+."
    },
    {
      "q": "Should setup fees be shown separately to the client?",
      "a": "Many distributors bundle it into a single unit price for a cleaner quote, but internally you should always track it separately since it's the number that kills margin on small or reorder-without-setup jobs."
    },
    {
      "q": "How does freight change the math on heavy items?",
      "a": "Freight is often flat-rate regardless of unit count up to a pallet threshold, so it behaves like a semi-fixed cost — a 100-unit order of drinkware absorbs the same $40-$80 freight charge as a 500-unit order, meaning small orders take a bigger per-unit freight hit."
    },
    {
      "q": "Why do impulse items get higher percentage markup?",
      "a": "A $0.50 item marked up to $1.50 (3x) is still an easy buy and the absolute dollar spread barely registers, while a $50 item at 3x becomes a hard sell at $150. Lower price points can absorb steeper multiples without losing the client."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/promo-product-breakeven",
    "https://www.revenuelab.fyi/toolbox/print-waste-overrun",
    "https://www.revenuelab.fyi/toolbox/garment-blank-margin"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Promotional Product Markup Calculator (https://www.revenuelab.fyi/toolbox/promo-product-markup)"
}