Skip to main content

ClickUp Timesheet Approval SOP

1. Purpose and Scope

Purpose: Standardize how Project Partner vendor teams log time in ClickUp and how SC admin approves + exports that time for payment. This is the weekly operational flow that follows the one-time setup in Project Partner Team Onboarding SOP.

Who this is for:

  • Vendor team developers (ClickUp Guests on a scoped Folder): follow §4 for daily/weekly submission.
  • SC Approver: follow §5 for review + approve + lock. (Default role-holder: Workspace Owner. A WP-domain Approver may be designated for WP-specific work; see §3.)
  • SC Admin: follow §6 for export → invoice reconcile → payment. (Default role-holder: Workspace Owner.)

What this covers:

  • ClickUp native time tracking for Guest users with Can track time permission.
  • The Timesheet Approvals workflow (Business plan+) — submit, review, approve, lock.
  • CSV export of approved hours for the monthly invoice cycle.
  • Out-of-cycle time-report confirmation (§5b) — AM exports → sends report to contractor → contractor confirms via Slack → AM bills. Used when guest export visibility is limited, at end-of-project reconciliations, or when separating prior-platform hours (e.g., Upwork) from current SC billing.
  • Fallback flow on Unlimited plan (§8) for workspaces without the Approvals feature.

What this does NOT cover:

  • The invoice format itself — see timesheet-invoice-submission-sop.md §4. Vendor teams still submit a PDF invoice; only the timesheet source of truth changes from Google Sheets to ClickUp.
  • SC Internal Team Members (the retained contractor roster) — they stay on Google Sheets per the existing SOP. This doc is purely for Project Partner vendor teams on ClickUp. The current roster lives in Contractor Registry; reference it by role, not by name.
  • Milestone-based Project Partners — see partner-engagement-framework.md §5. No time logging, just milestone invoices.

2. Requirements

RequirementWhyCheck before starting
ClickUp plan: Business or higherTimesheet Approvals feature (submit/approve/lock workflow) is only available on Business, Business Plus, EnterpriseSettings → Billing → shows "Business" or above. SC is on Business, billed yearly (verified 2026-05-18). Fallback in §8 applies only if downgraded.
Partner team as Guests, scoped to a single FolderLimits blast radius; keeps workspace member count boundedEach partner developer's ClickUp user shows Guest badge; shared items list shows only the scoped Folder + its Lists
Can track time permission granted to each GuestGuests without this permission see no timer UIAsk partner to open any task they can see; confirm the timer icon is visible and startable
Timesheet Approvals enabled at workspace levelThis is the setting that creates the submit → approve → lock workflowSettings → Approvals → Timesheet Approvals → status "Enabled"
Approver(s) configured for each partner teamWithout a mapped approver, submissions sit in limboApprovals config shows the SC Approver (and/or the WP-domain Approver) mapped to the partner team
Description required on every time entryAdmin checklist requires descriptions; no-description entries are rejectedTime tracking settings show "Require description" toggled on

This SOP covers time tracking only. The task status lifecycle is defined in the SC Task Data Standard §1 (repo: 08-reference/standards/sc-task-data-standard.md). Both task status and time tracking run in parallel for every ticket: the partner moves the status as they work, and logs time against the task independently. Share the status standard with the partner team at onboarding.

The earlier review step is retired (2026-05). Validation now happens via the Evidence bullet at task close, with monthly invoicing reconciliation serving as the time-tracking audit (§6). Defects discovered post-close are tagged quality:escaped per the Review Standard.


3. Roles and responsibilities

RoleWhoWhat they do
SubmitterEach vendor team developer (the Assignee role in ClickUp Ways of Working §Roles)Log time daily on tasks assigned to them or tasks they're working on. Submit the weekly batch for approval.
ApproverSC Approver (default role-holder: Workspace Owner; may be split per domain — e.g., a designated WP-domain Approver for WP-specific work). Maps to the QA Reviewer role in ClickUp Ways of Working §Roles — narrower deliverable (the timesheet itself rather than a client output).Review each submitted week within 2 business days. Approve if clean, reject with inline comment if not. Approved entries lock and become eligible for export.
AdminSC Admin (default role-holder: Workspace Owner). Maps to the ClickUp Admin role in ClickUp Ways of Working §Roles for workspace concerns, plus separately the billing/payment operator role.At month-end, export approved hours for the submitter. Reconcile with the vendor's invoice. Process payment per timesheet-invoice-submission-sop.md §6.

