# From shift draft to payroll

**For:** Manager | Admin
**You'll need:** Nothing.

A shift travels through five stages between *pencilled in* and *paid*. The same record carries the data the whole way — there is no hand-off, no separate "payroll system" to sync with. This article walks each transition: what triggers it, what flips, and what locks behind you.

## The flow at a glance

```
Draft
  │  publish
  ▼
Published
  │  clock-in / clock-out  →  confirm
  ▼
Confirmed
  │  manager approve  (locks the row)
  ▼
Approved
  │
  ▼
Payroll export
```

Each arrow is a deliberate action by a specific role. Each transition narrows what's still editable.

## 1. Draft — the planner's sandbox

A new shift is **Draft**. Visible to planners and managers; **invisible to shift workers**. Free to move, resize, reassign, or delete.

This is where most of your work happens. Bring shifts in from a {doc}`schedule template </plan-schedules/schedule-templates/index>`, a {doc}`recurring pattern </plan-schedules/shifts/recurring/index>`, or {doc}`Alt+drag </plan-schedules/shift-calendar/duplicate-a-shift>`. Validate against your team in the {doc}`coverage grid </plan-schedules/coverage/index>` and the {doc}`assignment dropdown </plan-schedules/assignments/index>`. Iterate until you're happy.

Anyone you assign to a draft shift sees nothing yet — an assignment's visibility follows the shift.

## 2. Published — released to the team

You promote drafts in bulk from the {doc}`publish horizon </plan-schedules/publish-horizon/publish-up-to-a-cutoff>`: pick a cutoff date and {{ app_name }} flips every draft shift starting on or before that date to **Published**. The people on each shift see it the moment it publishes — there's no separate assignment to publish.

What changes:

- Workers see the shifts on their calendar.
- If {doc}`shift acceptance </settings-and-admin/company-settings/shift-acceptance>` is on, each assignee is asked to accept or decline.
- The shifts feed availability and coverage as committed work.
- Managers can still edit, but edits are now visible to assignees.

Published the wrong batch? **Unpublish** retracts a shift to draft — as long as nobody has clocked in and it hasn't started. Once a shift has run or its hours are approved, cancel it instead; the worker sees the cancellation but the shift stays on the calendar as a record. See the full state diagram in {doc}`/plan-schedules/shifts/lifecycle`.

## 3. Confirmed — the clock data is in and signed off

Once a published shift starts, workers (or a manager on their behalf) clock in and out. When the hours are **confirmed** — recorded and signed off as correct — the assignment is **Confirmed**.

Confirmation is what makes the time real. Specifically, it:

- Locks in the worked hours that drive overtime tiers and premiums.
- Triggers leave accrual for accrual-style policies.
- Triggers {doc}`time-comp accrual </rules-and-compliance/time-compensation/auto-accrual>` for time-comp policies.

Who confirms depends on your company's **time approval mode**. In manager-approval-only mode a manager confirms; in employee-confirmation mode the worker confirms their own hours first (most often just by clocking out at the kiosk). Either way, a confirmed entry is still editable — **Undo confirmation** clears the clock data and reverses the accruals.

See {doc}`/track-time/timesheet/how-confirmation-works`.

## 4. Approved — the manager signs off, the row locks

A manager reviews confirmed entries on the {doc}`timesheet </track-time/timesheet/index>` and approves them. **Approved** is the sign-off state — and it's the only lock in the flow. In employee-confirmation mode, a manager can't approve a row until it's confirmed.

Approval **locks the underlying shift** — you can't change times, position, or assignment after approval without first unapproving. There's no separate "close the books" step: you approve each row, and an approved row is frozen until someone unapproves it. **Unapprove** clears the audit stamp and re-opens the entry.

Approving every row for a pay cycle is your contract with payroll: *the numbers won't move under you.*

## 5. Payroll export

The {doc}`payroll summary </reports-and-payroll/payroll-summary>` is the final view. It groups time entries by person inside a pay cycle (the cycle length comes from your **payroll frequency** in company settings) and totals regular hours, overtime tiers, premiums, paid and unpaid absence, time-comp, and gross pay. By default the report includes Published, Confirmed, and Approved entries — filter to **Approved-only** for a clean, signed-off export.

Export the report to CSV, XLSX, or PDF and hand it to your payroll vendor.

Payment itself doesn't have a status — once you've exported, the payroll vendor takes over.

## What locks behind you, in order

| State | What you can still change |
| --- | --- |
| Draft | Everything |
| Published | Everything; edits notify workers |
| Confirmed | Times, breaks, assignment; confirmation can be undone (editing the times clears it) |
| Approved | Nothing, until **unapproved** |

When a save is refused, unapprove the entry. See {doc}`/plan-schedules/shifts/locked-period-rejections`.

## The other people in the flow

- **Shift worker** — sees the shift only after publish. Can confirm their own hours (most often by clocking out at the kiosk) or have a manager confirm on their behalf.
- **Manager** — publishes, approves, exports.
- **Admin / Owner** — configures the payroll frequency, leave year, and work rules that the export totals run on.

## Related

- {doc}`how-the-data-fits-together`
- {doc}`three-ways-to-build-a-schedule`
- {doc}`/plan-schedules/shifts/lifecycle`
- {doc}`/plan-schedules/publish-horizon/index`
- {doc}`/track-time/timesheet/index`
- {doc}`/reports-and-payroll/payroll-summary`
