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 timepermission. - 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
| Requirement | Why | Check before starting |
|---|---|---|
| ClickUp plan: Business or higher | Timesheet Approvals feature (submit/approve/lock workflow) is only available on Business, Business Plus, Enterprise | Settings → 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 Folder | Limits blast radius; keeps workspace member count bounded | Each 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 Guest | Guests without this permission see no timer UI | Ask partner to open any task they can see; confirm the timer icon is visible and startable |
| Timesheet Approvals enabled at workspace level | This is the setting that creates the submit → approve → lock workflow | Settings → Approvals → Timesheet Approvals → status "Enabled" |
| Approver(s) configured for each partner team | Without a mapped approver, submissions sit in limbo | Approvals config shows the SC Approver (and/or the WP-domain Approver) mapped to the partner team |
| Description required on every time entry | Admin checklist requires descriptions; no-description entries are rejected | Time tracking settings show "Require description" toggled on |
Related task status lifecycle
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
| Role | Who | What they do |
|---|---|---|
| Submitter | Each 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. |
| Approver | SC 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. |
| Admin | SC 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:
- CSV — open the
timesheet-<contractor-slug>saved view, set the date range to the period being confirmed, Export → CSV. Save the working copy tosymphony-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. - 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. Thebucketcolumn pre-tags each line asbillable/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, oroff-platform-upworkwill 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:
- 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. - 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.
- 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:
- 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. - Apply the Approved only status filter (required for the §5 flow; not used in the §5b out-of-cycle path).
- Export → CSV. One CSV per developer (or one CSV per vendor team with developer breakdown, if your workflow prefers).
- 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:
-
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.
-
If everything passes: approve for payment. Process per timesheet-invoice-submission-sop.md §6 (Wise for international, Chase for US).
-
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
| Risk | Mitigation |
|---|---|
| Post-hoc time inflation after an invoice dispute | Timesheet Approvals locks approved entries — ClickUp enforces this |
| Vague descriptions to hide low-effort work | Description required setting + approver checklist §5.2 |
| Entries on tasks the developer didn't actually work on | Folder-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:
| Step | Business plan | Unlimited plan (fallback) |
|---|---|---|
| Vendor logs time | Native timer / manual entry | Same |
| Weekly submission | Timesheet Approvals — one-click submit | Vendor posts a Slack summary (#vendor-[slug]) noting "week of YYYY-MM-DD submitted" |
| Review + approve | Inline in ClickUp, locks on approve | The admin exports CSV manually each Monday; reviews per §5.2 checklist; flags any rejections in Slack |
| Lock | Automatic on approval | Not possible — entries remain editable indefinitely |
| Monthly export | Filter by "approved" | Filter by date range (no approval filter available); trust-but-verify via weekly summary Slack record |
| Invoice | PDF per timesheet-invoice-submission-sop.md §4 | Same |
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
| Symptom | Resolution |
|---|---|
| Vendor can't see the timer on a task | Can track time permission not granted to their Guest role. Settings → Permissions → enable. |
| Vendor's submission doesn't show in the approval queue | Check: (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 invoice | Re-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 twice | Second 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 day | Data 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 Folder | Reject 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. |
10. Related documents
- ClickUp Views and Filters Guide — view + filter mechanics; the prerequisite saved view for both §5b and §6.1 is recipe §6.1 there
- Project Partner Team Onboarding SOP — one-time setup before this SOP kicks in
- Timesheet and Invoice Submission SOP — canonical invoice format + admin review checklist (Section 4 + Section 6)
- Partner/Contractor Engagement Framework — engagement types + platform access matrix (Section 6)
- Contractor Registry — rate source of truth for invoice reconcile
- Wise Payment Guide — international payment process
- Access Revocation Checklist — at offboarding
Revision History
| Version | Date | Author | Changes |
|---|---|---|---|
| 1.0 | 2026-04-24 | Symphony Core | Initial release. Complements the existing timesheet-invoice-submission-sop.md (which stays authoritative for individual contractors + invoice format). Introduced for acewebx onboarding. |
| 1.2 | 2026-06-03 | Symphony Core | Added §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.3 | 2026-06-04 | Symphony Core | Extracted 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.4 | 2026-06-09 | Symphony Core | De-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.5 | 2026-06-12 | Symphony Core | Completed 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