Compliance guide

San Francisco Health Care Security Ordinance (HCSO)

Quick answer

Who counts as a covered employee?
An employee who has been employed more than 90 days, works at least 8 hours per week in San Francisco, and is not exempt. Managers, supervisors and confidential employees paid at or above the annual salary exemption threshold are excluded, along with employees eligible for Medicare or TRICARE and employees who sign a valid waiver. There is no age-based exemption.
How many hours count each month?
Hours paid, including paid leave such as PTO, vacation, sick and holiday, capped at 172 hours per employee per month.
How is the required spend calculated?
Capped hours multiplied by the health care expenditure rate in effect for the year and the employer's size tier. Qualifying employer health spending in the same period reduces the amount owed, and the balance never goes below zero.

The San Francisco Health Care Security Ordinance (HCSO) requires covered employers to make a minimum health care expenditure for every covered employee, every quarter, based on the hours those employees are paid for work in San Francisco. Official guidance is published by the San Francisco Office of Labor Standards Enforcement.

In practice HCSO is a data problem before it is a benefits problem. The amount owed depends on hours by pay code, employment status, coverage eligibility, tenure, worker type, compensation level and employer-paid benefit costs - five or six systems worth of data reconciled month by month.

Who is covered

An employer is covered when it has employees working in San Francisco and meets the size threshold for the year (small employers below the threshold are exempt, and the required rate rises with size tier). An employee is covered for a month when all of these hold:

  • Employed for more than 90 days (the waiting period runs from the applicable hire date)
  • Works at least 8 hours per week in San Francisco. Employers typically operationalize this as a monthly paid-hours threshold; the specific method should be documented and applied consistently
  • Not terminated before the start of the month
  • Not an independent contractor, 1099 worker or other excluded worker type
  • Not eligible for Medicare or TRICARE - this exemption is coverage based, not age based, and the employer must be able to document eligibility. Many employees aged 65 and over are still covered employees, so an age-65 proxy in a report will understate the population
  • Not a manager, supervisor or confidential employee paid at or above the annual salary exemption threshold

Other exclusions:

  • Employees with coverage through another employer who sign the voluntary waiver form. The waiver lasts one year and can be revoked in writing at any time, and the signed forms are part of the record set an audit will ask for
  • Employees covered under the Health Care Accountability Ordinance
  • Bona fide nonprofit trainees for up to one year
  • Owners of the business

Salaried employees. OLSE assumes a 40-hour week, capped at 172 hours per month, unless the employer can show a shorter regular work week. Reports built only from timecard hours miss this and understate salaried exposure.

Contractors. Calling someone an independent contractor does not settle it. California's ABC test decides worker status, and misclassification is a common audit finding.

How the calculation works

The math itself is simple. Getting the inputs right is not.

StepRule
1. Paid hoursSum eligible pay code hours for the month, based on work entry date
2. CapLimit each employee to 172 hours per month
3. Required spendCapped hours × the HCSO expenditure rate in effect for the year and size tier
4. CreditSubtract qualifying employer health care expenditures for that employee in the same period
5. Net duemax(required spend − employer spend, 0) per employee, then summed

The floor matters. Because the offset is applied per employee and floored at zero, an employee with rich coverage cannot subsidize an employee with none. Aggregate-level math understates what you owe.

Rates change annually and differ by employer size, so build the rate as a dated parameter, not a hardcoded constant.

Expenditure rates and employer size tiers

Employer size2026 rate2027 rate
Large - 100 or more workers$4.11 per hour$4.49 per hour
Medium - 20 to 99 workers (businesses), 50 to 99 (nonprofits)$2.74 per hour$2.99 per hour
Small - fewer than 20 workers (businesses), fewer than 50 (nonprofits)ExemptExempt

How employers are counted. Size is based on all workers anywhere, not just those in San Francisco, including temporary, staffing agency and PEO workers and working owners, measured as the quarterly average number of workers per week.

