TimeQuorum Documentation

Everything you need to track time, manage projects, invoice clients, and integrate with your tools.

What is TimeQuorum?

TimeQuorum is a multi-tenant time tracking and project management platform. Each workspace is isolated, your data never mixes with another company's. Use it to log hours, manage projects and clients, generate invoices, and report on team productivity.

Time Tracking

Live timer or manual entry with project/task context

Projects & Classes

Flexible billing classes, milestones, and task assignments

Clients

Client profiles, billing addresses, project links

Invoicing

Generate invoices from time entries & classes

Time Cards

Weekly submission, locking, and manager approval dashboard

Project Templates

Reusable class and task structures applied with one click

Reports

35+ reports: timecard, budget health, billing, profitability, utilization and more

REST API

Full API access for integrations and automation

TimeQuorum is available as a cloud-hosted SaaS or as a self-hosted on-premises installation for Enterprise customers.

Plans & Pricing

Features throughout this documentation are tagged with the minimum plan required.

Free
$0
forever
  • Up to 5 users
  • 3 projects, 3 clients
  • Time tracking
  • Dashboard
Starter
$5
per user / month
  • Unlimited users
  • Unlimited projects & clients
  • Reports & Audit log
  • Calendar view
  • Time cards & templates
Professional
$8
per user / month
  • Everything in Starter
  • Invoicing
  • Expenses & receipts
  • Gantt timeline
  • Full API access
  • Priority support
Enterprise
Custom
annual contract
  • Everything in Professional
  • On-premises deployment
  • SSO / SAML
  • Dedicated support & SLA
Feature Free Starter Pro Enterprise
Time Tracking
Projects & Tasks3 projects
Clients3 clients
Reports5 personal
Audit Log
Calendar View
Invoicing
Expenses & Receipts
REST API
Time Cards
Project Templates
Gantt Chart
SSO / SAML
On-premises

Quick Start

Get your team tracking time in minutes.

A new workspace opens on a Getting started checklist at the top of the Dashboard. It lists the steps in the order that works (add a client, create a project, create a class, track time, run a report, and optionally add a task, invite your team, and set up your invoice and billing profiles), says why each one matters, and every button opens the right screen for you. Each step ticks itself off as soon as the record exists, so the checklist always matches what is really in your workspace. It is shown to admins and managers.

  1. Create a workspace: sign up at timequorum.com, your workspace gets its own web address automatically (Enterprise plans can request a custom address via support).
  2. Invite your team: go to Users and send invitation emails. Each person can set their own password on first login.
  3. Add clients: in Clients, add the companies or individuals you work with.
  4. (Optional) Create project templates: in Projects → Templates, build reusable class/task structures for your standard delivery types.
  5. Create a project: in Projects, link a project to a client, or apply a template if you have one.
  6. Create a class: inside the project, add a class such as Design or Support. A class is the bucket time is logged against and billed; a project needs at least one. Tasks are optional and split a class into pieces of work you can assign and report on.
  7. Start tracking: use the Time Tracking page to start a live timer or add manual entries.
  8. Submit your time card (if your workspace uses time cards): at the end of each week, click Submit week on the Week tab, or open Time Cards and click Submit, to lock your entries.
Tip: After creating a project, you land directly inside it where you can add tasks, classes, and log time without navigating away.

Hiding the checklist

Use Hide this on the card to hide it for yourself. Admins can also hide it for everyone. Once the required steps are done the card says you are set up and then goes away on its own. Hiding is permanent, so the card never comes back once a workspace is past onboarding.

Support menu

The Support button in the top bar is on every page. Documentation opens this guide. Contact support and Request a feature open a short form inside the app; your message reaches our team with your workspace and email attached, you get a reference number (S-00012 for support, F-00012 for feature requests), and we reply to the email on your profile. Already on Harvest? The checklist links straight to the Harvest import until your first time entry exists.

Time Tracking Free

The Time Tracking page is the primary place for logging hours. You can use a live timer or create manual entries.

Start Timer Select project + task Timer Running Floating widget Stop & Save Entry created Manual Entry Backfill past time OR Pick project, client, task Pause/resume supported Review + add notes Set exact start/end

Live Timer

Click Start Timer, choose a project and optional task, and the timer begins. A floating widget at the bottom-right of every page shows the running timer; you can navigate anywhere without losing it. Click the widget to stop and save the entry.

Pause & Resume

The Pause button on the floating widget pauses the timer without discarding the session. Resume when you're ready. Paused time is excluded from the final entry duration.

Manual Entry

Click Add Manual Entry to log hours for a past period. Set the date, start and end time, project, task, and optional notes. Wherever you type a duration, on the Time Tracking page or in a project's Log Time dialog, enter it as clock time (4:15) or decimal hours (4.25), whichever reads naturally to you.

The Week Tab: Fill a Whole Week at Once

What it is: a timesheet grid on Time Tracking → Week: one row per project › class › task · service you work on, seven day columns, hours in the cells, live row / day / week totals, and one Save week.

Why it's useful: reconstructing Friday afternoon from memory takes one pass instead of a Log Time modal per entry. Rows come back automatically from the last five weeks, so a regular week is already laid out; add anything new with Add row.

How: type 1.5 or 1:30 in a cell, Tab across, Enter to move down. A cell that already has entries shows a dot, click it to open those entries for notes or value fields; a cell with one entry edits it in place, a cell with several only grows (reduce it by editing the entries). Each row has an optional note that becomes the description of every entry the row creates (required when the workspace requires descriptions). When the week's time card is submitted or approved the grid is read-only until it's retracted. Credit, budget, and milestone classes stay on Log Time. API: GET /api/entries/week?date= plus POST /api/entries/bulk.

Effort vs Hours

Effort is an optional planning field available on all classes and tasks, regardless of billing type. It represents a relative weight or story-point estimate for a piece of work, completely independent of hours logged. Think of it as "how hard is this?" rather than "how long will it take?"

Common uses: story points for Agile teams, complexity weights for mixed-skill projects, or simple priority scores (1 = low, 5 = high). Effort never affects billing calculations; it's a planning dimension layered on top of time or milestone data.

Tip: Enable effort tracking in Settings → General → Use Effort Tracking. Once on, the Effort field appears on class and task create/edit forms, and an optional Effort column becomes available on the project class table.

Filtering Time Entries

The Time Tracking page includes filters for Class and Task: use them to narrow the entry list to a specific billing scope or work item without leaving the page. A Go to Time Entries button on each project class and task opens the pre-filtered Time Tracking view directly from the project detail view, so you can jump straight to the relevant entries.

Entry Columns

ColumnDescription
DateThe date the work was performed
ProjectThe project this time belongs to
ClassThe billing class within the project
TaskOptional task within the class
HoursTotal hours logged
Billable HoursHours marked as billable (may differ from total)
NotesDescription or memo for the entry
Real-world example, Switching between projects quickly: A consultant works across three clients daily. Start a timer for "Client A, Discovery" at 9am. When a call comes in for Client B at 10am, stop the timer and immediately start a new one for "Client B, Support Retainer". The floating timer widget stays visible everywhere; you can jump between projects in two clicks without leaving your current page. At end of day, every minute is captured and attributed to the right client budget.

Time Cards Starter+

Time Cards give teams a formal weekly submission cycle. At the end of each week, users submit their time card to lock their entries for that period. Managers get a team-wide dashboard showing who has submitted and who still needs to.

Turning Time Cards On

