> ## Documentation Index
> Fetch the complete documentation index at: https://developer.klikit.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Run a stocktake

> The count-to-approval workflow: staff count on the app, a manager approves in the dashboard, stock and the ledger update.

A stocktake is a physical count of a branch's tracked ingredients. It has two
sides: **staff count** in the klikit app, and a **manager approves** in the
dashboard. Only an approved stocktake changes stock.

## Staff side — count and submit (klikit app)

<Steps>
  <Step title="Start a stocktake">
    Staff start a stocktake for their branch. Depending on the branch setup,
    the entry point is either the **shift-start prompt** (when a pre-shift count
    is required) or an **ad-hoc "Stocktake" action** on the home screen (for
    branches where it isn't mandatory).

    <Note>
      If the branch has no tracked ingredients, the count sheet is empty. See
      [Set up ingredients](/inventory/setup).
    </Note>
  </Step>

  <Step title="Count each ingredient">
    The app lists every tracked ingredient with its **unit** (g, kg, ml, …) so
    there's no ambiguity about what to enter. A **"X of Y counted"** progress
    indicator tracks how far along the count is on large sheets.
  </Step>

  <Step title="Give a reason for any variance">
    If a counted quantity differs from what's expected, the app asks for a
    **variance reason** so the difference is explainable. A reason is
    **required** when the variance is significant (10% or more of the expected
    quantity) — the count can't be submitted without one:

    * **Supplier Short Delivery** — received less than ordered
    * **Wastage** — spoilage, prep loss, breakage
    * **Opening Stock Adjustment** — correcting a bad starting balance
    * **Theft** — suspected loss
    * **Other** — anything else (add a note)
  </Step>

  <Step title="Submit for approval">
    When the count is complete, staff submit it. The session goes to
    **Submitted** and is now waiting on a manager. The submitting staff member is
    recorded so approval is accountable.
  </Step>
</Steps>

<Tip>
  **End-of-shift count.** When a branch is configured for it, closing a shift
  prompts an end-of-shift stocktake — this is what makes per-shift consumption
  measurable (opening count vs. closing count).
</Tip>

## Manager side — approve or reject (dashboard)

Open **Inventory → Stocktakes** to find the **approval queue** of submitted
counts.

<Steps>
  <Step title="Review the count">
    Each session shows **Counted by** and **Submitted by** (real staff names),
    and a per-ingredient breakdown of counted vs. expected, the **variance**,
    and its **cost impact**. The reasons staff selected feed the
    [variance-by-reason report](/inventory/reports).
  </Step>

  <Step title="Approve">
    Approving is the moment stock changes: the system adjusts each ingredient's
    stock level to the physical count and writes an immutable **ledger** entry for
    every adjustment. It's a single, all-or-nothing action.
  </Step>

  <Step title="…or reject with a reason">
    If something looks off, reject with a reason. The staff member sees the
    **rejection reason** on their side so they know exactly what to recount — no
    guessing. Nothing is adjusted on a reject.
  </Step>
</Steps>

<Info>
  **Oldest first.** When a branch has more than one submitted stocktake, they must
  be approved (or rejected) in the order they were submitted. Newer sessions show
  as **blocked** until the earlier one is resolved — approving out of order would
  compute variance against stale expected quantities.
</Info>

## Session states

| State           | Meaning                                        |
| --------------- | ---------------------------------------------- |
| **Open**        | Created, nothing counted yet                   |
| **In Progress** | First quantities saved — the count is underway |
| **Submitted**   | Count complete, waiting for a manager          |
| **Approved**    | Manager accepted — stock + ledger updated      |
| **Rejected**    | Sent back with a reason for a recount          |

<Note>
  Only **Approved** stocktakes move stock and appear in the variance report as real
  shrinkage. Rejected/abandoned counts never touch stock.
</Note>

Next: [Reports & movements](/inventory/reports).