4. Weekly submission flow — vendor developer

4.1 Logging time during the week

  • Start/stop the native ClickUp timer on each task you work on. Never log time on a task you don't have access to (the entry will be rejected).
  • Alternative: manual entry with explicit start + end times. Batch-logging a full day at end-of-day is acceptable; batch-logging a full week at end-of-week is not (descriptions decay; harder to audit).
  • Every entry must have a description (short, what you actually did — not "worked on ticket" or "development"). Examples:
    • Built outlined Client Login button in header, footer link, CSS classes applied
    • GTM trigger + GA4 Event tag + DebugView validation
    • WP work
    • meetings
  • Round to 6-minute (0.1 hr) granularity. Decimal hours, not clock times, in the hours column.

4.2 Submitting for the week

  • Deadline: Monday 07:00 EST (= 12:00 UTC), covering the previous Monday–Sunday week. Canonical zone is EST per canonical-timezone-for-due-dates-est; UTC translation included once for vendor convenience.
  • In ClickUp: My Work → Timesheets → select the week → Submit for Approval.
  • If you need to edit an entry after submitting but before it's approved, request unlock via Slack in #vendor-[your-team]-channel.

4.3 What happens after submit

  • Approver has 2 business days to review.
  • You may receive inline change requests on specific entries. Fix and re-submit.
  • On approval: entries lock. You can no longer edit them.
  • Final invoice (end of month) reconciles all approved weeks for the month.

5. Approval flow — approver

5.1 When a submission arrives

Approver gets a ClickUp notification (email + in-app) that a week is ready for review. Turnaround target: 2 business days.

5.2 Per-entry review checklist

For every time entry in the submission:

  • Description present and specific. Matches the "what did you actually do" bar (§4.1 examples). Reject entries with catch-all descriptions.
  • Task is in scope. The task belongs to a Folder the Guest has access to. If not, it was probably clicked by mistake or misattributed; reject.
  • Duration plausible. Is this entry's duration consistent with the task's scope and complexity? Flag entries that are clearly too long (e.g. 8 hours on a "fix a typo" task).
  • No double-billing. The entry doesn't overlap another developer's entry on the same task without a credible reason (pair work is fine but should be noted).
  • No out-of-hours pattern. Occasional late-night entries are fine; a pattern of 12-hour days every day is worth a conversation (burnout risk + inflation risk).

5.3 Approve or reject

  • Approve all clean entries. They lock.
  • Reject the specific entries that fail review with an inline comment. Do not reject the whole week if only some entries are problematic.
  • Submitter fixes and re-submits the rejected entries.

