Shiftbase logo Shiftbase automation · runs weekly

Approve pending Shiftbase timesheets

Every Monday the Timesheet tab fills with pending hours from last week, and before payroll someone has to open each entry, check the times and approve it.

Cotlet does it in your own Shiftbase account with list_timesheet_entries and set_timesheet_status, called by your AI agent, an n8n workflow or a script.

Hosted · nothing to install or maintain

Can Shiftbase do this on its own?

Shiftbase approves hours in the Timesheet tab only (checked 22 Oct 2026). The Public API lists time registration data and clocks among its examples, but the help center does not describe approving entries through it, and there is no MCP server.

How you do it in Shiftbase today

  1. A manager opens the Timesheet tab and picks the department and the week or month view.
  2. The filters narrow the list to the Pending status, and Show only conflicts isolates the entries Shiftbase flags.
  3. Each entry is opened with the pencil icon, the start, end and breaks are read, and the status changes from pending to approved. The + Approve button approves every sheet in the current view at once.
  4. In the week or month view the manager selects specific timesheets to approve, reject or restore to pending.
  5. Hours are locked by closing the timesheet, so a missed entry stays editable only until someone closes the period.

How to approve pending Shiftbase timesheets

Prompt

List the pending timesheet entries for last week in Harbor Cafe. Approve the ones without conflicts and send me the rest with the reason.
  1. 01

    Read last week's pending entries

    list_timesheet_entries runs with a date range for last week and status pending, once per department you name. The agent counts the entries and the total hours before it changes anything.

  2. 02

    Separate the conflicts

    Entries Shiftbase marks as conflicts, and entries whose hours differ from the scheduled shift by more than the tolerance in your prompt, go on a list for you. The agent does not approve them.

  3. 03

    Approve the clean ones

    set_timesheet_status moves the clean entries to approved in one call per employee. By default each call waits for your OK, because approved hours feed the payroll report.

  4. 04

    Decline only on your word

    An entry is declined only if your prompt says so for a stated reason, such as hours entered for a day off. Otherwise it stays pending with a note.

  5. 05

    Report what remains

    The agent reads the list again and reports how many entries are still pending and why, so you see an empty queue or a short list to resolve.

What you get back

Example data

Pending entries for 12-18 Oct in Harbor Cafe: 31 (212.5 hours)
Approved 27 (181 hours)
Left for you 4:
- Lena Ortiz, Tue: conflict with her approved absence
- Sam Okafor, Sat: 11 hours against a 6 hour shift

Other ways to ask

  • Every Monday at 8, approve pending entries for the Kitchen department that match the schedule and list the rest.
  • Show me the pending entries older than 7 days and do not approve anything.
  • Approve all pending entries for Lena Ortiz this month.

What Shiftbase allows, and what to know first

  • Shiftbase timesheet statuses are Pending, Approved and Declined, and the filters include Show only conflicts.
  • Approving hours needs the authority to approve in the Timesheet tab, so the account behind this job must have that permission.
  • Shiftbase lets you lock hours by closing the timesheet, which stops changes after a chosen date.
  • The timesheet exists to approve recorded hours and then prepare a payroll report, so an approval moves hours into the payroll export.

set_timesheet_status asks for your OK by default. To run it weekly without you, switch confirmation off for that tool in your dashboard.

Sources: Shiftbase Help: Adding, editing and approving working hours · Shiftbase Help: Timesheet filters · Shiftbase Help: Full API access

Call set_timesheet_status from a script

curl

curl -X PUT https://cotlet.dev/api/v1/shiftbase/timesheet-status \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"entry_ids":["40118","40119","40122"],"status":"approved"}'

Example response

{
  "updated": [
    {
      "id": "40118",
      "status": "approved"
    },
    {
      "id": "40119",
      "status": "approved"
    },
    {
      "id": "40122",
      "status": "approved"
    }
  ]
}

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is shiftbase_write → set_timesheet_status. Example data.

Schedule it in n8n, Make, Zapier or cron

Shiftbase tools this automation uses

Cotlet Shiftbase tools used to approve pending Shiftbase timesheets
Tool Parameters
list_timesheet_entries from, to, status, department_id, conflicts_only
set_timesheet_status entry_ids, status
All 13 Shiftbase tools with descriptions

Frequently asked questions

Is it safe to connect Shiftbase to Cotlet?

Yes. You sign in to Shiftbase yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Shiftbase once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

Give your agent access to Shiftbase.

Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Shiftbase.