> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ontime.hosai.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Go-live checklist

> Everything that must be true before your first real payroll cycle runs on OnTime data.

Work top to bottom. Each item is a precondition for something below it — geofences before punches, punches before payroll, payroll before filings.

## Organization

<Steps>
  <Step title="Organization profile is complete">
    Display name, legal name, country and currency are set, and the off-site punch reasons match how your people actually work. [Settings → Organization](/help/admin/organization).
  </Step>

  <Step title="Locations exist, with correct geofences">
    Every place people work is a [location](/help/people/departments-and-locations), and its latitude/longitude/radius is right. Walk the perimeter with a phone if you can — a radius that is too tight turns ordinary arrivals into exceptions, and one that is too loose makes the check meaningless.
  </Step>

  <Step title="Departments exist">
    Used for filtering, reporting and roster grouping. See [Departments and locations](/help/people/departments-and-locations).
  </Step>
</Steps>

## Time policy

<Steps>
  <Step title="Shift templates are created and published">
    Times, unpaid break, grace period, half-day cutoff, weekly offs, and the overtime rules. A draft template cannot be rostered — publish it. See [Shift templates](/help/scheduling/shift-templates).
  </Step>

  <Step title="Rosters are published for the first period">
    Assigning cells is not enough. Until a week is **published**, employees and managers do not see it, and the day engine has no shift to judge against. See [Rosters](/help/scheduling/rosters).
  </Step>

  <Step title="The holiday calendar is loaded">
    Import last year's calendar and adjust, or add each holiday. Holidays change what a no-punch day means — with the calendar loaded, such a day is `Holiday` rather than `Absent`, and payroll does not debit it as loss of pay. See [Holidays](/help/scheduling/holidays).
  </Step>
</Steps>

## People and access

<Steps>
  <Step title="Employees are loaded, with manager links">
    Every employee has a department, a location, a shift and — critically — a **manager**. Approvals route on the direct-manager link; an employee with no manager has nobody to approve their leave. See [The employee directory](/help/people/directory).
  </Step>

  <Step title="Imported employees have real passwords">
    CSV import generates a random password that is never shown. Set a real one on each imported employee before go-live, or they cannot sign in.
  </Step>

  <Step title="Roles are reviewed">
    Confirm who is Admin, HR, Manager and Employee. Pay attention to who holds HR rights — that permission overrides the direct-manager restriction across the whole organization. See [Roles & permissions](/help/concepts/roles-and-permissions) and the [roles editor](/help/admin/roles-editor).
  </Step>
</Steps>

## Leave

<Steps>
  <Step title="Leave types are configured">
    Quota, accrual method and rate, carry-forward cap, half-day allowance, paid flag, and whether an HR second approval step is required. See [Leave types and policies](/help/leave/types-and-policies).
  </Step>

  <Step title="Opening balances are correct">
    Employees joining mid-year rarely start at zero. Check what each person's balance shows before the first request lands. See [Balances and accrual](/help/leave/balances-and-accrual).
  </Step>
</Steps>

## Capture hardware

<Steps>
  <Step title="Biometric terminals are registered">
    Each terminal appears by serial once the connector has forwarded its first message. Register the ones you recognize. See [Register a terminal](/terminals/register-a-terminal).
  </Step>

  <Step title="Terminal users are mapped to employees">
    A terminal identifies people by its own numeric user ID. Until that ID is mapped to an OnTime employee, punches from it are **parked** rather than applied. Clear the **Unclaimed users** queue on the Devices page — mapping replays what was parked. See [Map terminal users](/terminals/map-terminal-users).
  </Step>

  <Step title="The connector is running with a real secret">
    Not the development default. Generate a strong `CONNECTOR_SECRET` and confirm the connector reaches your OnTime instance over HTTPS. See [Install the connector](/terminals/install-the-connector).
  </Step>
</Steps>

## Payroll and compliance

<Steps>
  <Step title="Salary components are defined">
    Earnings and deductions, with the calculation type each uses. See [Salary components](/help/payroll/components).
  </Step>

  <Step title="Compensation is set for every employee">
    Anyone without a salary structure will calculate to nothing. See [Compensation](/help/payroll/compensation).
  </Step>

  <Step title="Run one cycle as a dry run">
    Start a cycle on a past month, freeze, calculate, and read the review screen — but do not disburse. Check the flagged rows: high loss-of-pay, high overtime, and large variance against the previous month are exactly where a bad geofence or an unmapped terminal shows up as money. See [Running a cycle](/help/payroll/running-a-cycle).
  </Step>
</Steps>

<Warning>
  Disbursing a cycle materializes payslips and is the point of no return for that month. Do the dry run first.
</Warning>
