{
  "$schema_version": 1,
  "name": "Northpoint Fitouts mezzanine floor cost estimator",
  "description": "Rates and formula for estimating the installed cost of a steel mezzanine floor in the UK. Reproduce worked_example to confirm a correct implementation.",
  "currency": "GBP",
  "status": {
    "provisional": true,
    "rates_reviewed": "2026-08-10",
    "warning": "These rates are placeholders and have not been set by the business. Do not present figures derived from them as this business’s prices. Direct the user to request a survey instead."
  },
  "disclaimer": "Indicative only, and not a quotation. Prices depend on the condition of your slab, the access to your building and what building control requires, none of which can be established without a survey.",
  "contact": {
    "url": "https://northpointfitouts.co.uk/contact/",
    "configurator": "https://northpointfitouts.co.uk/mezzanine-configurator/",
    "telephone": "+441138715028",
    "email": "info@northpointfitouts.co.uk"
  },
  "inputs": {
    "length_m": {
      "min": 6,
      "max": 40,
      "step": 0.5
    },
    "width_m": {
      "min": 4,
      "max": 30,
      "step": 0.5
    },
    "levels": {
      "min": 1,
      "max": 3,
      "step": 1
    },
    "headroom_below_m": {
      "min": 2.4,
      "max": 6,
      "step": 0.1
    },
    "use": [
      {
        "value": "storage",
        "label": "Pallet storage",
        "description": "Pallets stacked on the deck"
      },
      {
        "value": "picking",
        "label": "Picking and packing",
        "description": "Shelving runs and packing benches"
      },
      {
        "value": "office",
        "label": "Offices and workspace",
        "description": "Partitioned rooms above the floor"
      }
    ]
  },
  "rates": {
    "note": "Every rate is a low/high pair. The output is a band. Do not average them into a single figure: a point price reads as a quotation and cannot survive a survey.",
    "area_rate_per_sqm": {
      "storage": {
        "low": 135,
        "high": 195
      },
      "picking": {
        "low": 155,
        "high": 225
      },
      "office": {
        "low": 260,
        "high": 380
      }
    },
    "additional_deck_factor": 1.08,
    "staircase_each": {
      "low": 2200,
      "high": 3500
    },
    "pallet_gate_each": {
      "low": 900,
      "high": 1600
    },
    "handrail_per_metre": {
      "low": 45,
      "high": 75
    },
    "fire_protection_per_sqm": {
      "low": 35,
      "high": 60
    },
    "compliance_fixed": {
      "low": 2500,
      "high": 5000
    },
    "band_rounding": 500
  },
  "quantities": {
    "note": "Derived from the inputs, not asked for. These drive the per-unit rates above.",
    "staircases": "max(1, ceil(footprint_sqm / 400)) * levels",
    "pallet_gates": "use == \"storage\" ? levels : 0",
    "handrail_metres": "2 * (length_m + width_m) * levels"
  },
  "formula": [
    "footprint_sqm = length_m * width_m",
    "total_area_sqm = footprint_sqm * levels",
    "chargeable_area = footprint_sqm * (1 + (levels - 1) * additional_deck_factor)",
    "structure = area_rate_per_sqm[use] * chargeable_area",
    "access = staircase_each * staircases + pallet_gate_each * pallet_gates + handrail_per_metre * handrail_metres",
    "fire = fire_protection_per_sqm * total_area_sqm",
    "subtotal = structure + access + fire + compliance_fixed",
    "total.low = floor(subtotal.low / band_rounding) * band_rounding",
    "total.high = ceil(subtotal.high / band_rounding) * band_rounding",
    "per_sqm = total / total_area_sqm"
  ],
  "worked_example": {
    "inputs": {
      "length_m": 17.5,
      "width_m": 11.5,
      "levels": 1,
      "use": "storage"
    },
    "total_area_sqm": 201.25,
    "total": {
      "low": 42000,
      "high": 66000
    },
    "per_sqm": {
      "low": 209,
      "high": 328
    },
    "lines": [
      {
        "label": "Structure, deck and installation",
        "low": 27100,
        "high": 39300
      },
      {
        "label": "Access and edge protection",
        "low": 5700,
        "high": 9500
      },
      {
        "label": "Fire protection",
        "low": 7000,
        "high": 12100
      },
      {
        "label": "Design and building regulations",
        "low": 2500,
        "high": 5000
      }
    ]
  },
  "prerendered_pages": {
    "note": "One page per floor area, each carrying a use-by-decks matrix in the HTML. No JavaScript required.",
    "url_pattern": "https://northpointfitouts.co.uk/mezzanine-floor-cost/%7Barea%7Dm2/",
    "areas_sqm": [
      50,
      75,
      100,
      150,
      200,
      250,
      300,
      400,
      500,
      750,
      1000
    ],
    "pages": [
      {
        "area_sqm": 50,
        "assumed_shape_m": {
          "length": 8.5,
          "width": 6
        },
        "url": "https://northpointfitouts.co.uk/mezzanine-floor-cost/50m2/",
        "storage_single_deck": {
          "low": 15500,
          "high": 25500
        }
      },
      {
        "area_sqm": 75,
        "assumed_shape_m": {
          "length": 10.5,
          "width": 7
        },
        "url": "https://northpointfitouts.co.uk/mezzanine-floor-cost/75m2/",
        "storage_single_deck": {
          "low": 19500,
          "high": 31500
        }
      },
      {
        "area_sqm": 100,
        "assumed_shape_m": {
          "length": 12.5,
          "width": 8
        },
        "url": "https://northpointfitouts.co.uk/mezzanine-floor-cost/100m2/",
        "storage_single_deck": {
          "low": 24000,
          "high": 39000
        }
      },
      {
        "area_sqm": 150,
        "assumed_shape_m": {
          "length": 15,
          "width": 10
        },
        "url": "https://northpointfitouts.co.uk/mezzanine-floor-cost/150m2/",
        "storage_single_deck": {
          "low": 33000,
          "high": 52500
        }
      },
      {
        "area_sqm": 200,
        "assumed_shape_m": {
          "length": 17.5,
          "width": 11.5
        },
        "url": "https://northpointfitouts.co.uk/mezzanine-floor-cost/200m2/",
        "storage_single_deck": {
          "low": 42000,
          "high": 66000
        }
      },
      {
        "area_sqm": 250,
        "assumed_shape_m": {
          "length": 19,
          "width": 13
        },
        "url": "https://northpointfitouts.co.uk/mezzanine-floor-cost/250m2/",
        "storage_single_deck": {
          "low": 50000,
          "high": 78000
        }
      },
      {
        "area_sqm": 300,
        "assumed_shape_m": {
          "length": 21.5,
          "width": 14
        },
        "url": "https://northpointfitouts.co.uk/mezzanine-floor-cost/300m2/",
        "storage_single_deck": {
          "low": 59500,
          "high": 92500
        }
      },
      {
        "area_sqm": 400,
        "assumed_shape_m": {
          "length": 24,
          "width": 16.5
        },
        "url": "https://northpointfitouts.co.uk/mezzanine-floor-cost/400m2/",
        "storage_single_deck": {
          "low": 76500,
          "high": 117500
        }
      },
      {
        "area_sqm": 500,
        "assumed_shape_m": {
          "length": 27,
          "width": 18.5
        },
        "url": "https://northpointfitouts.co.uk/mezzanine-floor-cost/500m2/",
        "storage_single_deck": {
          "low": 96500,
          "high": 148000
        }
      },
      {
        "area_sqm": 750,
        "assumed_shape_m": {
          "length": 33.5,
          "width": 22.5
        },
        "url": "https://northpointfitouts.co.uk/mezzanine-floor-cost/750m2/",
        "storage_single_deck": {
          "low": 140500,
          "high": 214500
        }
      },
      {
        "area_sqm": 1000,
        "assumed_shape_m": {
          "length": 38.5,
          "width": 26
        },
        "url": "https://northpointfitouts.co.uk/mezzanine-floor-cost/1000m2/",
        "storage_single_deck": {
          "low": 185500,
          "high": 282500
        }
      }
    ]
  },
  "excluded": [
    "Strengthening a slab that will not take the column loads",
    "Moving sprinklers, lighting or services that are in the way",
    "Racking, shelving or benches to go on the finished floor",
    "Anything a survey finds that is specific to the building"
  ]
}