Time cards are off by default. An admin enables them in System Settings → Time Tracking → Enable time cards. Until then, Time Tracking shows only Entries, Week, and Team Activity; once enabled, the Time Cards and Review tabs appear and the Week tab gains a Submit week button.

How It Works

  1. Log time entries throughout the week as normal, or fill the week in the Week tab.
  2. On the Time Cards tab (inside Time Tracking), review your week summary, hours logged per day.
  3. Click Submit Time Card (or Submit week on the Week tab) to lock your entries. A confirmation shows how many entries were locked.
  4. If you need to make corrections after submitting, click Retract: your entries unlock and you can edit freely before re-submitting.

Time Card Statuses

StatusMeaning
No EntriesNo time was logged for this week
PendingTime entries exist but have not been submitted
SubmittedCard submitted, entries are locked for this week

Manager View

Admins and Managers see a Team Overview panel listing every active user with their current week and prior week submission status. Users with Pending or No Entries status are easy to spot at a glance.

Managers can also view any individual user's card history (last 26 weeks) and retract submitted cards on behalf of users when corrections are needed.

Work Week Start Day

The first day of each week (Sunday or Monday) is configured in System Settings → Time Tracking → Work Week Start. All time card week boundaries follow this setting.

Tip: The Team Timecard report (under Reports) lets managers see the full week-by-week breakdown of every user's hours by project and class, useful for payroll, billing reviews, and spotting workload imbalances before end of period.
Real-world example, Payroll compliance: A 20-person firm requires all employees to submit their time card by Monday morning so payroll can run at noon. The manager opens the Team Overview on Monday, sees three people still showing "Pending", and sends a quick Slack message. By 10am everyone has submitted. Payroll runs on confirmed, locked data, no retroactive edits, no disputes.
Real-world example, Client billing review: An agency bills clients monthly based on logged hours. Before generating invoices, the account manager checks that all team members have submitted their time cards for the billing period. Submitted cards guarantee the data is final, no last-minute entries slipping in after invoices go out.

Projects, Classes, Tasks & Time Entries Free, 3 projects Unlimited on Starter+

TimeQuorum organizes work in a four-level hierarchy. Understanding this hierarchy is essential for getting the most out of the platform.

The Full Hierarchy

Client Company or individual you work for Project Code · dates · budget limits · status Class Billing type · effort · dates · status Task (optional) Assignee · effort · status Extra work breakdown Time Entry Class · hours · notes Time Entry Class + Task · hours · notes optional Log directly to class Log via task (optional)

Clients

Every project belongs to a Client. Clients represent the companies or people you do work for. Invoices are generated per client. See the Clients section for full details.

Projects

A Project is the top-level container for a body of work. It links to a client and carries top-level information:

Go to Projects → New Project. After saving, you land directly inside the project to configure everything. Completed or cancelled projects no longer appear in the time-tracking dropdowns.

Classes: The Billing Engine

Every project contains one or more Classes. A class is a billing scope; it defines how the work inside it is charged, how much of the budget it consumes, and when it is considered complete. Each class has a billing type:

Billing TypeWhat it tracksCompletion
TimeHours logged at an hourly rate. Set a time budget (e.g. 40:00) and track used (logged entries), reserved (task reservations), and free (uncommitted).Based on % of total time consumed by entries
CreditA pool of whole-number credits. Each time entry can deduct credits from the pool. Can reset weekly, monthly, or quarterly for retainer-style allowances.Based on % of credits consumed
BudgetA dollar budget. Time entries deduct hours × rate from the budget.Based on % of budget consumed
MilestoneA fixed deliverable with no time budget. Tracks task completion percentage.Based on % of tasks completed
Understanding Used / Reserved / Free: Each Time, Credit, and Budget class shows three budget columns:
  • Used: what has actually been logged via time entries. This is your billing/invoicing view.
  • Reserved: budget committed by active task reservations (completed task reservations stay committed; cancelled task reservations are released).
  • Free: uncommitted budget still available for new work: Total − Used − headroom, where headroom is the unspent portion of each task reservation. Entries logged within a task reservation do not double-count against Free.
Use Free for planning ("how much is left to commit?") and Used for invoicing ("how much has been delivered?").

Over-allocation: If task reservations exceed the class total, Free goes negative and the column turns red, a visible warning that more work is committed than budgeted. This is a warning only, not a block; intentional over-commitment remains possible.

Each class also carries:

