# Time Entry Fields Reference

Every time entry in Invup is a record of work performed by a team member on a specific date, tracked against a project. This page documents each field on a time entry — what it means, whether you set it or the system manages it, and any constraints to be aware of.

---

## Field Reference

The table below lists every field on a time entry. Fields are grouped into three categories:

- **User-editable** — you provide these when creating or editing an entry
- **Conditional** — you may need to provide these depending on the project configuration
- **System-managed** — set automatically by Invup; you cannot edit these directly

| Field | Category | Required | Description |
| ----- | -------- | -------- | ----------- |
| Project | User-editable | Yes | The project this time entry is tracked against. Every entry must belong to a project. |
| Date | User-editable | Yes | The calendar date when the work was performed. |
| Duration | User-editable | Yes | How long the work took. Entered as hours and minutes in the form (e.g., 2 hours 30 minutes). Must be at least 1 minute. |
| Description | User-editable | No | Optional notes about the work performed. Maximum 1,000 characters. |
| Service | Conditional | Depends | The type of work performed (e.g., "Design", "Development"). Required when the project uses services; hidden when it does not. |
| Team member | Conditional | Depends | The team member who performed the work. When you log your own time, this is set automatically. Owners and admins can create entries on behalf of other team members by selecting them in the form. |
| Rate | System-managed | — | The hourly rate for this entry, resolved automatically from the [rate chain](https://docs.invup.me/books/time-tracking/page/rate-locking#bkmrk-how-rate-resolution-). You cannot set this directly — it is calculated based on the project, service, and team member combination. |
| Rate locked | System-managed | — | Whether the rate on this entry has been frozen. When locked, the rate no longer changes even if the underlying rate configuration is updated. See [Rate Locking](https://docs.invup.me/books/time-tracking/page/rate-locking) for details. |
| Rate source | System-managed | — | The level of the rate chain that provided the current rate (e.g., the project-level rate, the team member's base rate, or a project-service-member rate). Useful for understanding why a particular rate was applied. |

---

## User-Editable Fields in Detail

### Project

Every time entry must be associated with a project. When creating an entry, you select a project from a dropdown that lists all projects you are assigned to.

Changing the project on an existing entry may affect the resolved rate, since the rate chain depends on the project. If your organization uses the "At Creation" rate lock policy, the locked rate will be re-stamped when the project changes.

### Date

The date the work was performed. This is a calendar date with no time-of-day component.

The date also determines whether an entry is locked by a project's lock date. If the entry's date falls on or before the project's [lock date](https://docs.invup.me/books/time-tracking/page/rate-locking), the entry is fully locked for non-admin users.

### Duration

Time spent on the work. In the form, duration is split into two inputs:

- **Hours** — 0 to 23
- **Minutes** — 0 to 59

The total duration must be at least 1 minute. Internally, duration is stored as total minutes (e.g., 2 hours 30 minutes = 150 minutes).

### Description

Free-text notes about the work. This field is optional and supports up to 1,000 characters. If left blank, the entry displays "No description" in the time entries list.

### Service

Available only on projects that use services. When the project has services enabled, this field is required — you must select which service the work falls under (e.g., "Design", "Development", "Consulting").

The selected service affects rate resolution. Each service can have its own hourly rate at multiple levels, and the rate chain takes the service into account when calculating the entry's rate.

If the project does not use services, this field is hidden entirely.

### Team Member (admin only)

When owners or admins create a time entry, an additional **Member** field appears at the top of the form, allowing them to log time on behalf of any team member in the organization.

Regular team members do not see this field — their entries are automatically attributed to themselves.

---

## System-Managed Fields in Detail

### Rate

The hourly rate applied to this entry. Invup resolves the rate automatically by walking a prioritized chain of rate sources — from the most specific (e.g., a rate set for this team member on this service within this project) to the most general (e.g., the team member's base rate).

The exact chain depends on whether the project uses services. See [Rate Locking](https://docs.invup.me/books/time-tracking/page/rate-locking) for the full rate chain priority order.

You cannot manually set the rate on a time entry. To change it, update the rate at the appropriate level (project, service, team member, or a combination).

### Rate Locked

A yes/no indicator showing whether the rate has been frozen. A locked rate will not change even if you update rates elsewhere.

When and whether rates get locked depends on your organization's **rate lock policy**:

| Policy | When the rate locks |
| ------ | ------------------- |
| At Invoice | When the entry is included in an invoice |
| At Creation | Immediately when the entry is created |
| No Locking | Never — the rate is always calculated dynamically |

### Rate Source

Shows which level of the rate chain provided the entry's rate. This is helpful for auditing — if an entry's rate looks unexpected, the source tells you where to look.

Common sources include:

- **Project-service-member rate** — a rate set for this specific team member on this service within this project
- **Member-service rate** — a rate set for this team member on this service across the organization
- **Project-service rate** — the default rate for this service within this project
- **Service rate** — the service's base rate
- **Project-member rate** — a rate set for this team member on this project (non-service projects)
- **Project rate** — the project's default rate
- **Member rate** — the team member's base rate

---

## Uniqueness Constraint

Each time entry must be unique across the combination of **team member + project + date + service**. You cannot log two separate entries for the same team member on the same project, date, and service. If you need to record additional time, edit the existing entry's duration instead.

For projects without services, the constraint is **team member + project + date** — one entry per team member per project per day.

---

## Summary

| Category | Fields |
| -------- | ------ |
| User-editable | Project, Date, Duration, Description |
| Conditional | Service (if project uses services), Team Member (admin only) |
| System-managed | Rate, Rate Locked, Rate Source |