Time Tracking

Creating time entries, understanding rates, and managing tracked time.

Overview

Time tracking in Invup lets your team log the hours they spend on projects, so you have accurate records for billing, reporting, and payroll. Every time entry captures who did the work, when, how long it took, and — if your projects use services — what type of work it was. Invup automatically resolves the applicable hourly rate for each entry, giving you a clear picture of billable value without manual calculations.


Key Concepts

Time Entries

A time entry is a single record of work. It includes a project, a date, a duration, an optional service, and an optional description. Each entry is attributed to the team member who logged it, and Invup calculates the applicable hourly rate automatically.

For a detailed breakdown of every field, see Time Entry Fields Reference.

Projects

Every time entry belongs to a project. Projects are how you organize work for different clients or engagements — for example, an accounting firm might have separate projects for each client's annual audit, while a marketing agency might create projects per campaign.

Projects can optionally use services to categorize work further. See the Projects book for more.

Services

Services represent the types of work your organization performs — things like "Tax Advisory", "Design", "Strategy", or "Litigation". When a project has services enabled, team members select a service when logging time, which helps categorize entries and enables service-level rate control.

Services are optional. If your projects don't need that level of categorization, you can track time directly against projects without services.

For more on services, see the Services book.

Rates

Invup automatically resolves an hourly rate for each time entry by walking a prioritized rate chain — from the most specific rate (e.g., a rate for this team member on this service within this project) down to the most general (e.g., the team member's base rate). The first rate found in the chain is the one that applies.

You can configure rates at multiple levels to match how your organization bills. For a full explanation of the rate chain and rate locking, see Rate Locking.


How Time Tracking Connects to Invoicing

Time entries provide the data you need to build accurate invoices. Each entry's duration and resolved rate give you the billable amount for that piece of work. When you create an invoice, you can reference your time entries to build line items that reflect the actual work performed.

Rate locking ensures billing integrity — once a rate is locked on a time entry (either at creation or at invoicing, depending on your organization's rate lock policy), future rate changes won't retroactively alter amounts that have already been billed.


Who Can Track Time

All team members in your organization can log time entries against projects they're assigned to. The table below summarizes what each role can do:

Capability Contributor Team Member Admin / Owner
Log their own time entries Yes Yes Yes
Edit / delete their own entries Yes Yes Yes
View all team members' entries No No Yes
Edit / delete other members' entries No No Yes
Log time on behalf of another team member No No Yes
Delete locked entries No No Yes
Manage rate lock policy and project lock dates No No Yes

Contributors and team members can only see and manage their own entries. Admins and owners have a separate view that shows all entries across the organization, with the ability to filter by team member.


What You Can Do

Here's a quick summary of the time tracking capabilities available in Invup:


What's in This Book

Page Description
Time Entry Fields Reference Detailed reference for every field on a time entry — what it means, whether it's user-editable or system-managed, and its constraints.
Bulk Managing Time Entries How to select, filter, sort, and bulk-delete time entries. Covers admin vs team member permissions.
Rate Locking How rate lock policies and project lock dates protect your billing data from retroactive changes. Includes the full rate chain priority order.

How to Create a Time Entry

This guide walks through creating a time entry in Invup — from opening the form to saving the entry. For a reference of every field and its constraints, see Time Entry Fields Reference.


Creating a Time Entry

  1. Navigate to the Time Entries page.
  2. Click the + button in the top-right corner of the table. The "Add Time Entry" form opens.
  3. Fill in the required and optional fields (detailed below).
  4. Click Save.

Member - Add Time Entry in Dashboard.png

A success notification confirms the entry was created.


Form Fields

Project (required)

Select the project this work is tracked against. The dropdown lists all projects you're assigned to.

The project you choose affects which service options are available (if any) and which hourly rate is applied to the entry. Selecting the right project is important for accurate billing — for example, if a law firm tracks time for multiple clients, each client should have its own project.

Service (conditional)

If the selected project has services enabled, a Service dropdown appears. You must select a service — it's required on service-based projects.

The service list is filtered to show only the services you're assigned to on the selected project. If you switch to a different project or team member, the service selection resets.

If the project does not use services, this field is hidden entirely.

Member - Add Service Time Entry in Dashboard.png

Date (required)

The date the work was performed. Defaults to today's date. Pick a different date if you're logging time retroactively.

If the date falls on or before the project's lock date, the entry cannot be created by regular team members or contributors. Only admins and owners can create entries within a locked period.

Duration (required)

How long the work took. Duration is entered as two separate fields:

The total duration must be at least 1 minute. For example, a 2.5-hour meeting would be entered as 2 hours and 30 minutes.

Description (optional)

Free-text notes about the work performed. Maximum 1,000 characters. Use this to capture what you worked on — for example, "Reviewed Q1 financial statements" or "Initial brand strategy workshop with client team".

If left blank, the entry displays "No description" in the time entries list.


Admin: Creating Entries for Other Team Members

Owners and admins see an additional Member field at the top of the form. This lets them log time on behalf of any team member in the organization — useful when a team member forgets to log their hours or when an admin is cleaning up records.

Admin - Add Time Entry in Dashboard.png

When a team member is selected, the service dropdown is filtered to show only the services that team member is assigned to on the chosen project.

Regular team members and contributors do not see this field — their entries are always attributed to themselves.


Adding Multiple Entries Quickly

When logging several entries in a row, toggle the Add another switch at the bottom of the form. With this enabled, saving an entry keeps the form open and resets most fields so you can immediately create the next one.

The form preserves the project selection (on service-based projects) and the selected team member (for admins), so you only need to fill in the fields that change between entries.


How Rates Are Assigned

You don't need to enter a rate manually. Invup automatically resolves the applicable hourly rate for each time entry by walking a prioritized rate chain. The rate depends on the combination of project, service, and team member.

After an entry is saved, you can see the resolved rate in the time entries list. If your organization uses the "At Creation" rate lock policy, the rate is frozen immediately and won't change even if you update rates later. See Rate Locking for details.


Uniqueness Constraint

Each time entry must be unique across the combination of team member + project + date + service. If you try to create a second entry for the same team member, project, date, and service, you'll receive an error. Edit the existing entry's duration instead to add more time.

For projects without services, the constraint is team member + project + date — one entry per team member per project per day.


Admin View vs Team Member View

The time entries page works differently depending on your role:

Team Member / Contributor Admin / Owner
What you see Your own entries only All entries across the organization
Creating entries For yourself only For any team member
Member column Not shown Shown — displays who logged each entry
Member filter Not available Available — filter by team member

Admin - All Time Entries List.png


Tips for Accurate Time Tracking

Understanding the Rate Hierarchy

Invup lets you set hourly rates at multiple levels — on a team member, a service, a project, or any combination of the three. When a time entry is created, Invup needs to decide which rate applies. This page explains how that decision works.


The Problem

Imagine an accounting firm where:

When the senior accountant logs an hour of Tax Advisory work on that project, which rate should Invup use? $325/hr — the most specific rate that matches the exact combination of team member, service, and project.

This is the core principle: the most specific rate wins.


Two Rate Chains

Invup uses two different rate chains depending on whether the project uses services.

Service-Based Projects

When a project has services enabled and a time entry includes a service, Invup checks these levels in order and uses the first rate it finds:

Priority Rate Level What It Is Where to Set It
0 Non-billable check If the service is marked non-billable, the rate is always $0.00 Service detail page — Billable checkbox
1 Project-service-member rate A rate for this team member on this service within this project Project form — service card, member rate input
2 Member-service rate A rate for this team member on this service, across all projects Service detail page — Member Rate Overrides
3 Project-service rate A rate for this service on this project Project form — service card, Service Rate input
4 Service base rate The service's default hourly rate Service detail page — Hourly Rate field
5 Project rate The project's default hourly rate Project form — Hourly Rate field
6 Member base rate The team member's organization-level base rate Team member settings — Base Rate field

Non-Service Projects

When a project does not use services (or no service is selected), the chain is simpler:

Priority Rate Level What It Is Where to Set It
1 Project-member rate A rate for this team member on this project Project form — member rate input
2 Project rate The project's default hourly rate Project form — Hourly Rate field
3 Member base rate The team member's organization-level base rate Team member settings — Base Rate field

How Resolution Works

The rules are straightforward:

  1. Invup walks the chain from top to bottom (most specific to least specific).
  2. The first non-null rate wins. As soon as Invup finds a rate at any level, it stops looking and uses that rate.
  3. $0.00 is a valid rate. A rate of zero does not fall through to the next level — it means "this work is free" and is used intentionally.
  4. If no rate is found at any level, the time entry has no rate. This can happen if no rates are configured anywhere in the chain.

Examples

Example 1: No overrides — Falls back to member base rate

Setup — Law firm: A paralegal at a law firm has a base rate of $95/hr. The project "Smith Estate Planning" has no project rate set, and the project doesn't use services.

Level Rate Result
Project-member rate Not set Skip
Project rate Not set Skip
Member base rate $95/hr Used

Resolved rate: $95/hr (from the team member's base rate)

Example 2: Project-member rate overrides the base rate

Setup — Marketing agency: A copywriter has a base rate of $120/hr. On a specific client project "Acme Brand Refresh", the agency has set a project-member rate of $150/hr for this copywriter because the client's contract specifies a higher rate.

Level Rate Result
Project-member rate $150/hr Used
Project rate $130/hr Skipped
Member base rate $120/hr Skipped

Resolved rate: $150/hr (from the project-member rate — the most specific match)

Example 3: Service rate with a project override

Setup — Architecture firm: The "Schematic Design" service has a base rate of $175/hr. On a large commercial project, the firm has set a project-service rate of $200/hr for Schematic Design because the project scope warrants a premium.

Level Rate Result
Non-billable check Billable Continue
Project-service-member rate Not set Skip
Member-service rate Not set Skip
Project-service rate $200/hr Used
Service base rate $175/hr Skipped
Project rate $160/hr Skipped
Member base rate $140/hr Skipped

Resolved rate: $200/hr (from the project-service rate)

Example 4: Most specific level wins — Project-service-member rate

Setup — Consulting firm: A senior consultant has a base rate of $250/hr. The "Strategy" service has a base rate of $300/hr. The senior consultant has a member-service rate of $350/hr for Strategy. On a specific project for a long-standing client, the firm has negotiated a discounted project-service-member rate of $275/hr.

Level Rate Result
Non-billable check Billable Continue
Project-service-member rate $275/hr Used
Member-service rate $350/hr Skipped
Project-service rate Not set Skipped
Service base rate $300/hr Skipped
Project rate $280/hr Skipped
Member base rate $250/hr Skipped

Resolved rate: $275/hr (from the project-service-member rate — the most granular level)

Even though the consultant's member-service rate ($350/hr) is higher, the project-service-member rate takes priority because it's more specific.

Example 5: Non-billable service short-circuits the chain

Setup — Any organization: A team member logs time to the "Internal Meetings" service, which is marked as non-billable. It doesn't matter what rates are configured at any other level — the non-billable check happens first.

Level Rate Result
Non-billable check Non-billable → $0.00 Used

Resolved rate: $0.00 (non-billable services always resolve to zero)


Rate Source Reference

Every rate level has a label that Invup stores alongside the resolved rate (when rate locking is active). This tells you exactly where the rate came from:

Rate Level Source Label Where to Configure
Non-billable non-billable Service detail — Billable checkbox
Project-service-member rate project-service-member-rate Project form — service card → member rate
Member-service rate member-service-rate Service detail — Member Rate Overrides
Project-service rate project-service-rate Project form — service card → Service Rate
Service base rate service-rate Service detail — Hourly Rate
Project rate project-rate Project form — Hourly Rate
Project-member rate project-member-rate Project form — member rate (non-service projects)
Member base rate member-rate Team member settings — Base Rate

You can see which rate source was used on any time entry in the time entries list. For details on how rates get frozen and what the source label means, see Rate Locking.


Frequently Asked Questions

What happens if no rate is set at any level?

The time entry will have no rate. This means it won't contribute to billable totals. To avoid this, set at least a base rate on each team member or on each project.

Can I set a rate of $0.00 intentionally?

Yes. A rate of $0.00 is valid and will not fall through to the next level. Use this when you want to explicitly mark work as having no charge — for example, a pro bono project for a nonprofit client.

If I change a rate, does it affect past time entries?

It depends on your organization's rate lock policy:

Does the non-service chain ever apply to a service-based project?

No. If the project has services enabled, the service chain is always used for entries that include a service. The non-service chain only applies to projects that do not have services enabled.

Where should I set rates if I want the simplest setup?

Start with member base rates — set a default hourly rate for each team member. This provides a fallback for every time entry. Then layer on overrides only where you need them (e.g., a higher rate for a specific service, or a discounted rate for a specific client project).

Rate Locking

Rate locking freezes the hourly rate on a time entry so that future rate changes don't retroactively alter historical billing data. This page covers the two mechanisms Invup provides — rate lock policies (which control when a rate is frozen on individual entries) and project lock dates (which prevent all modifications to entries before a given date).


Why Rate Locking Exists

Without rate locking, changing a team member's hourly rate would ripple backward through every time entry that team member has ever logged. A rate increase meant to apply going forward could silently inflate past totals that have already been invoiced, creating discrepancies between what was billed and what the system now reports.

Rate locking preserves billing integrity by capturing the rate that was in effect at the moment that matters — either when the entry was created or when it was invoiced — and making that rate permanent.


Rate Lock Policies

The Rate Lock Policy is an organization-level setting that controls when an entry's rate gets frozen. You can find it under Settings > Time Entries.

Admin - Rate Locking Policy.png

There are three policies:

At Invoice (default)

Rates are frozen when a time entry is included in an invoice. Until that point, any rate change you make will apply retroactively to existing entries. This is the best option if you want maximum flexibility to adjust rates before billing.

At Creation

Rates are frozen the moment a time entry is created. The rate that applies at creation time is captured and stored permanently on the entry. Future rate changes do not affect existing entries — only new entries going forward.

This is the most conservative option. It's a good fit if your billing rates rarely change mid-engagement or if you need a clear audit trail of exactly what rate was in effect when work was logged.

No Locking

Rates are always calculated dynamically. Changing a rate at any level affects all time entries — past and future. Use this only if you intentionally want rate changes to propagate everywhere (e.g., correcting a rate that was entered incorrectly from the start).


How Rate Resolution Works

When a time entry is created, Invup resolves the applicable rate by walking a prioritized chain. The first non-null rate wins. The chain differs depending on whether the project uses services.

Service-based projects:

Priority Source Description
0 Non-billable check If the service is marked non-billable, the rate is $0.00
1 Project-Service-Member rate Rate set for this specific team member on this service within this project
2 Member-Service rate Rate set for this team member on this service (organization-wide)
3 Project-Service rate Rate set for this service within this project
4 Service base rate The service's default hourly rate
5 Project rate The project's hourly rate
6 Member base rate The team member's organization-level base rate

Non-service projects:

Priority Source Description
1 Project-Member rate Rate set for this team member on this project
2 Project rate The project's hourly rate
3 Member base rate The team member's organization-level base rate

When a rate is locked (under the "At Creation" or "At Invoice" policy), both the resolved rate and its source are stored on the time entry. This is called the locked rate source — it tells you which level of the chain provided the frozen rate (e.g., project-service-member-rate, project-member-rate, member-rate, etc.).


What Happens When You Change a Rate After Entries Are Locked

Scenario Locked entries Unlocked entries
You change a team member's project rate Keep their original locked rate Recalculated dynamically using the new rate
You change a service rate Keep their original locked rate Recalculated dynamically using the new rate
You detach a service from a locked entry Locked rate and source are preserved — the entry remembers the rate even though the service link is gone N/A

In short: locked entries are immutable with respect to their rate. The lock icon in the UI makes this visible at a glance.


Re-stamping on Update

When the "At Creation" policy is active and you update a time entry's project or service (the fields that affect which rate chain is used), the locked rate is re-stamped. The system resolves the new rate based on the updated project/service combination and freezes that instead.

Changing non-rate-affecting fields (duration, description, date) preserves the original locked rate.


Project Lock Date

The project lock date is a separate, complementary mechanism. While the rate lock policy controls whether a rate is frozen, the project lock date controls whether an entry can be modified at all.

Each project has an optional "Lock entries until" date field, found on the project details page.

Admin - Lock Entries Until.png

How It Works

Advancing the Lock Date

When you move the lock date forward, entries that were previously editable become locked. For example, if the lock date is January 31 and you advance it to February 28, all February entries are now locked too.

Admin - Locking Time Entries.png

A confirmation dialog appears whenever you set or advance the lock date, warning that all entries on or before the chosen date will become locked.

Permissions

Member - Locked Time Entry.png


Identifying Locked Entries in the UI

There are two lock indicators on the time entries list:

  1. Date column lock icon — A small lock icon appears next to the date when the entry falls on or before the project's lock date. Hovering shows the tooltip: "Locked — period has been invoiced." This indicates the entire entry is locked (no edits or deletes allowed for non-admin users).

  2. Rate column lock icon — A small lock icon appears next to the rate value when the entry has a frozen rate. Hovering shows the tooltip: "This rate is locked." This indicates the rate won't change even if the underlying rate configuration is updated.

An entry can have both indicators simultaneously (e.g., an entry within the lock date range that also has a frozen rate), or just one (e.g., a rate locked at creation on an entry that's still within the editable date range).


Summary

Mechanism What it protects Configured at Who can configure
Rate Lock Policy The hourly rate on individual entries Organization settings Owner / Admin
Project Lock Date The entire entry (no create, edit, or delete) Project details Owner / Admin

Both mechanisms work together to ensure that historical time tracking data remains accurate and consistent with what has been billed.

Bulk Managing Time Entries

Invup lets you select multiple time entries and act on them at once — useful when you need to clean up test data, remove duplicate entries, or clear out entries from a cancelled project. This page covers how to select, filter, sort, and bulk-delete time entries.


Selecting Time Entries

The time entries list has a checkbox on each row. You can select entries one at a time, or use the checkbox in the table header to select all entries on the current page.

Once at least one entry is selected, an actions menu (three-dot icon) appears in the table toolbar. This menu contains the available bulk actions.


Bulk Deleting Time Entries

To delete multiple time entries at once:

  1. Select the entries you want to delete using the row checkboxes.
  2. Open the actions menu and click Delete.
  3. A confirmation dialog appears showing how many entries will be deleted — for example, "Are you sure you want to delete these 5 time entries?"
  4. Confirm the deletion.

A success notification confirms the entries were removed. You can delete up to 100 entries at a time.

Locked entries

If a time entry falls on or before a project's lock date, it cannot be deleted by regular team members or contributors. Locked entries show a lock icon next to their date and have their action buttons disabled. See Rate Locking for details on project lock dates.

Owners and admins can still delete locked entries.


Filtering Time Entries

Filters narrow the list to show only the entries you care about. Click the Add Filter button above the table to add a filter, then choose a field and value.

Admin - Filtering Time Entries.png

Available filters

Filter What it does
Project Show only entries for a specific project
Service Show only entries tagged with a specific service
Date Show entries within a date range — includes presets like "This week", "Last week", "This month", and "Last month", or you can set a custom range with "From" and "To" dates
Duration Filter by logged duration (numeric comparison)
Member Show only entries logged by a specific team member (admin view only — see below)

Active filters appear as removable pills above the table. Click the x on a pill to remove that filter, or use Clear Filters to reset all filters at once.

Filters and selection work well together — filter the list first to narrow it down, then select and delete the entries that match.


Sorting Time Entries

Click any sortable column header to sort the list. Click again to reverse the sort direction. The default sort is by date, newest first.

Sortable columns

Column Sort behavior
Date Chronological order (default: newest first)
Duration Shortest to longest, or longest to shortest
Created At Order by when the entry was originally logged

Admin Bulk Management

Owners and admins have access to an expanded view that shows time entries across all team members in the organization — not just their own.

What's different for admins

Capability Team member Owner / Admin
View entries Own entries only All entries across the organization
Filter by team member Not available Available — use the Member filter
Bulk delete own entries Yes Yes
Bulk delete other members' entries No Yes
Delete locked entries No Yes

The admin view includes a Member column showing who logged each entry. Contributors are identified with a "Contributor" badge next to their name.

Admins can filter the list to a specific team member, select their entries, and bulk-delete them — useful when offboarding someone or correcting entries logged to the wrong project.


Tips for Efficient Time Entry Management

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:

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. 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 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, the entry is fully locked for non-admin users.

Duration

Time spent on the work. In the form, duration is split into two inputs:

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 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:


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