5.4 Aggregate red-flags worth a conversation (not auto-rejections)

  • Total weekly hours > 50 for a single developer (check sustainability + scope)
  • Zero hours for a developer who was supposed to be active (check if they're blocked)
  • A large block of hours on a single task with one-line description (ask for detail)
  • Hours logged during hours the vendor team's timezone says they should be asleep (check for legitimacy)

5b. Out-of-cycle time-report confirmation

The §4–§5 flow assumes the contractor can self-submit a weekly timesheet through Timesheet Approvals. This section covers the alternative loop: AM exports the period's time entries → sends the report to the contractor → contractor confirms (or flags edits) via Slack → AM uses confirmed totals to invoice. No weekly approval queue is involved.

Prerequisite (one-time per contractor). A per-contractor saved view named timesheet-<contractor-slug> must exist in ClickUp before the first run. Build it per Recipe §6.1 in the ClickUp Views and Filters Guide. Once it exists, every cycle is a one-click pull from that view.

5b.1 When to use this flow

The default remains §5 (Timesheet Approvals) when the contractor's seat supports it and the weekly cadence works. Switch to §5b when any of the following is true:

  • The contractor is on a guest seat whose cross-task export visibility is limited and self-submission is impractical (the contractor sees timer + descriptions on each task they have access to, but cannot easily aggregate or sanity-check totals across the engagement).
  • The engagement is wrapping up and a single end-of-project reconciliation is cleaner than rebuilding the weekly cadence for the final stretch.
  • The contractor is invoicing across two periods (e.g., prior Upwork hours alongside current SC hours, or non-billable R&D time alongside billable client work) and the AM needs to slice the export before approving for invoice.

Document the choice in the contractor's engagement record so future months follow the same path until renewed.

5b.2 AM pre-send checks

Before sending anything to the contractor, the AM runs the §5.2 per-entry checklist (description present + specific, task in scope, duration plausible, no double-billing, no out-of-hours pattern) on every line in the export. Reject in place, do not send any line that fails — ask the contractor to fix the time entry in ClickUp first, then re-export. The point of the confirmation step is to validate accuracy on already-clean data, not to ask the contractor to triage description hygiene.

5b.3 Report format

Two artifacts go to the contractor:

  1. CSV — open the timesheet-<contractor-slug> saved view, set the date range to the period being confirmed, Export → CSV. Save the working copy to symphony-core-documents-storage > team-member-payments > [contractor-slug] > timesheets/clickup-export-YYYY-MM-[contractor-slug].csv. This file is the artifact the contractor confirms against.
  2. Slack-pasteable summary table — capped at ~20 lines (link the CSV if longer). Columns: date | task (with ClickUp URL) | hours | description (first 80 chars) | bucket. The bucket column pre-tags each line as billable / non-billable / R&D / off-platform-upwork / other-excluded, drawn from the AM's read of the description + task list. Anything excluded from the invoice is called out explicitly so the contractor sees the exclusion and can object.

5b.4 Send + SLA

Slack DM the contractor with the summary table inline and the CSV attached. Ask:

Please confirm the lines above match what you logged, and flag any line you don't recognise. Also confirm the exclusion bucket — anything in non-billable, R&D, or off-platform-upwork will NOT be on the SC invoice. Reply within one business day.

One business day is the default SLA. If the contractor needs longer, they reply with the new ETA — silence past the SLA is not implicit confirmation.

5b.5 Contractor reply

Two valid replies:

  • "Confirmed" — proceed to §5b.6.
  • Per-line corrections — the contractor flags specific lines (missing entry, wrong hours, wrong bucket). The AM applies corrections by either (a) asking the contractor to edit the time entry in ClickUp themselves if their guest scope allows, or (b) editing on the contractor's behalf if scope prevents it — with every edit recorded in the same Slack thread so the audit trail stays in one place. After corrections, re-export and re-send. Iterate until "Confirmed."

5b.6 Lock + invoice

Once confirmed:

  1. Save the confirmed CSV alongside a copy of the Slack confirmation thread (export-as-text or a permalink to the message) to team-member-payments/[contractor-slug]/timesheets/. The pair (CSV + confirmation record) is the auditable artifact.
  2. Hand the confirmed totals to §6.2 invoice reconcile. Skip the "approved-only" filter in §6.1 — confirmation in this flow replaces ClickUp's Approved-status filter.
  3. Process payment per timesheet-invoice-submission-sop.md §6. Same rules apply (rate from Contractor Registry, period correctness, descriptions sampled at §6.2 quality bar).

5b.7 Limitations and risk notes

  • No platform-enforced lock. Confirmed entries in ClickUp remain editable (no Timesheet Approvals lock). The confirmed CSV + Slack thread is the immutable record — if a dispute arises, the saved artifact wins, not the live ClickUp state.
  • Guest-visibility caveat per §7.1 still applies. When you ask the contractor to confirm, they may be confirming against a view that already shows other developers' time entries on shared tasks. Filter the CSV by assignee = contractor before sending so the contractor confirms only their own lines.
  • Don't use §5b as the default for new long-running engagements. Timesheet Approvals (§5) is the right primary flow whenever the contractor can submit. §5b is the alternative for cases where the weekly cadence is impractical, not a general substitute.

6. Monthly export + payment reconcile

6.1 Export approved hours

At month-end:

  1. Open the timesheet-<vendor-slug> saved view per Recipe §6.1 in the ClickUp Views and Filters Guide. Set the date range to the calendar month being closed.
  2. Apply the Approved only status filter (required for the §5 flow; not used in the §5b out-of-cycle path).
  3. Export → CSV. One CSV per developer (or one CSV per vendor team with developer breakdown, if your workflow prefers).
  4. Save to symphony-core-documents-storage > team-member-payments > [vendor-slug] > timesheets/clickup-export-YYYY-MM-[vendor-slug].csv.

6.2 Reconcile with invoice

Vendor sends the monthly PDF invoice per timesheet-invoice-submission-sop.md §4. Then:

  1. Run the timesheet-invoice-submission-sop.md §6 pre-payment checklist. Key items for ClickUp-backed submissions:

    • Hours match: invoice total hours = sum of approved ClickUp hours for the period. Flag any variance > 0.1 hr.
    • Rate matches: rate in the invoice matches the Contractor Registry entry for the vendor team (or for that specific developer tier).
    • Descriptions present: spot-check 5 random ClickUp entries for description quality. All must pass §4.1.
    • Period correct: invoice covers the expected service period, no overlap with prior invoices.
  2. If everything passes: approve for payment. Process per timesheet-invoice-submission-sop.md §6 (Wise for international, Chase for US).

  3. If something fails: send correction request via vendor's agreed channel. Do not process payment until resolved.

6.3 File payment confirmation

Save the Wise/Chase receipt per timesheet-invoice-submission-sop.md §7: payment-YYYY-MM-[vendor-slug]-[method].pdf in payment-confirmations/.


7. Risk controls

7.1 Known limitations (accept, don't fight)

  • Guests see all tracked time on shared tasks. If two vendor developers work on the same task, each can see the other's time entries. No native per-user time-entry privacy for Guests as of 2026-04. Mitigation: scope tasks narrowly, or accept as "vendor internal visibility only."
  • ClickUp has no native "must be assigned to log time" enforcement. Any Guest on a shared task can log time against it. Mitigation: scope Folder access tightly (§5 of the onboarding SOP); reject out-of-scope entries in approval.

7.2 Mitigations we DO enforce

RiskMitigation
Post-hoc time inflation after an invoice disputeTimesheet Approvals locks approved entries — ClickUp enforces this
Vague descriptions to hide low-effort workDescription required setting + approver checklist §5.2
Entries on tasks the developer didn't actually work onFolder-scoped Guest access (§5 of onboarding SOP) limits the attack surface; approver checklist verifies task is in scope
Double-billing across developers on the same task§5.2 checklist item; easy to spot in the weekly review
Runaway weekly hours§5.4 red-flag review at 50+ hrs/week

7.3 What we explicitly don't do (and why)

  • Daily hard caps — we don't enforce a max hours/day. Vendor teams operate across multiple clients; artificial caps cause fighting the tool. The weekly 50-hour red flag in §5.4 is enough.
  • Screenshot/activity monitoring — too invasive, bad for relationship, misses async work. Descriptions + weekly review serve the same purpose.
  • Hourly approval (approving each entry as it comes in) — too high-touch for the approver. Weekly batch is the right cadence.

7b. Transition aids for new partner teams

These are optional controls used when a partner team is new to ClickUp timesheets (typically coming from another platform like Upwork). Drop after the team is comfortable with the ClickUp flow.

Dual tracking (first 2 weeks)

During the first 2 weeks of an hourly engagement, the partner maintains a parallel manual tracking sheet (Google Sheets or equivalent) alongside their ClickUp entries. At end of each week:

  • Approver runs the usual ClickUp review + approval per §5.
  • Approver also spot-checks the partner's manual sheet against the approved ClickUp hours — any variance > 0.1 hr gets reconciled before payment.
  • Any task logged in the sheet but missing from ClickUp (or vice versa) is added to the appropriate surface.

After 2 weeks pass cleanly, the manual sheet is retired and ClickUp becomes single source of truth. If variances exceed 5% of total hours in either week, extend the dual-tracking period by another 2 weeks.

Staged license rollout

Invite one partner developer first (typically the team lead or most engaged IC). Run the full submit → approve → lock flow for a week with just that person. Once the flow works cleanly:

  • Invite a second developer. Repeat the one-week exercise.
  • Add remaining team members as concurrent workload justifies the seat count.

ClickUp Business plan includes 10 Guests per Member seat — scaling to a 5-person partner team costs nothing additional on a single-Member workspace. Seats matter only above that threshold.

Prepay batches

For partners transitioning from escrow-based marketplaces (Upwork, Fiverr, etc.) or for engagements where SC wants to actively demonstrate payment reliability, SC can prepay a lump sum at the start of each cycle:

  • How: Wise transfer (or agreed payment method) of an agreed batch amount (e.g. $500, one week of expected hours).
  • Reconcile: At month-end invoice, approved ClickUp hours × rate = actual amount owed. Prepayment offsets; if under, partner carries balance forward; if over, top up the next cycle.
  • Tracking: Log each prepay under the partner's Engagement Record's Payment History with a note prepay. Month-end invoice references which prepay batch(es) it offsets.

Optional — use only if the partner requests it or the engagement is high-trust-building. Default flow is pay-after-invoice per timesheet-invoice-submission-sop.md §6.


8. Fallback — Unlimited plan (no Timesheet Approvals)

SC is currently on Business plan (billed yearly, verified 2026-05-18) — this section applies only if the plan is ever downgraded to Unlimited (or lower). Time tracking still works, but without the locking/approval workflow. The flow degrades to manual control:

StepBusiness planUnlimited plan (fallback)
Vendor logs timeNative timer / manual entrySame
Weekly submissionTimesheet Approvals — one-click submitVendor posts a Slack summary (#vendor-[slug]) noting "week of YYYY-MM-DD submitted"
Review + approveInline in ClickUp, locks on approveThe admin exports CSV manually each Monday; reviews per §5.2 checklist; flags any rejections in Slack
LockAutomatic on approvalNot possible — entries remain editable indefinitely
Monthly exportFilter by "approved"Filter by date range (no approval filter available); trust-but-verify via weekly summary Slack record
InvoicePDF per timesheet-invoice-submission-sop.md §4Same

Downside of Unlimited fallback: no enforcement against post-hoc edits. Acceptable for vendors with established trust and low monthly hours; risky for new vendors or high-volume engagements.

Upgrade trigger: if any vendor crosses ~20 hrs/month consistently, or any dispute over logged time occurs, upgrade to Business. Cost: +$5/member/month (not per-Guest).


9. Troubleshooting

SymptomResolution
Vendor can't see the timer on a taskCan track time permission not granted to their Guest role. Settings → Permissions → enable.
Vendor's submission doesn't show in the approval queueCheck: (a) Timesheet Approvals enabled, (b) approver mapped to the vendor, (c) entries are on tasks in the scoped Folder (entries on out-of-scope tasks may not appear)
Hours in approved ClickUp export don't match vendor's invoiceRe-run export with explicit Folder filter + date range. Reconcile entry-by-entry with vendor before paying. Never trust the totals blindly.
Vendor submits the same week twiceSecond submission overwrites / merges — verify the latest state in ClickUp is what you want before approving. Reject spurious duplicates.
Entry shows 24+ hours on a single dayData entry error (likely forgot to stop a timer). Reject that entry; ask vendor to correct start/end and re-submit.
Vendor logged time outside scoped FolderReject that entry. Re-check the vendor's access scope per onboarding SOP §5 — the vendor shouldn't have been able to see that task in the first place.


Revision History

VersionDateAuthorChanges
1.02026-04-24Symphony CoreInitial release. Complements the existing timesheet-invoice-submission-sop.md (which stays authoritative for individual contractors + invoice format). Introduced for acewebx onboarding.
1.22026-06-03Symphony CoreAdded §5b (Out-of-cycle time-report confirmation) covering the AM-exports → contractor-confirms-via-Slack → AM-invoices loop, for guest contractors with limited cross-task export visibility, end-of-project reconciliations, and cross-platform (e.g., Upwork) period separation. §1 "What this covers" updated to list §5b.
1.32026-06-04Symphony CoreExtracted view/filter/export mechanics out of §5b.3 and §6.1 into the new ClickUp Views and Filters Guide. Added explicit prerequisite line at the top of §5b pointing at recipe §6.1 of the guide. SOP now teaches procedure, not ClickUp.
1.42026-06-09Symphony CoreDe-named roles per the SOP Standard "Reference roles, not individuals" rule (issue #60): approver/admin roles now described by title (CEO, WP approver). Retained-contractor roster left as-is — contractors are the subject.
1.52026-06-12Symphony CoreCompleted the de-PII pass per Rohit's Remarkable-tablet feedback. Replaced "CEO" actor labels with abstract role names (SC Approver, SC Admin) — current role-holder is the Workspace Owner; the role/holder split is now explicit. Replaced the named contractor list ("Kristina, Ravish, Tanu, Tosin") in §1 with "SC Internal Team Members" pointing at the Contractor Registry. Driven by 2026-06-12 sprint backlog S1-6.

Document Owner: Finance Operations / People Operations Classification: Confidential — Internal Use Only