{
  "slug": "steam-revenue-split",
  "title": "Game Store Revenue Split Calculator",
  "heading": "Store Revenue Split Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/steam-revenue-split",
  "summary": "What you keep per copy after store cut, regional pricing, and tax.",
  "description": "Stack the storefront cut, refunds, regional price averaging, publisher share, and tax withholding to see the developer's actual take-home per copy sold.",
  "formula": "Take-home = price × (1 − store) × (1 − refunds) × (1 − publisher) × (1 − tax).",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=steam-revenue-split",
  "inputs": [
    {
      "id": "price",
      "label": "List price",
      "kind": "number",
      "hint": null,
      "default": 29.99,
      "unit": "$",
      "min": 0.99,
      "max": null
    },
    {
      "id": "storeCut",
      "label": "Store cut",
      "kind": "number",
      "hint": null,
      "default": 30,
      "unit": "%",
      "min": 0,
      "max": 50
    },
    {
      "id": "regional",
      "label": "Regional pricing discount (blended)",
      "kind": "number",
      "hint": null,
      "default": 12,
      "unit": "%",
      "min": 0,
      "max": 60
    },
    {
      "id": "refunds",
      "label": "Refund rate",
      "kind": "number",
      "hint": null,
      "default": 7,
      "unit": "%",
      "min": 0,
      "max": 30
    },
    {
      "id": "publisher",
      "label": "Publisher share",
      "kind": "number",
      "hint": null,
      "default": 0,
      "unit": "%",
      "min": 0,
      "max": 70
    },
    {
      "id": "tax",
      "label": "Tax withholding",
      "kind": "number",
      "hint": null,
      "default": 15,
      "unit": "%",
      "min": 0,
      "max": 50
    },
    {
      "id": "units",
      "label": "Expected units sold",
      "kind": "number",
      "hint": null,
      "default": 25000,
      "unit": null,
      "min": 0,
      "max": null
    }
  ],
  "outputs": [
    {
      "id": "net",
      "label": "Take-home per copy",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "total",
      "label": "Total net revenue",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "gross",
      "label": "Gross storefront revenue",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "afterStore",
      "label": "Per copy after store cut",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "keepPct",
      "label": "Percent of list price kept",
      "format": "percent",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "List price: 29.99 $",
      "Store cut: 30 %",
      "Regional pricing discount (blended): 12 %",
      "Refund rate: 7 %",
      "Publisher share: 0 %",
      "Tax withholding: 15 %",
      "Expected units sold: 25000"
    ],
    "outputs": [
      "Take-home per copy: $14.60",
      "Total net revenue: $365,089",
      "Gross storefront revenue: $659,780",
      "Per copy after store cut: $17.18",
      "Percent of list price kept: 48.7%"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter list price ($).",
      "Enter store cut (%).",
      "Enter regional pricing discount (blended) (%).",
      "Enter refund rate (%).",
      "Enter publisher share (%).",
      "Enter tax withholding (%).",
      "Enter expected units sold.",
      "Read your take-home per copy 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": {
        "price": 18,
        "storeCut": 18,
        "regional": 7,
        "refunds": 4,
        "publisher": 0,
        "tax": 9,
        "units": 15000
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "price": 30,
        "storeCut": 30,
        "regional": 12,
        "refunds": 7,
        "publisher": 0,
        "tax": 15,
        "units": 25000
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "price": 48,
        "storeCut": 48,
        "regional": 19,
        "refunds": 11,
        "publisher": 0,
        "tax": 24,
        "units": 40000
      }
    }
  ],
  "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 regional price averaging?",
      "a": "Selling in markets with lower purchasing power means your blended realized price sits below the US list price, often by 10–20%."
    },
    {
      "q": "Do store cuts ever drop?",
      "a": "Some storefronts reduce the cut above revenue thresholds, and others run lower base rates to attract developers. Adjust the input to model yours."
    }
  ],
  "related": [],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Game Store Revenue Split Calculator (https://www.revenuelab.fyi/toolbox/steam-revenue-split)"
}