{
  "slug": "childcare-late-pickup-fee-policy",
  "title": "Late Pickup Fee Policy Calculator",
  "heading": "Late Pickup Fee Policy Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/childcare-late-pickup-fee-policy",
  "summary": "Price late pickup fees so they cover staffing cost and actually change parent behavior.",
  "description": "Late pickups are a staffing cost, not an annoyance. State licensing ratios do not stop at closing time, so when one child stays past close you usually need two staff on the clock, often at overtime, plus a director who cannot leave. Centers that set a token late fee of a dollar a minute frequently discover the fee gets treated as a purchase rather than a penalty, and late pickups increase. This calculator computes what a late episode actually costs you, using the number of staff who must remain, their loaded hourly cost, and the average minutes of overage, then compares that to your current fee to show whether you are subsidizing chronically late families and by how much per month. It also produces a break-even per-minute fee and a suggested deterrent fee at a multiple of cost. The practical guidance from the research on late fees is that small fees can backfire by converting a social obligation into a priced service, so set the fee clearly above your true cost, apply it from the first minute with a documented grace period, bill it to the account rather than collecting cash at the door, and pair it with a written policy about repeated occurrences. Most centers that do this see chronic lateness fall within two billing cycles.",
  "formula": "Cost per Episode = Staff Required × Loaded Rate/hr × (Minutes ÷ 60). Breakeven Fee/min = Cost per Episode ÷ Minutes. Monthly Subsidy = Episodes × (Cost per Episode − Fee Collected).",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=childcare-late-pickup-fee-policy",
  "inputs": [
    {
      "id": "episodes",
      "label": "Late pickup episodes per month",
      "kind": "number",
      "hint": null,
      "default": 14,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "avgMinutes",
      "label": "Average minutes past close",
      "kind": "number",
      "hint": null,
      "default": 18,
      "unit": null,
      "min": 1,
      "max": null
    },
    {
      "id": "staffRequired",
      "label": "Staff who must stay",
      "kind": "number",
      "hint": null,
      "default": 2,
      "unit": null,
      "min": 1,
      "max": null
    },
    {
      "id": "loadedRate",
      "label": "Loaded staff cost per hour",
      "kind": "number",
      "hint": null,
      "default": 24,
      "unit": null,
      "min": 1,
      "max": null
    },
    {
      "id": "otMultiplier",
      "label": "Overtime multiplier",
      "kind": "number",
      "hint": null,
      "default": 1.5,
      "unit": null,
      "min": 1,
      "max": 2
    },
    {
      "id": "currentFee",
      "label": "Current fee charged per minute",
      "kind": "number",
      "hint": null,
      "default": 1,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "deterrentMultiple",
      "label": "Deterrent multiple over cost",
      "kind": "number",
      "hint": null,
      "default": 2,
      "unit": null,
      "min": 1,
      "max": 5
    }
  ],
  "outputs": [
    {
      "id": "suggestedFee",
      "label": "Suggested fee per minute",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "breakevenPerMinute",
      "label": "Break-even fee per minute",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "costPerEpisode",
      "label": "Your cost per late episode",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "monthlySubsidy",
      "label": "Monthly amount you are absorbing",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "monthlyCost",
      "label": "Total monthly late-pickup labor cost",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "collected",
      "label": "Fee collected per episode today",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Late pickup episodes per month: 14",
      "Average minutes past close: 18",
      "Staff who must stay: 2",
      "Loaded staff cost per hour: 24",
      "Overtime multiplier: 1.5",
      "Current fee charged per minute: 1",
      "Deterrent multiple over cost: 2"
    ],
    "outputs": [
      "Suggested fee per minute: $2.40",
      "Break-even fee per minute: $1.20",
      "Your cost per late episode: $21.60",
      "Monthly amount you are absorbing: $50",
      "Total monthly late-pickup labor cost: $302",
      "Fee collected per episode today: $18.00"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter late pickup episodes per month.",
      "Enter average minutes past close.",
      "Enter staff who must stay.",
      "Enter loaded staff cost per hour.",
      "Enter overtime multiplier.",
      "Enter current fee charged per minute.",
      "Enter deterrent multiple over cost.",
      "Read your suggested fee per minute 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": {
        "episodes": 8,
        "avgMinutes": 11,
        "staffRequired": 1,
        "loadedRate": 14,
        "otMultiplier": 1,
        "currentFee": 0.6,
        "deterrentMultiple": 1.2
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "episodes": 14,
        "avgMinutes": 18,
        "staffRequired": 2,
        "loadedRate": 24,
        "otMultiplier": 1.5,
        "currentFee": 1,
        "deterrentMultiple": 2
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "episodes": 22,
        "avgMinutes": 29,
        "staffRequired": 3,
        "loadedRate": 38,
        "otMultiplier": 2,
        "currentFee": 1.6,
        "deterrentMultiple": 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": "Why do two staff have to stay for one child?",
      "a": "Most states require two adults present whenever children are in care, and many require a supervision ratio regardless of headcount. That is why a single late child costs roughly double what parents assume, and why a per-minute fee based on one staff wage undercharges by half."
    },
    {
      "q": "Can a late fee actually make lateness worse?",
      "a": "Yes, and it is well documented in daycare research. A small fee reframes lateness as a service parents can buy rather than a favor they are imposing on staff. Set the fee meaningfully above your cost, communicate it as a staffing-cost recovery, and enforce it consistently, or it will read as a price list."
    },
    {
      "q": "Should there be a grace period?",
      "a": "A five-minute documented grace period reduces disputes about clock differences and does not materially change behavior. Beyond that, charge from minute one of the overage rather than rounding to fifteen-minute blocks, which parents perceive as arbitrary and which invites arguments at the door."
    },
    {
      "q": "How should the fee be collected?",
      "a": "Bill it to the family account on the next invoice rather than asking staff to collect at pickup. Cash at the door puts a teacher in a confrontation at the end of a long day, and the collection rate is worse. Automated billing also creates the paper trail you need if repeated lateness leads to disenrollment."
    },
    {
      "q": "What about chronic offenders?",
      "a": "Write a tiered policy: after three episodes in a rolling ninety days, the rate escalates, and after six a conference is required. A small number of families usually generate most of the episodes, so the escalation clause matters more than the base rate for controlling total cost."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/classroom-enrollment-breakeven",
    "https://www.revenuelab.fyi/toolbox/substitute-teacher-cost",
    "https://www.revenuelab.fyi/toolbox/director-span-of-control-cost"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Late Pickup Fee Policy Calculator (https://www.revenuelab.fyi/toolbox/childcare-late-pickup-fee-policy)"
}