{
  "slug": "cross-dock-vs-storage",
  "title": "Cross-Dock vs. Storage Cost Calculator",
  "heading": "Cross-Dock vs. Storage Comparison Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/cross-dock-vs-storage",
  "summary": "Compare handling-only cross-dock cost against putaway-and-store cost.",
  "description": "Cross-docking moves freight from inbound to outbound trailer with minimal or no putaway, cutting storage cost and dwell time but requiring tighter transportation synchronization. Storage flow puts inventory away, holds it, and picks it later, which costs more in handling touches and space but gives you buffer against demand and supply timing mismatches. This calculator compares the fully loaded per-unit cost of both flows for a given SKU or lane — cross-dock cost is mostly labor and dock time, while storage cost adds putaway labor, storage space charges, and pick labor on the back end. Use it to decide which SKUs or replenishment lanes are candidates for cross-docking, which typically makes sense for high-velocity, pre-allocated, or promotional freight with reliable, synchronized inbound and outbound schedules.",
  "formula": "Cross-dock cost/unit = (Receive + sort + load labor) ÷ units; Storage cost/unit = (Putaway + storage + pick labor) ÷ units.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=cross-dock-vs-storage",
  "inputs": [
    {
      "id": "units",
      "label": "Units per event/shipment",
      "kind": "number",
      "hint": null,
      "default": 5000,
      "unit": null,
      "min": 1,
      "max": null
    },
    {
      "id": "crossDockLaborHrs",
      "label": "Cross-dock labor hours (receive+sort+load)",
      "kind": "number",
      "hint": null,
      "default": 6,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "storagePutawayHrs",
      "label": "Storage flow: putaway + pick labor hours",
      "kind": "number",
      "hint": null,
      "default": 14,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "wage",
      "label": "Burdened labor wage",
      "kind": "number",
      "hint": null,
      "default": 24,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "storageDays",
      "label": "Avg days held (storage flow)",
      "kind": "number",
      "hint": null,
      "default": 20,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "storageCostPerDay",
      "label": "Storage cost per unit per day",
      "kind": "number",
      "hint": null,
      "default": 0.03,
      "unit": "$",
      "min": 0,
      "max": null
    }
  ],
  "outputs": [
    {
      "id": "savingsPerUnit",
      "label": "Savings per unit (cross-dock vs storage)",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "crossDockPerUnit",
      "label": "Cross-dock cost per unit",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "storagePerUnit",
      "label": "Storage flow cost per unit",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "totalSavings",
      "label": "Total savings for this shipment",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Units per event/shipment: 5000",
      "Cross-dock labor hours (receive+sort+load): 6",
      "Storage flow: putaway + pick labor hours: 14",
      "Burdened labor wage: 24 $",
      "Avg days held (storage flow): 20",
      "Storage cost per unit per day: 0.03 $"
    ],
    "outputs": [
      "Savings per unit (cross-dock vs storage): $0.638",
      "Cross-dock cost per unit: $0.029",
      "Storage flow cost per unit: $0.667",
      "Total savings for this shipment: $3,192"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter units per event/shipment.",
      "Enter cross-dock labor hours (receive+sort+load).",
      "Enter storage flow: putaway + pick labor hours.",
      "Enter burdened labor wage ($).",
      "Enter avg days held (storage flow).",
      "Enter storage cost per unit per day ($).",
      "Read your savings per unit (cross-dock vs storage) 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": {
        "units": 3000,
        "crossDockLaborHrs": 3.5999999999999996,
        "storagePutawayHrs": 8.4,
        "wage": 14,
        "storageDays": 12,
        "storageCostPerDay": 0.018
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "units": 5000,
        "crossDockLaborHrs": 6,
        "storagePutawayHrs": 14,
        "wage": 24,
        "storageDays": 20,
        "storageCostPerDay": 0.03
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "units": 8000,
        "crossDockLaborHrs": 9.600000000000001,
        "storagePutawayHrs": 22.400000000000002,
        "wage": 38,
        "storageDays": 32,
        "storageCostPerDay": 0.048
      }
    }
  ],
  "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": "Which SKUs are good cross-dock candidates?",
      "a": "High-velocity items with known, near-term demand — retail replenishment already allocated to a store, promotional freight timed to a launch, or full-pallet flow-through orders. If demand isn't known at receipt or the outbound schedule isn't synchronized with inbound, you'll end up storing it anyway and lose the labor savings while adding schedule risk."
    },
    {
      "q": "What operational risk does cross-docking add?",
      "a": "Cross-docking requires inbound and outbound trailers to be scheduled tightly together, so any inbound delay creates an outbound miss with no buffer inventory to fall back on. It also demands more precise labor scheduling because the sort-and-load work has to happen in a narrow window rather than whenever staff have capacity."
    },
    {
      "q": "Does this calculator include transportation cost?",
      "a": "No, it isolates warehouse handling and storage cost only. Cross-docking can also reduce transportation cost by avoiding a full inbound-to-storage-to-outbound cycle, but that savings depends on your specific network design and should be modeled separately alongside this labor and storage comparison."
    },
    {
      "q": "How much of my volume should realistically flow cross-dock?",
      "a": "Retail distribution operations that have invested in cross-dock infrastructure typically run 20-40% of volume through cross-dock, reserving the rest for storage flow where demand timing isn't tightly known. Pushing beyond that usually runs into space and labor scheduling constraints that erode the savings shown here."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/dock-door-throughput",
    "https://www.revenuelab.fyi/toolbox/pallet-position-cost",
    "https://www.revenuelab.fyi/toolbox/3pl-pricing-quote"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Cross-Dock vs. Storage Cost Calculator (https://www.revenuelab.fyi/toolbox/cross-dock-vs-storage)"
}