Managerial salary exemption thresholds

YearAnnualHourly
2025$125,405$60.29
2026$128,861$61.95
2027$131,763$63.35

Which hours count

HCSO counts hours paid, not hours worked. If the employee was compensated for the hour and the work was performed in San Francisco, it generally counts - whether they were on the clock, on paid leave, or in training.

Every payroll system names its earnings codes differently, so the practical task is classifying your own code set against the categories below rather than matching a fixed list.

CategoryCountsTypical codes
Straight-time worked hours, including multiple pay-rate variants for employees who work at more than one rateYesREG, RGH, base rate 2/3
Premium worked hours - overtime, double time, and their rate variantsYesOT, DT, OTP
Hours worked on a holiday, at whatever premium appliesYesHOLWRK, HOLOT
Paid holiday not workedYesHOL, FLOAT
Paid time off - PTO, vacation, sick, floating holiday, extended illness or sick banksYesPTO, VAC, SICK, EIB
Paid non-productive time - orientation, onboarding, training, paid educationYesORIENT, TRN, EDU
Paid leave under policy or statute - bereavement, jury duty, paid administrative leave, paid witness timeYesBRV, JURY, ADMIN
Other paid hours - reporting or show-up pay, paid on-call, modified or light dutyYesRPT, CALL, MOD
Unpaid leave, unpaid suspension, unpaid FMLANo-
Hours worked outside San FranciscoNo-
Independent contractor and 1099 hoursNo-
Dollar-only earnings with no hours attached - bonuses, lump sums, retro adjustments, expense reimbursementNo-

Two classification rules resolve most edge cases:

  • Was the hour paid? Not whether it was productive. Training, bereavement and jury duty count. Unpaid leave does not, even for an otherwise covered employee.
  • Does the code carry hours? Earnings codes that move dollars without an hours value - retro pay, bonuses, shift differentials booked as flat amounts - add nothing to the hour count even though they add to gross pay. Summing on gross rather than hours is a common source of overstatement.

Location tagging is the usual failure point. If your time system does not tag work location cleanly at the punch or job level, no amount of pay-code mapping will fix the numerator. Fix location first, then classify codes.

What counts as an employer health care expenditure

Qualifying spend is the employer-paid portion of health and welfare benefits for that employee in the period, generally:

  • Medical, dental and vision premiums for active enrollments
  • Contributions to the SF City Option (which is how many employers satisfy the requirement for part-time and variable-hour staff)
  • HSA contributions and qualifying reimbursement program payments

An enrollment is active in a month when its effective date is on or before month end and it has no end date, or an end date on or after month start. Missing enrollment data counts as $0 - which is exactly how underpayments happen.

Only irrevocable expenditures count. Since January 1, 2017 an expenditure qualifies only if the employee cannot lose the money. Insurance premiums and SF City Option contributions qualify. Health FSAs do not, because unspent funds expire. Raising wages instead of spending on health care does not satisfy the requirement either.

Deadlines, reporting and records

  • Quarterly expenditures are due within 30 days after the quarter ends: April 30, July 30, October 30 and January 30. The obligation is quarterly even though most employers track it monthly
  • Annual Employer Reporting Form filed with the Office of Labor Standards Enforcement, due April 30 each year, with the form available from April 1. For the 2025 reporting year OLSE set the deadline at May 1, 2026
  • Records retained for the period required by the ordinance: hours by employee, expenditure calculations, proof of payment, and any waiver forms
  • Notices. Post the current HCSO poster at every workplace, and give employees a Health Care Payment Confirmation when contributing on their behalf to the SF City Option

Penalties

ViolationPenalty
Unpaid required expenditures$100 per employee per quarter, plus the unmade expenditures recoverable with interest
Missing Annual Reporting Form$500 per quarter
Failure to keep records$500 per quarter
Missing required notice$25 per day per workplace
Retaliation$100 per person per day

