> For the complete documentation index, see [llms.txt](https://docs.zipwire.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.zipwire.io/zipwire-approve/unboxing-key-concepts/timesheet-flags.md).

# Timesheet Flags

When a timesheet is submitted, Zipwire automatically scans it for conditions worth an approver's attention. Anything notable is surfaced as a **flag** — a short banner shown at the top of the timesheet view.

Flags don't block approval. They're information, not a verdict.

## How Flags Are Computed

Flags are calculated twice: at submission, and again if a processor later adjusts which billing units are billed. This keeps them in sync with the current billed state rather than just a snapshot from when the timesheet was first sent.

The one exception is [Overlapping Dates](#overlapping-dates), which is decided once, when the timesheet is created, because it depends on the sender's other timesheets rather than the sheet alone.

<figure><img src="https://2043460614-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHxyMYVA40GzHDzjJfPrg%2Fuploads%2Fgit-blob-6e6b794e29d4d7435246c3c1aad14f5f5f86ba9c%2Ftimesheet-flags-overworked.png?alt=media" alt="Timesheet view showing a &#x27;Something to flag — Overworked&#x27; banner, with Monday showing 9 billed hours against a standard 8-hour day"><figcaption><p>The flag banner appears at the top of the timesheet. Here, Monday was billed at 9 hours — one hour over the standard day.</p></figcaption></figure>

## The Flags

### Holiday Worked

Time was logged on a public holiday. Zipwire checks the timesheet's locale (e.g. `en-GB`, `en-US`) against a public holiday calendar. The flag fires on any day where minutes were logged — regardless of whether those hours ended up being billed.

### Weekend Worked

Time was logged on a Saturday or Sunday.

### Overworked

The sender billed **more** units than the standard day length defined in their billing plan. For example, if the standard is 8 hours and the sender billed 9 hours on a Monday, this flag appears. Standard hours are taken from the active billing plan; the fallback is 8 hours if no plan is found.

### Underworked

The sender billed **fewer** units than standard — a partial day where a full day might have been expected. Same calculation as Overworked, but in the other direction.

### Foreign Activities

One or more activities on the timesheet belong to a **different assignment** than the one the workflow was created for. This can happen when a sender works across multiple assignments and logs time against the wrong one. Only applies to assigned workflows.

### Multiple Workplaces

Activities reference more than one workplace. Most timesheets are scoped to a single workplace, so this may indicate cross-billing or a data entry error.

### Billing Plan Change Mid-Period

The sender's rate plan changed partway through the timesheet period. This is legitimate but worth noting — different rates may apply to different days within the same sheet.

### No Rate Plan

The timesheet is on a workplace-assigned workflow but all financial totals are zero. This typically means no rate plan was in effect at billing time; the sender may have submitted before their contract was fully configured.

### Overlapping Dates

The timesheet covers at least one day that another of the sender's timesheets on the **same workflow** also covers. Zipwire checks this when the sheet is created, against the sender's sheets from the last three months. Sheets that were retracted or rejected are ignored, because their days are free to be billed again.

Ranges are inclusive at both ends, so two back-to-back weeks don't overlap, but two ranges that share a single day do.

{% hint style="info" %}
**It's usually safe to ignore**

Zipwire knows which journal entries have already been put on a timesheet. Once an entry is on a sheet it isn't offered again when the sender creates the next one, even if they chose not to bill some of its units. So two sheets with overlapping dates don't, by themselves, bill the same work twice.

The case worth a second look is when a sender goes back into their journal, records **more** time on a day that is already on a sent sheet, and then raises a new sheet for it. Those new entries are genuinely new work, but the approver should check the extra time isn't a repeat of what was already billed.
{% endhint %}

Common innocent causes are a month-long sheet created after some of its weeks were already sent, a sender adding forgotten time to a past week, or a hand-edited date range that happens to touch an existing sheet.
