> ## 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.

# Document vault

> Upload, verify and organize employee documents; request missing ones; and what employees see of their own vault.

export const PermissionNote = ({perm}) => <Info>
    Requires the <code>{perm}</code> permission. Ask your administrator if an
    action described here is missing from your screen — see
    [Roles & permissions](/help/concepts/roles-and-permissions).
  </Info>;

<PermissionNote perm="document:read" />

Every employee has a **vault**: their identity documents, onboarding paperwork, education certificates, payroll documents and anything else you need on file. Find it on the **Documents** tab of their record.

## Categories

| Category      | Typical contents                                 |
| ------------- | ------------------------------------------------ |
| `IdentityKYC` | PAN, Aadhaar, passport.                          |
| `Onboarding`  | Offer letter, signed contract, background check. |
| `Education`   | Degrees, certifications.                         |
| `Payroll`     | Form 16, salary certificates, bank mandates.     |
| `Medical`     | Fitness certificates, insurance paperwork.       |
| `Performance` | Reviews, letters.                                |
| `Other`       | Everything else.                                 |

The vault groups documents by category and shows a summary of what is present and what has been requested but not supplied.

## Uploading

<PermissionNote perm="document:write" />

<Steps>
  <Step title="Choose the file and category">
    From the employee's Documents tab.
  </Step>

  <Step title="The file uploads directly to storage">
    OnTime issues a short-lived upload URL and your browser sends the bytes straight to storage — the file does not pass through the API server. This is why large documents upload at full speed.
  </Step>

  <Step title="Confirm">
    The upload is acknowledged and the document appears in the vault as **Pending**.
  </Step>
</Steps>

## Document status

| Status     | Meaning                                       |
| ---------- | --------------------------------------------- |
| `Pending`  | Uploaded, not yet checked by a human.         |
| `Verified` | Someone confirmed it is what it claims to be. |
| `Signed`   | Carries a signature.                          |

**Verifying** records who verified it, when, and why. This is a deliberate human step — uploading does not verify.

## Downloading

Downloads issue a short-lived link to the file in storage. The link expires; it is not a permanent URL you can share.

## Requesting missing documents

You can record that an employee owes you a document. It appears in their vault summary as outstanding.

<Warning>
  **Requesting records the intent but sends no notification.** The employee is not told. Follow up through your own channel, or use a message thread.
</Warning>

## Bulk download

<Warning>
  **"Bulk download" returns a manifest of download links, not a ZIP file.** You get a list of short-lived URLs, one per document, rather than a single archive. Downloading them is up to you.
</Warning>

## Deleting

Removes the database row and makes a best-effort attempt to delete the stored file.

<Note>
  Consider whether you should. Employment documents are often part of a statutory record, and deletion is not audited as a document-retention event.
</Note>

## What employees see

Employees see their own vault from the **Me** section of the employee app, and their tax documents on the **Pay** tab. They can view and download; they cannot verify or delete.

## Known limitations

* **No e-signature integration.** A `Signed` status records that a document carries a signature; OnTime does not collect one.
* **No retention policy or expiry tracking.** Documents do not expire and nothing prompts you to refresh an expiring certificate.