Budgets that reset: Time, Credit, and Budget classes (and projects) have a Budget Resets setting, Never, Every week, Every month, or Every quarter. A resetting budget counts only the entries dated in the current period, so progress bars, the Used / Free columns, budget reports, and over-budget alerts all start fresh each period. Leave Period Starts On blank for calendar-aligned periods (the week starts on your workspace's first day of the week), or set it to a date to roll periods from that day, for example a retainer that runs from the 15th to the 14th. Alert At (%) overrides the workspace-wide alert threshold (System Settings, default 90%) for that one class or project; the alert re-arms every period. Unused budget does not roll over.
Tip: Use one class per billing arrangement. For example, a project might have a "Design Phase" class (Time, 20 hours) and a "Development Phase" class (Time, 80 hours), or a "Discovery Workshop" class (Milestone) alongside a "Monthly Retainer" class (Credit, 20 credits/month).
Real-world example, Agency retainer: A digital agency bills a client $5,000/month for 20 credits. Each credit equals a piece of work (blog post, social ad, email campaign). Create a project per client with a "Retainer" class (Credit, 20 credits, Budget Resets: Every month). Designers log time against that class, deducting credits. At any point the Free column shows uncommitted credits still available this month; Used shows what has been delivered and billed. On the 1st the count starts over automatically, no new class needed. If the contract runs mid-month to mid-month, set Period Starts On to the contract start date.
Real-world example, Fixed-fee software project: A consultancy delivers a website for $25,000. Set up the project with three milestone classes: "Discovery & Design" (Milestone, 5 tasks), "Development" (Milestone, 12 tasks), and "QA & Launch" (Milestone, 4 tasks). Assign each task to a developer. Status rolls up automatically, when all 12 development tasks complete, the Development milestone hits 100%. The client portal shows progress without revealing hourly rates.
Real-world example, Hourly billing with tight budgets: A freelancer does IT support billed at $150/hr with a $3,000 monthly cap. Create a "Support, May" class (Budget, $3,000 at $150/hr). As hours are logged, the budget ticks down in real time. Set an alert threshold in the project to flag when 80% is consumed, avoiding overruns before they happen.

Tasks: Optional Extra Control

Tasks are entirely optional. You do not need to create tasks to log time; you can log time directly against a project and class. Tasks are useful when you need a finer level of work breakdown within a class:

Each task belongs to a class and carries:

When to use tasks: For Milestone-type classes, tasks are how you track deliverables; each task's completion counts toward the milestone's overall % complete. For Time/Credit/Budget classes, tasks are optional organizational aids, assign work items, track status, and set reservations to commit a portion of the class budget to specific work. Tasks with reservations affect the planning view (Free column) without changing what has been invoiced (Used column).
Real-world example, Team project with accountability: A five-person team is building a mobile app. The "Sprint 3" class is Time-based (80 hours). The lead creates 8 tasks, assigns each to a team member, sets a reservation on each (e.g. 10 hours each), and turns on Require task for time. The class now shows: Used = hours actually logged, Reserved = 80 hours committed across tasks, Free = uncommitted buffer. Every time log is tied to a specific task, the lead can see at a glance who's over their reservation, who's blocked, and what's still open, all from the Classes tab without digging through entries. Cancelling a task that won't be delivered releases its reservation back to Free.
When NOT to use tasks: For simple one-person projects or when all that matters is the hours total, skip tasks entirely. Log directly to the class. The flexibility is yours, start without tasks, add them later if work expands, and remove the complexity when the project is small enough not to need it.

Time Entries: Where Logging Happens

A Time Entry records actual work. Each entry captures:

Time entries can be created via the live timer or added manually. Completed or cancelled projects, classes, and tasks are excluded from the time-tracking dropdowns automatically.

Budget classes and billable rates: If a Budget-type class has Deduct Billable Rate enabled, time entries auto-compute amount = hours × rate using the class rate, project rate, or your personal rate (in that priority order). If no rate is configured on any of those, the entry will be rejected, set a rate on the class, project, or your user profile, or supply the amount directly when logging.

Working with the Project Detail View

Click any project to open its detail view. The view has three tabs:

Project Status Lifecycle

StatusMeaningEffect on time tracking
Not StartedProject has not yet begunAvailable in dropdowns
In ProgressActive, work is ongoingAvailable in dropdowns
On HoldTemporarily pausedAvailable in dropdowns
CompleteFinished and closedHidden from time tracking dropdowns
CancelledAbandonedHidden from time tracking dropdowns

Task Status Lifecycle

StatusMeaningTime loggingReservation effect
Not StartedWork has not begunAllowedReservation held in Free pool
In ProgressActively being worked onAllowedReservation held in Free pool
On HoldTemporarily pausedAllowedReservation held in Free pool
CompletedWork is doneBlocked, cannot log new entriesFull reservation stays committed (reflects actual scope)
CancelledWork was abandonedBlocked, cannot log new entriesUnspent reservation released back to class Free pool
Why completed tasks keep their reservation: Completing a task locks in the committed scope, the reserved budget stays consumed against the class so the class Free column reflects work that is done. Cancelling a task signals the work will not happen, so the unspent portion is released and becomes available for other tasks.

Statuses Start Themselves

You never have to remember to flip something to In Progress. Any work signal on a child, logging time against it, or marking a task or class In Progress or Completed, automatically advances every Not Started item up its chain (task → class → project) to In Progress, and the page updates live. The rules:

Project Templates Starter+

Project Templates let you define a reusable structure, a set of classes and tasks with pre-configured billing types, budget caps, reservations, and effort estimates, that can be applied to any new or existing project in a single click.

Creating a Template

  1. Go to Projects and open the Templates tab.
  2. Click New Template and give it a name (e.g., "Software Sprint", "Client Onboarding").
  3. Add classes to the template, set billing type, budget cap, and descriptions.
  4. Add tasks to each class with effort estimates and descriptions.
  5. Save the template. It's now available for any project in the workspace.

Applying a Template to a New Project

When creating a new project, a Apply Template step lets you choose one or more templates. All classes and tasks from the selected templates are created inside the project immediately.

Applying a Template to an Existing Project

Open any project, click Apply Template, and select one or more templates from the picker. The classes and tasks are added alongside whatever already exists in the project, existing work is not modified.

Multi-Template Apply

You can select multiple templates at once. All classes and tasks from every selected template are applied in sequence. If a class name already exists in the project, the template class is still added, names are not deduplicated, so review after applying if you want to consolidate.

Template Independence

Applied classes and tasks are entirely independent of the template after creation. Editing or deleting a template does not affect any projects it was previously applied to.

Tip: Templates are managed by admins and managers, but all workspace members can see which templates are available when creating or editing a project.
Real-world example, Software delivery agency: Every client project follows the same structure: Discovery (Milestone, 3 tasks), Design (Time, 40h), Development (Time, 120h), QA (Time, 20h), and Launch (Milestone, 2 tasks). An admin builds this once as the "Standard Delivery" template. Project managers apply it in one click when a new engagement starts, all five classes and their tasks appear instantly, ready for assignment and time logging. Consistent structure means consistent reporting across all clients.
Real-world example, Multi-framework project: A management consultancy uses two standard templates: "Project Governance" (kickoff, steering, reporting tasks) and "Stakeholder Engagement" (interview, workshop, sign-off tasks). When a new engagement starts, the project manager applies both templates simultaneously, all governance and engagement classes appear in one action. They then add any client-specific classes on top.

Clients Free, 3 clients Unlimited on Starter+

Clients represent the companies or individuals you work for. All projects link to a client, and invoices are generated per client.

Client Profile

Each client has a name, contact information, billing address, default currency, and a default billable rate. Client codes are auto-assigned and never reused after deletion.

Client Rate & Rate History

What it is: the client's billable rate is the last fallback in the rate chain, a time entry with no person, class, or project rate bills at the client rate. The rate carries a history: the plain field is the rate "from the beginning", and the Rate history drawer on the client form schedules changes from a future date.

Why it's useful: negotiate a client-wide increase for January without touching every project, and past entries keep the rate that was in effect on their day.

How: Clients → edit a client → set Billable Rate, or open Rate history → add a dated row. API: GET/POST /api/clients/{id}/rates, DELETE /api/clients/{id}/rates/{rate_id}.

Client Budgets & Alerts

What it is: a spend cap and/or an hours cap that rolls up every project for the client, with the same weekly / monthly / quarterly reset, anchor date, and alert threshold that projects use.

Why it's useful: a retainer client with five projects has one number that matters, the total. The client page shows a progress bar per cap, and when consumption crosses the alert level, admins, accounting, billing-access users, and the managers of that client's projects get one email per period.

How: Clients → edit a client → Client Budget: Budget ($), Budget (hours), Resets, Period starts on, Alert at (%). Consumption is visible on the client page header and in GET /api/clients/{id} as budget_used_amount / budget_used_hours.

Billing Profiles

Each client can have one or more Billing Profiles: stored sets of billing name, address, tax ID, payment terms, and bank details used when generating invoices. You can add new billing profiles inline directly from the project form or invoice form without navigating away.

Client Detail View

Click a client to view its projects, contacts, and billing history all in one place. From here you can create new projects directly linked to the client.

Dashboard Free

The Dashboard gives an at-a-glance view of team activity, recent time entries, and project status. Charts show hours by project over the selected date range.

Widgets

Calendar Professional+

The Calendar view displays your time entries and task due dates on a monthly or weekly grid. Each entry appears as a color-coded block by project. Click any entry to edit it directly from the calendar.

What You See

The calendar shows time entries and tasks that are assigned to you, scoped automatically to your projects, classes, and tasks. Admins and managers can use the User and Group filters to view any team member's calendar.

Filters

iCal Feed

Subscribe to your task due dates in any external calendar app (Google Calendar, Apple Calendar, Outlook) via the iCal feed link available in the Calendar page. The feed updates automatically, new tasks with due dates appear in your calendar without any manual export.

Tip: The iCal feed URL is personal and authenticated, do not share it publicly, as it contains your task data.

Users & Roles Free

Invite your team via email. Each user is assigned one of five roles that determine what they can see and do.

RoleDescription
AdminFull access to all settings, users, billing, and data
ManagerCreate/edit projects, clients, groups, view all entries and reports. Managers do not have invoicing access unless granted Billing Access
AccountingThe finance role, full control of invoices, credit notes and recurring invoices, expense approvals, financial reports, and QuickBooks invoice copy. Read-only elsewhere; no access to System Settings, integrations, or imports
MemberLog time on assigned projects, edit own entries
ObserverRead-only access to projects and time data

Billing Access

Beyond roles, an admin can grant any individual user Billing Access from their user edit form. A user with Billing Access gets the same financial surface as the Accounting role, invoices, credit notes, recurring invoices, expense approvals, financial reports, and QuickBooks invoice copy, on top of whatever their role already allows. Grants take effect immediately and show as a BILLING badge in the users list. System Settings, integrations, and imports remain admin-only regardless of Billing Access.

Expense Approval Lifecycle

Expenses move through pending → approved or rejected. Approving requires a manager, accounting, or billing-access user. Rejecting requires a note; the submitter is notified by email and can edit the expense, which automatically resubmits it as pending. An approval can also be revoked (with a required note and confirmation): the expense returns to pending, the submitter is notified, and the action is audit-logged. An expense that is already on an invoice cannot have its approval revoked, remove it from the invoice first. If an approved expense was already copied to QuickBooks as a Purchase, revoking the approval leaves the Purchase in QuickBooks and records a warning in the integration sync log, delete it in QuickBooks yourself if that was intended.

Inviting Users

Go to Users → Invite User. Enter the email address and role. The invited user receives an email with a link valid for 7 days. If the link expires, click Resend Invitation: this generates a new link and invalidates the previous one.

Deactivating Users

Setting a user to inactive signs them out everywhere immediately: every session and remembered login is revoked on the spot, including the desktop and mobile apps, and their next request returns them to the login screen. Their history, time entries, and reports stay intact and they stop counting toward your seat limit. Reactivating the user lets them log in again as normal.

Note: Invitation links are single-use and expire after 7 days. Resending generates an entirely new token, the old link stops working immediately.

User Limits

Free plans support up to 5 users. Starter and above support unlimited users (billing is per-seat on paid plans).

Project-Level Permissions Starter+

TimeQuorum uses a two-tier permission model. The first tier is the workspace role (Admin, Manager, Member, etc.); it governs what a user can see and do across the entire workspace. The second tier is project-level access: it limits which specific projects a Member or Observer can interact with.

Admins and Managers always have full access to all projects. Project-level permissions only apply to the Member and Observer roles.

Assigning Access to a Project

Open a project and go to the Access tab. From there you can add individual users or entire groups:

If a project has no access entries, it is visible to all workspace users according to their role. Once you add even one user or group, the project becomes restricted: only listed users/groups (plus Admins and Managers) can see it.

Real-world example: You have a client project that only two developers and an account manager should see. Add those three users (or a "Client Alpha" group) to the project's Access tab. Other Members logging time won't see it in their project or time-tracking dropdowns at all.

Class-Level Permissions

Within a project, you can further restrict a specific class to a subset of the project's users, useful when a project has both internal and client-facing billing classes, and you want to keep budget or cost-rate classes private.

Class-level access is managed from the class's Assignments panel inside the project detail view. A user with class-level assignment sees that class and all its tasks, as well as the parent project.

Task-Level Permissions

You can assign individual users or groups to specific tasks within a class. A task-level assignment grants the user visibility of that task, its parent class, and the parent project, nothing else. This is the most granular assignment level, useful for large projects where different developers work on separate tasks within the same class.

Assignment Hierarchy

Assignment levelWhat the member can see
Project-levelAll classes and all tasks in the project
Class-levelThat class, all its tasks, and the parent project
Task-levelThat task, its parent class, and the parent project

How Permissions Show on a User Profile

On the Users page, click any user to open their profile. The Project Access tab lists every project the user has been explicitly granted access to, both direct assignments and group-based memberships. This gives admins a single view of exactly what each person can see, without having to visit each project individually.

What you wantHow to configure it
All members see all projectsDon't add any access entries, projects are open by default
Restrict a project to specific peopleAdd those users/groups to the project Access tab
Keep a class hidden from most of the teamSet class-level access to the subset who should see it
See what a user can accessOpen Users → click user → Project Access tab

Groups Free

Groups let you organize users into teams for easier project assignment and reporting. A user can belong to multiple groups. Groups can be assigned to projects to control visibility.

Reports Starter+

Reports give detailed visibility into how time is being spent across projects, clients, and team members. All reports support date range filtering, and most support additional filters by user, project, client, or group. Click any row in a report to jump directly to that project, task, or user.

Personal Reports

ReportDescription
My TimeYour own detailed time entries for any date range, a personal timesheet view
My TimecardYour weekly hours summary by day and project, useful for self-review before submitting your time card
My Weekly SummaryHours logged by week over a rolling period, see trends in your own productivity
My AssignmentsAll tasks currently assigned to you, with status, due dates, and parent project

Team & Time Reports

ReportDescription
Team TimecardEach user's weekly hours breakdown by project and class, the manager's payroll and billing review view. Filter by user, group, project, or class.
Time by UserTotal hours per user for a date range, identify workload distribution across the team
Time by ProjectTotal hours broken down by project, includes chart view for visual comparison
Time by ClientTotal hours grouped by client, useful for client-level capacity and billing reviews
Time EntriesRaw, filterable list of all time entries across the workspace, export to CSV for custom analysis
Team VelocityWeekly hours trend per user or team, chart shows velocity changes over time

Budget & Billing Reports

ReportDescription
Budget SummaryHours and spend vs. budget per project and class, see Free, Reserved, and Used at a glance
Project Budget HealthTraffic-light view of which projects are on budget, approaching the limit, or overrun
Class Budget HealthSame as Project Budget Health but at the class level, drill into which specific classes are overrunning
Overbudget ProjectsProjects that have exceeded their hour or spend budget, includes overage % and amount
Overbudget ClassesClasses where used time, credits, or budget exceeds the class total
Overbudget TasksTasks where logged hours exceed the task reservation
Billable vs. Non-billableSplit of billable and non-billable hours by user or project, helps optimise billing ratios
Billable HoursBillable hours by project and class with effective rates, ready for invoice preparation
Credit ConsumptionCredit usage by client and project for credit-type billing classes
Invoice AgingOutstanding invoices with days overdue, identify late payments at a glance
Client Billing SummaryRevenue pipeline grouped by client, total billed, outstanding, and paid amounts
Revenue PipelineProjected revenue from active projects based on remaining budget and billing rates
Unbilled Work (WIP)What you could invoice right now, uninvoiced billable time and approved billable expenses per client and project, with the oldest unbilled date
Realized RateStandard rate vs what invoices actually billed, by service, client, project, or person, discounts and write-downs show up as realization %
Revenue by PeriodInvoiced vs collected per month or per week with running totals, trailing 12 months by default, any range on request
Project Burn RateWeekly spending rate per project vs. the pace needed to complete on budget
Estimate ConversionWin rate on the estimates you sent: accepted, declined, expired, and still open, with quoted and won value and days to acceptance, by month, client, or the person who wrote them
Estimate PipelineEvery estimate that still needs something: drafts to send, sent ones awaiting an answer with the days left, and accepted ones not fully invoiced
Quoted vs ActualFor jobs started from an estimate: quoted hours and spend against the time and expenses actually logged, plus what has been invoiced

Task & Project Status Reports

ReportDescription
Overdue TasksAll tasks past their due date that are not yet complete, grouped by project and assignee
Milestone TrackerCompletion percentage of Milestone-type classes across all projects
Task VelocityTasks completed per week, track sprint throughput over time
Status BreakdownCount of projects, classes, and tasks in each status (Not Started, In Progress, On Hold, Complete, Cancelled)

Utilisation & Operations

ReportDescription
User Capacity UtilizationEach user's logged hours vs. their available capacity, identify over- and under-utilised team members
Group UtilizationSame as User Capacity Utilization but aggregated per group, see team-level load
Billable UtilizationBillable hours ÷ capacity per person, with the billable / non-billable split
Audit Activity LogWorkspace-level activity feed, who created, edited, or deleted records and when

The utilisation reports flag people and groups at or above the workspace Capacity Warning Threshold (System Settings → Time Tracking, default 90%) in red, and from 20 points below it in amber.

Real-world example, Monthly billing cycle: On the last day of the month, an account manager opens the Team Timecard report filtered to the billing period. They verify every team member has submitted their time card, then switch to Billable Hours to see the total billable amount per client. From there they jump to Invoices and generate the invoices in minutes, all data is already reconciled.

Audit Log Starter+

The Audit Log records who did what and when across the workspace. Every create, edit, delete, login, and settings change is logged with a timestamp, user, and before/after diff.

Useful for compliance, debugging data changes, and tracking team actions. The log is read-only and cannot be modified by workspace users.

Invoices Professional+

Generate professional invoices from your time entries and billing classes. Send them directly to clients or export as PDF.

Creating an Invoice

  1. Go to Invoices → New Invoice
  2. Select the client and billing profile (or add a new billing profile inline)
  3. Click + From Time Entries. By default it pulls all uninvoiced billable time for the client (or the selected project); untick "any date" to bill a specific date range instead. Choose how lines are grouped; one line per project and service/class, per person (who worked at which rate), or one line per entry with its date and notes, and optionally apply a client discount percentage.
  4. Click + Billable Expenses for approved, uninvoiced expenses, again all of them, or a date range.
  5. Or click + From Classes to add milestone/credit items directly
  6. Review line items, apply tax rate if needed, and save

List Price vs Discounted Price

What it is: every line has a Unit Price (what you charge) and an optional List Price (the standard rate). When they differ, the PDF and email show List Price and Discount columns so the client sees the concession explicitly.

Why it's useful: non-profits, friends-and-family rates, and volume deals, the client sees the value they're getting, and your Realized Rate report sees the true discount.

How: enter a discount % in the From Time Entries dialog (pre-filled from the client's billing profile default discount) and every pulled line carries list and discounted prices; or type a List Price on any line by hand. Leave List Price blank for a plain line.

Removing Time from an Invoice

What it is: time entries remember the exact invoice line they were rolled into, so you can take work off an invoice precisely.

How: in the invoice editor, remove a line, its entries return to the billable pool automatically (stored lines show how many entries they carry). Or, from the Time Tracking page, use the purple Remove from invoice action on a single entry: the entry is released and its invoice line shrinks by those hours (or disappears if it was the line's only entry), and totals are recomputed. Not available once an invoice is paid. API: POST /api/entries/{id}/uninvoice.

Invoice numbers are auto-assigned and never reused, even after deletion, to maintain a clean audit trail.

Billing Profiles

Billing profiles store the client's billing name, address, and payment terms. You can add a new profile directly from the invoice form without navigating away.

Invoice Status

StatusMeaning
DraftNot yet sent; can be edited freely
SentDelivered to client; locked for edits
PartialSome payment received, but a balance is still outstanding
PaidPayment received in full. If the payment came through Stripe or PayPal, the invoice can only leave Paid after the payment is fully refunded in that processor.
OverduePast due date with no full payment recorded
CancelledVoided; excluded from outstanding balances and reports

Due Dates & Automatic Payment Reminders

Every invoice carries an explicit due date, defaulted from your Invoice Settings due days (editable per invoice). Once the due date passes, unpaid invoices flip to Overdue automatically, no manual policing. Optionally, enable Invoice Payment Reminders (System Settings → Application Configuration) and TimeQuorum emails the client for you: a reminder a configurable number of days before the due date, then repeating overdue reminders on your cadence up to a maximum count. Reminders use a customizable template (Email Templates → Invoice Payment Reminder) and include the pay link when Stripe is enabled.

Reminders stop the moment an invoice is marked Paid: however the money arrived. If a check is in the mail, use Pause Reminders on the invoice to silence emails for just that invoice while it still tracks as overdue.

Recurring Invoices

Automate retainers and repeat billing from Invoices → Recurring. A schedule defines the client, frequency (weekly, every 2 weeks, monthly, or quarterly on a chosen day of month), and how line items are built:

ModeWhat gets billed
Fixed amountThe same template line items every period, classic retainer.
From tracked timeThe period's billable hours, grouped by class at each class's rate, the invoice writes itself from the time your team logged.

On each run date the invoice is generated as a draft for review, or emailed straight to the client with PDF and pay link. Either way, the schedule's creator and workspace admins get a notification saying exactly what happened, sent, drafted, or email failed, so nothing goes out (or silently fails) unnoticed. Tracked-time schedules with no billable hours in the period skip that run rather than sending an empty invoice.

Credit Notes

When you've overbilled or agreed a credit after an invoice was sent, don't edit or cancel the invoice, issue a credit note (Invoices → Credit Notes). It's a formal document with its own CN numbering, line items, reason, PDF, and client email. Once issued, apply it against the client's open invoices: the invoice's balance drops, its status moves to Partial or Paid automatically, and the credit shows in the payment history and Payments CSV. Credits can spread across multiple invoices, and applications can be reversed if entered by mistake.

Accounting export: credit notes export alongside invoices. The Xero file imports directly, Xero turns negative-amount invoice rows into draft credit notes. The QuickBooks file uses the QBO column layout with negative amounts, but QuickBooks' native CSV importer doesn't accept credit memos, use it with a tool like Transaction Pro or SaasAnt, or as a reference for manual entry.

Emailing Invoices

Use Send Email on any invoice to deliver it to the client's billing profile email. The email uses your customisable invoice template (System Settings → Email Templates), attaches a print-quality PDF of the invoice, and, when the invoice profile has Stripe or PayPal enabled, automatically includes a Pay this invoice online button. You can also place the payment link anywhere in the template with the {{pay_link}} placeholder, or use Copy Pay Link on the invoice to share it manually.

Payment History

Every payment recorded against an invoice, including online Stripe and PayPal payments and refunds, appears in a Payments section on the invoice detail, with date, amount, method, and reference. Refunds show as negative amounts, in red, labelled (refund).

Accounting Exports (QuickBooks, Xero, CSV)

From the Invoices section you can export your invoicing data as CSV files ready for your accounting system:

ExportContents
QuickBooksInvoice line items in the QuickBooks Online invoice-import column layout
XeroInvoice line items in the Xero sales-invoice CSV layout (account codes and tax types are left for your accountant's chart of accounts)
Generic CSVFull invoice detail, statuses, periods, line items, tax, totals
Payments CSVEvery recorded payment (including Stripe payments and refunds) for AR reconciliation

Exports can be filtered by date range, status, and client. TimeQuorum stays the invoicing front-end; your accounting package only needs the periodic import.

QuickBooks Online Sync Professional+

Connect one or more QuickBooks Online companies and keep your books in step with your invoicing, no re-keying. Invoices push to QuickBooks with one click (or automatically when sent), payments flow in both directions, and every sync action is logged.

What Syncs

DataDirectionHow
Clients → CustomersExplicit mappingYou link each TimeQuorum client to a QuickBooks customer, or create the customer (with email, phone, and address) right from the mapping table. No blind name-matching, so no duplicate customers.
InvoicesTimeQuorum → QuickBooksLine items, quantities, discount, invoice number, dates, and terms land as a QuickBooks draft under your chosen service item. Re-copying updates the same QuickBooks invoice instead of duplicating it.
PaymentsBoth directionsPayments recorded in TimeQuorum (including Stripe payments) post to QuickBooks against the matching invoice. Payments recorded in QuickBooks mark the TimeQuorum invoice paid automatically, usually within seconds, with a nightly sweep as backstop.

Connecting

  1. Go to System Settings → Integrations → Add Integration, choose QuickBooks, and give the connection a name.
  2. Click Connect: you'll be sent to Intuit to sign in and approve access to your QuickBooks company, then returned here.
  3. Pick a default service item (invoice lines are pushed under this QuickBooks product/service) and map your clients to QuickBooks customers.
  4. Optionally set Copy invoices to QuickBooks to When sent or When created: invoices are then pushed automatically instead of one by one.

On any invoice, use Copy to QuickBooks; afterwards a badge links straight to the invoice in QuickBooks. If your client isn't mapped yet, the push stops and points you to the mapping table, nothing is created silently.

Who Sends the Invoice?

Each QuickBooks connection has an Invoice delivery setting that decides who actually emails your client when you hit Send:

ModeWhat happens on SendWho emails the client
TimeQuorum emails the invoice (default)TimeQuorum emails the invoice PDF with its own template and payment links; any QuickBooks copy stays a record-keeping draft.TimeQuorum
QuickBooks emails the invoiceThe Send button becomes Send via QuickBooks: the invoice is pushed with your client's billing recipients, address, and terms, then QuickBooks emails it using its own template and payment links. TimeQuorum marks the invoice sent without emailing anything.QuickBooks
Draft onlySend is replaced by Push to QuickBooks: invoices land in QuickBooks as drafts for you to review and send from there. Status changes stay manual.Nobody automatically

The Copy invoices to QuickBooks trigger is independent of who sends: Manually (only when you click), When sent, or When created: the last pushes a draft to QuickBooks the moment an invoice is created, so drafts are ready for review even if TimeQuorum never emails anything.

For invoices QuickBooks sent, TimeQuorum's automatic payment reminders are suppressed, QuickBooks owns the follow-up there.

Payments pushed to QuickBooks normally land in Undeposited Funds; pick a Payment deposit account on the connection to deposit them straight into a bank account instead.

Good to Know

Importing from Harvest

Switching from Harvest takes an afternoon, not a migration project. The Import Data page (admins only) converts Harvest's own CSV exports into your TimeQuorum workspace, with a full preview before anything is written, duplicate-safe re-uploads, and one-click undo while an import is untouched.

The Export Files

Upload up to six CSVs. The Detailed Time report alone is enough for a complete import; each additional file enriches the result. Files are recognized by their columns, so filenames don't matter.

FileWhere to export it in HarvestWhat it adds
Detailed Time report (required)Reports → Time → Detailed Report → Export CSVClients, projects, tasks, people, and every time entry with its billable and cost rates
Expenses reportReports → Expenses → Detailed Report → Export CSVExpenses with categories, amounts, units, and billable flags
ClientsManage → Clients → ExportArchived state and addresses, including clients with no logged time
ProjectsManage → Projects → ExportProject codes, budgets (fee budgets → project budget, hours budgets → estimated hours), start/end dates, archived state
ContactsManage → Clients → Contacts → ExportClient contacts with email and phone, attached to their clients
PeopleManage → Team → ExportAuto-matches your team by email, imports exact billable/cost rates and contractor flags

Harvest's invoice export is a zip of rendered PDFs and can't be imported, recreate open invoices manually after migrating, or use the QuickBooks sync going forward.

How Harvest Concepts Map

HarvestTimeQuorum
ClientClient
Project (with budget)Project (budget carried over)
Task (Engineering, PM, …)Class: rate-bearing activity bucket, seeded with the task's billable rate. (Workspaces that imported before this default keep the original General-class layout so re-imports stay duplicate-free; a toggle in the preview controls it.)
Time entryTime entry, carrying its historical rate
PersonUser, matched by email when the People export is included, otherwise by name with per-person decisions (map / create / skip). Created users can be left deactivated: history intact, no seat used.
Expense + categoryExpense + category (categories auto-created)
ContactClient contact

Safe to Re-run

Every imported object is fingerprinted, so re-uploading a corrected or extended export updates instead of duplicating, safe to import January's file today and the full year later. The import history shows each batch with per-entity counts and any errors, and Undo removes everything a batch created, as long as nothing imported has since been edited or invoiced.

Estimates and Quotes Professional+

An estimate is a quote for work you have not done yet: labor, materials, expenses, and fixed-price items, priced and totalled like an invoice but never counted as revenue. Send it, let the client accept it online, then turn it into an invoice or a project in one click. Estimates live on the Invoices page: use the Invoices | Estimates switch at the top. Anyone who can work with invoices can work with estimates.

Creating an Estimate

  1. Click New Estimate, pick the client, and give the estimate a Title the client will recognise, such as "Panel upgrade, 123 Main St".
  2. Add lines with the + Labor, + Material, + Expense, and + Fixed buttons. Each kind asks for what it needs:
KindWhat you enterPriced as
LaborA service (optional), a description, hours, and an hourly rate. Picking a service fills in its current rate.Hours x rate
MaterialA description, quantity, unit (ft, ea, box), and unit price. Start typing to pick an item from your materials catalog, which fills in the unit, price, and cost.Quantity x price
ExpenseAn expense category, units, and a rate. Choosing Mileage fills in your workspace mileage rate.Units x rate
FixedA description, a quantity, an optional unit, and a price each, for permit fees, call-out charges, or a flat price. Leave the quantity at 1 for a single flat amount.Quantity x price

When a labor line has both a service and a description, the client sees the service as the heading with the description underneath, for example Painter over "Painting bathroom and kitchen". Expense lines do the same with their category. Each line stays its own line, grouped under Labor, Materials, Expenses, and Fixed price with a subtotal per group.

Tax and discount start from the client's billing profile, the same way they do on invoices, and can be changed per estimate. Valid Until defaults to today plus the number of days set in System Settings. Notes are printed for the client; Internal Notes are for your team only.

Payment Terms and Terms and Conditions

Terms and conditions are filled in for you from the most specific place that has them:

OrderWhereUse it for
1Typed on the estimate or invoiceA one-off change for this document. Clear the box to print none.
2The client's Billing ProfileTerms negotiated with one client
3Your Invoice Profile (Bill From)Different wording per office, brand, or country
4System Settings → General → Default Terms and ConditionsYour standard wording

Invoices follow the same order and print the terms under the notes, on the PDF and on the payment page. Editing a profile later does not change documents that already exist.

Materials Catalog

Keep the materials you quote often on the Invoices page under the Materials tab (next to Invoices and Estimates), so every estimate uses the same price and knows its cost. Anyone who can create invoices and estimates can manage it, including users with Billing Access.

An estimate keeps the cost and price it was given. Changing or deleting a catalog item never alters an estimate that already exists.

Costs and margin stay private. Tick Show internal costs to enter what each unit costs you. Labor lines pick up the service's cost rate on their own. The estimate then shows your expected margin. Unit costs, margin, and internal notes never appear on the PDF, in the email, or on the page the client sees.

Estimates are numbered from their own sequence (EST000001, EST000002, and so on), separate from invoice numbers. Change the template under System Settings → General.

Sending and Acceptance

Send emails the estimate to the contacts on the client's billing profile, with the PDF attached and a Review and accept this estimate button. The button opens a private page that shows the estimate and lets the client accept or decline from a phone or a computer, with no account and no sign-in.

Every email is yours to edit under System Settings → Email Templates:

TemplateSent toWhen
EstimateThe client's billing contactsYou send or resend the estimate. Placeholders include {{estimate_number}}, {{title}}, {{total}}, {{valid_until}}, {{notes}}, and {{accept_link}}; if the template does not place the link, the button is added at the end.
Estimate Accepted (team)The people attached to your invoice profile and its extra notify addressesThe client accepts through the link
Estimate Declined (team)The same peopleThe client declines; {{reason}} carries what they wrote
Estimate Confirmation (client)The client's billing contactsRight after acceptance, with the PDF attached
Acceptance through the link is a recorded agreement to the pricing, not an electronic signature. If your work needs a signed contract, keep using the signing tool you use today.

Estimate Statuses

StatusMeaning
DraftBeing prepared. Fully editable. The client cannot answer yet.
SentWith the client. Still editable; send it again after a change.
AcceptedThe client agreed. The estimate is locked and ready to invoice or to start a project.
DeclinedThe client said no. Reopen turns it back into a draft.
ExpiredValid Until passed without an answer. The client can no longer accept. Reopen gives it a new validity.
ConvertedAt least one invoice or a project has been created from it.

To change an estimate that is already accepted, declined, or expired, use Revise. It creates a new draft with the same lines, numbered as a revision (EST000045-R2), and leaves the original untouched as a record of what was agreed.

Invoicing an Estimate

From an accepted estimate:

The estimate shows a progress bar, "Invoiced $2,500 of $10,000", and lists every invoice raised from it. Each of those invoices shows From estimate EST000045 with a link back, and a short summary on screen and on the PDF: the estimate total, what was invoiced before, this invoice, and what remains after it. Cancelling or deleting one of them puts its amount back on the estimate so it can be invoiced again.

You can also start from the invoice side: in New Invoice, + From Estimate lists the client's accepted estimates that still have a balance.

Starting a Project from an Estimate

Start project turns an accepted estimate into a project you can track time against straight away. You choose the name and dates; the rest comes from the estimate:

On the estimateOn the project
TotalContract value and budget
Total labor hoursEstimated hours
Each labor lineA Time class with the quoted hours, rate, and budget, and the service attached
Each fixed lineA Milestone class for the line total (quantity x price), with a milestone task to mark complete
All material and expense linesOne Budget class, "Materials and expenses", with one task per quoted item and that item's amount reserved for it

Every class shows its quoted amount as its contract value. Log each material purchase or expense against its task and the project shows, item by item, what was planned and what was actually spent.

From there nothing is new: log time against the labor classes, log expenses against the budget class, and invoice either from the estimate (fixed price, with deposits) or from tracked time and expenses (time and materials). Invoices billed from the project count against the estimate too, so you can see how a time-and-materials job is tracking against what you quoted.

Change Orders

When a job grows, open the project and click New Estimate. That estimate is a change order for the project. Once the client accepts it, Add to project adds its classes to the existing project and raises the contract value and budget by its total. The project page shows a Quoted panel with the original estimate, every change order, and what has been invoiced against each.

Estimate Reports

Three reports under Reports → Revenue follow your quoting: Estimate Conversion (win rate by month, client, or person), Estimate Pipeline (what still needs sending, answering, or invoicing), and Quoted vs Actual (how each job is tracking against its quote).

Limitations

Online Payments with Stripe Professional+

Connect your own Stripe account and your clients can pay invoices online by card on a secure, Stripe-hosted payment page. Payments reconcile automatically, no manual bookkeeping.

What It Does

Setting It Up

  1. Sign in to your Stripe Dashboard and open Developers → API keys (dashboard.stripe.com/apikeys).
  2. Copy your Secret key (starts with sk_live_, or sk_test_ for testing). If you prefer a restricted key, it needs write access to Checkout Sessions and read access to Payment Intents.
  3. In TimeQuorum, go to System Settings → Invoice Profiles, edit the profile you invoice from, paste the key into the Stripe field, and enable Stripe payments.
  4. Save. TimeQuorum validates the key with Stripe before accepting it.
Your key is stored encrypted, is never shown again after saving, and is never sent to the browser. Each invoice profile can use its own Stripe account. For more on Stripe API keys, see Stripe's API key documentation.

Bank Payments (ACH Debit)

For US workspaces billing in USD, enable Bank Payments on the invoice profile and the payment page offers "US bank account" alongside card, at Stripe's ACH pricing (0.8% capped at $5) instead of card rates, which matters on large B2B invoices. Requirements and behavior:

Limitations

Online Payments with PayPal Professional+

Connect your own PayPal business account and the same pay link offers a Pay with PayPal button. Clients approve the payment on PayPal's hosted page (PayPal balance, linked bank, or card as a guest where PayPal allows it), and the invoice reconciles itself exactly as a Stripe payment does. Stripe and PayPal work independently: an invoice profile can use one, the other, or both.

What It Does

Setting It Up

  1. Sign in to the PayPal Developer Dashboard with your business account and create a REST API app (or open an existing one). Copy its Client ID and Secret key.
  2. In TimeQuorum, go to System Settings → Integrations → Add Integration, choose PayPal, paste the client ID and secret, and pick the environment: Live for real payments, Sandbox only for testing with sandbox buyer accounts.
  3. Save. TimeQuorum validates the credentials with PayPal before accepting them.
  4. Open System Settings → Invoice Profiles, edit the profile you invoice from, and pick the PayPal integration under Online Payments. Leave the Stripe selection in place if you want both.
The secret is stored encrypted, is never shown again after saving, and is never sent to the browser. The client ID is not sensitive. Each invoice profile can use its own PayPal account, and the integration card shows a LIVE or SANDBOX badge so a test account is never mistaken for a real one.

eChecks and Delayed Payments

When a client pays from a bank account that PayPal has to clear first (an eCheck), the invoice shows a "payment processing" state instead of Paid. TimeQuorum checks with PayPal in the background and flips the invoice to Paid once the funds clear, usually within a few business days. If PayPal declines the payment, the processing state clears, the invoice remains due, and workspace admins and accounting users are emailed (the PayPal Payment Failed notification) so they can follow up.

Limitations

System Settings Admin only

System Settings are accessible to workspace Admins via the sidebar. They control how the entire workspace behaves, defaults set here cascade through the platform. Changes take effect immediately for all users.

General / Workspace Settings

SettingWhat it does
Workspace NameDisplayed in the header and on invoices. Used as the sender name when sending invoice emails.
TimezoneThe workspace's default timezone. Time entry dates are interpreted in this timezone. Important for teams that span multiple time zones.
Date FormatControls how dates are displayed across tables, reports, and date pickers (e.g., YYYY-MM-DD, MM/DD/YYYY, DD/MM/YYYY). Apply consistently so exported reports match your team's expectations.
CurrencyThe workspace's default currency for rates, budgets, expenses, and reports. Each invoice profile has its own currency, fixed on every invoice it issues. TimeQuorum does not convert between currencies; reports show one total per currency. Billable rates, budgets, and expenses are always in the workspace currency, so an invoice issued in another currency should use manually entered line items or an invoice profile in the workspace currency.
Default Billable RateWorkspace-wide fallback hourly rate. Used when a project and class have no rate set. Individual users can also have their own rate for use in cost and margin calculations.

Time Tracking Settings

These settings govern how time entries work for everyone in the workspace:

SettingEffect
Capacity Warning ThresholdUtilisation % at which the Capacity, Billable Utilization, and Group Utilization reports flag a person or group (default 90%). Amber starts 20 points below.
Require Entry DescriptionWhen enabled, the Notes/Description field becomes mandatory on every time entry, both for the live timer and manual entries. Users cannot save an entry without filling it in.
Use Effort TrackingWhen enabled, the Effort field appears on task and class forms. Effort is a dimensionless number (story points, weight, etc.) for planning purposes, separate from hours.
Work Week StartSets the first day of the work week for reports and the weekly timecard view.
Default Work Hours Per DayUsed as a reference in reports and alerts when checking whether users have logged enough hours.
Require task for time is a per-class setting (not workspace-wide). Enable it on a specific class if you want users to always select a task before logging time, useful for projects that need granular task-level reporting.
Real-world example, Require description for client billing transparency: An agency bills clients based on time entries exported to CSV. Turning on Require Entry Description means every entry has a memo the client can read. No more vague "4h, Project" entries slipping through. One setting, enforced for every person on every project.
Real-world example, Effort tracking for sprint planning: A dev team uses effort points (1–8) to estimate complexity. Enabling Use Effort Tracking adds an Effort field to every task and class. The team enters points during sprint kickoff, then the project's class table shows effort alongside logged hours, giving a quick way to compare planned complexity vs. actual time spent. High hours on a low-effort task signals something went wrong; low hours on a high-effort task means it was easier than expected or not yet complete.

Categories

The Categories tab holds the workspace's shared pick-lists: Services (the kinds of work you sell, with per-person rates and the Rate Matrix) and Departments (org labels from user profiles, rename one everywhere or remove it from all users).

Invoice Settings

SettingEffect
Invoice Number PrefixPrepended to all invoice numbers (e.g., INV- → INV-0042)
Default Payment TermsPre-filled on new invoices. Can be overridden per invoice.
Invoice Time RoundingRound billed hours when building invoice lines from time entries, up or to nearest, in 6 to 60 minute increments, per entry (Harvest-style) or on the class total. Stored time entries always keep exact hours.
Deduct Rounded Time from CapsOptional sub-setting of time rounding: class and project time caps burn the same rounded hours your invoices bill, so a retainer's Consumed and Free columns match what has actually been invoiced. Off by default; entries themselves are never altered.
Invoice Email TemplateThe email body sent to clients when an invoice is emailed. Supports placeholders like {{client_name}} and {{invoice_number}}.
Invoice Profile (Bill From)Your company's name, address, tax ID, and bank details shown on invoices as the sender.

Email Templates

System Settings → Email Templates lets admins customise every email the workspace sends:

TemplateUsed for
InviteSent to newly invited users. Supports {{invite_link}}, {{workspace_name}}, and {{invited_by}}.
InvoiceSent when an invoice is emailed to a client. Supports placeholders like {{client_name}}, {{invoice_number}}, and {{pay_link}}; the invoice PDF is attached automatically.
Invoice Payment ReminderSent to clients before/after an invoice's due date when reminders are enabled. Includes amount due, due date, days overdue, and the pay link.
Credit NoteSent when emailing a credit note; the credit note PDF is attached.
NotificationsSubject and body for each notification type, project start and deadline reminders, class/task deadlines, budget alerts, task assignments, project completion, weekly capacity warnings, recurring-invoice generation notices, and failed bank-payment alerts, with variables like project name, due date, and budget percentage.

Plan & Usage

View your current plan, billing period, seat count, and payment methods. Upgrade or downgrade your plan, add a credit card, and view billing history. If your subscription has lapsed, a Pay Now button reactivates immediately.

Cards are accepted from any country Stripe supports. Saving a card may ask you to confirm with your bank (3-D Secure), as required in the EU, UK, and India, and the first charge of an upgrade may ask again. Billing country and postal code are required so the correct tax applies. If you enter a VAT or GST ID, Stripe validates it and applies it to your invoices; EU businesses with a valid VAT ID are reverse-charged. All fees are in US dollars; your card issuer may apply a conversion rate or a foreign transaction fee.

Danger Zone

Permanently delete the workspace. This drops all data and cannot be undone. You will be asked to confirm by typing the workspace name.

API Integration Professional+

TimeQuorum exposes a RESTful JSON API that lets you integrate with third-party tools, automate workflows, and build custom reporting dashboards.

Authentication

All API requests require a Bearer token in the Authorization header:

Authorization: Bearer <your-jwt-token>

Obtain a token by authenticating through the portal SSO flow or by using an API key (available in System Settings → API Keys on Professional+ plans).

Base URL

All endpoints are relative to your workspace URL:

https://{workspace}.timequorum.com/api

Key Endpoints

MethodEndpointDescription
POST/api/oauthAuthenticate and get a Bearer token
GET/api/users/meCurrent user profile and permissions
GET/api/entriesList time entries (filter by date, project, user, class)
POST/api/entriesCreate a new time entry
GET/api/projectsList all projects
GET/api/clientsList all clients
GET/api/usersList workspace users
GET/api/time-cardsList the authenticated user's time cards (last 12 weeks)
GET/api/time-cards/currentCurrent week time card with daily hours breakdown
POST/api/time-cards/{week_start}Submit a time card for a week (locks entries)
DELETE/api/time-cards/id/{id}Retract a submitted time card (unlocks entries)
GET/api/time-cards/usersManager: all users' current and prior week time card status
GET/api/project-templatesList all project templates
POST/api/project-templatesCreate a new project template
GET/api/reports/my-timecardAuthenticated user's timecard report data
GET/api/reports/team-timecardTeam timecard report, hours by user, week, project, class
GET/api/invoicesList invoices

The full API reference with request/response schemas, parameters, and example payloads is available at /api-docs.html, powered by the interactive OpenAPI explorer.

Example: Fetch This Week's Entries

curl -X GET \
  "https://acme.timequorum.com/api/entries?start_date=2026-05-04&end_date=2026-05-08" \
  -H "Authorization: Bearer eyJhbGci..."

Example Response

{
  "entries": [
    {
      "id": 42,
      "date": "2026-05-07",
      "project_id": 5,
      "project_name": "Website Redesign",
      "task_name": "Frontend development",
      "hours": "3.50",
      "billable_hours": "3.50",
      "notes": "Implemented dashboard charts",
      "user_name": "Alex Johnson"
    }
  ],
  "total": 1
}

Pagination

List endpoints support ?page=1&limit=50 query parameters. The response includes total, page, and limit fields for cursor navigation.

Common Integrations

Slack

Post daily time summaries or missing timesheet alerts via webhooks

Spreadsheets

Pull entry data into Google Sheets or Excel for custom reports

Zapier / Make

Trigger workflows when entries are created or projects reach milestones

BI Tools

Feed Tableau, Power BI, or Metabase with live project & billing data

Webhooks Professional+

Webhooks let TimeQuorum push real-time events to your systems rather than polling the API. Configure webhook endpoints in System Settings → Integrations.

Available Events

EventFired when…
entry.createdA new time entry is saved
entry.updatedA time entry is edited
entry.deletedA time entry is removed
project.createdA new project is created
invoice.status_changedInvoice moves to Sent, Paid, or Overdue
user.invitedA new user invitation is sent

Payload Format

{
  "event": "entry.created",
  "workspace": "acme",
  "timestamp": "2026-05-08T14:32:00Z",
  "data": {
    "id": 42,
    "user_id": 7,
    "project_id": 5,
    "hours": "2.00",
    "date": "2026-05-08"
  }
}

Webhook deliveries include a X-TimeQuorum-Signature header you can use to verify authenticity. Retries are attempted 3 times with exponential backoff on failure.