Where HCSO reporting goes wrong

  • Hours from the wrong source. Pay-period hours instead of calendar-month hours shift dollars across quarter boundaries.
  • The 172-hour cap applied after aggregation rather than per employee per month.
  • Rehires. The 90-day waiting period should use the original hire date for eligible rehires within a year, otherwise the current hire date.
  • Using age 65 as a Medicare proxy. The exemption depends on documented Medicare or TRICARE eligibility, not on age. An age filter drops covered employees and understates the amount owed.
  • Stale exemption thresholds. The managerial salary exemption and the expenditure rate both change every year.
  • Benefit cost allocation. Employer-paid amounts stored at the plan level rather than the employee level cannot be netted correctly.

How Praisidio automates it

Praisidio builds the monthly HCSO worksheet directly from your payroll, time and benefits data:

  • Covered employee determination each month, with every exclusion rule applied and traceable
  • Paid hours by eligible pay code, capped at 172 per employee per month
  • Required contribution, employer health cost and net amount due, per employee and rolled up by month and quarter
  • Drill-down from any total to the employees and pay codes behind it, so an audit request takes minutes
  • Scheduled delivery to payroll, finance and benefits before each quarterly funding date

Praisidio connects to payroll, time and attendance, and benefits administration systems - see Integrations for the full list.

Frequently asked questions

Who counts as a covered employee?

An employee who has been employed more than 90 days, works at least 8 hours per week in San Francisco, and is not exempt. Managers, supervisors and confidential employees paid at or above the annual salary exemption threshold are excluded, along with employees eligible for Medicare or TRICARE and employees who sign a valid waiver. There is no age-based exemption.

How many hours count each month?

Hours paid, including paid leave such as PTO, vacation, sick and holiday, capped at 172 hours per employee per month.

How is the required spend calculated?

Capped hours multiplied by the health care expenditure rate in effect for the year and the employer's size tier. Qualifying employer health spending in the same period reduces the amount owed, and the balance never goes below zero.

What counts as a health care expenditure?

Employer-paid amounts for qualifying health and welfare benefits, typically medical, dental and vision premiums for active enrollments, along with contributions to the SF City Option, HSAs and reimbursement programs.

Do we have to file anything?

Yes. Covered employers file an annual Employer Reporting Form with the San Francisco Office of Labor Standards Enforcement and must keep supporting records.

Are contractors and 1099 workers included?

Hours worked by genuine independent contractors are not counted, but the label does not decide it - California’s ABC test governs worker status, and misclassification is a common audit finding.

Does holiday pay count toward HCSO hours?

Yes. HCSO counts hours paid, so a paid holiday not worked counts, and hours actually worked on a holiday count at whatever premium code they land in. What matters is that the hours were paid and the work location is San Francisco.

Does PTO count toward SF HCSO?

Yes. PTO, vacation, sick and floating holiday hours are paid hours and count toward the monthly total, subject to the 172-hour per employee per month cap. Unpaid leave does not count.

What is the 2026 HCSO expenditure rate?

$4.11 per hour for large employers with 100 or more workers and $2.74 per hour for medium employers. From January 1, 2027 the rates rise to $4.49 and $2.99.

When are HCSO expenditures and the Annual Reporting Form due?

Expenditures are due within 30 days after each quarter ends - April 30, July 30, October 30 and January 30. The Annual Employer Reporting Form is due April 30, and OLSE set the 2025 reporting year deadline at May 1, 2026.

Are employees over 65 exempt from HCSO?

No. The ordinance has no age exemption. The exemption applies to employees eligible for Medicare or TRICARE, which the employer must be able to document, so many employees aged 65 and over remain covered.

Do FSA contributions count as HCSO expenditures?

No. Since January 1, 2017 only irrevocable expenditures count, and health FSA funds can expire. Insurance premiums and SF City Option contributions do count.

This guide is general information about reporting requirements, not legal advice. Verify current rates, thresholds and deadlines against the San Francisco Office of Labor Standards Enforcement before you file.