# One approval console for Deel timesheets and adjustments

> Open one queue each pay period to review pending Deel timesheets, invoice adjustments, and task submissions, then approve or decline them in bulk.

- Workflow type: app
- Services: Deel, Slack Bot
- Categories: Operations, Finance
- Published: 2026-08-17

## What it does

- Puts everything waiting on your approval in one place, split into three tabs: timesheets, invoice adjustments, and pay-as-you-go tasks.
- Shows the worker, contract, hours or amount with currency, submission date, and how many days are left before your payroll cutoff.
- Flags rows worth a second look, such as hours well above a worker's usual week, unusually large adjustments, and anything submitted after the cutoff.
- Lets you tick a batch of rows and clear them in one go, or handle a single row on its own, and send a short reason to Slack whenever you decline.

## What you'll need

- A Deel login with approval rights, so the console can view and act on timesheets, invoice adjustments, and contract tasks
- A connected Slack workspace, so decline notes can reach the contractor or your finance channel
- Your payroll cutoff date for each pay period, used for the countdown and the late-submission flag

## Prompt

Build me a payroll cutoff approval console for Deel. This is the working surface I open every pay period to clear everything waiting on my approval in one place, instead of clicking through separate Deel screens. It is not a reminder or a digest: I review and action items directly in the app.

The main surface is a queue with three tabs, each showing a count of pending items in the tab label: Timesheets, Invoice adjustments, and Pay-as-you-go tasks.

The Timesheets tab loads pending items with Deel List Timesheets filtered to pending status. The Invoice adjustments tab uses Deel List Invoice Adjustments, also filtered to pending. The Pay-as-you-go tasks tab needs two steps, because tasks are listed per contract: first call Deel List Contracts to find pay-as-you-go task-based contracts, then call Deel List Contract Tasks for each of those contracts and keep the submissions still awaiting review. Fetch these tabs in parallel where you can and page through results rather than showing only the first page.

Enrich every row so it reads like a person, not an ID. Use Deel List People and Deel List Contracts to resolve the worker name and the contract title, and cache those lookups for the session so the app is not re-fetching the same reference data per row. Each row shows the worker, the contract, hours (for timesheets) or amount with its currency (for adjustments and tasks), the description or note the worker submitted, the submission date, and days remaining until the payroll cutoff. Let me sort by any of those columns and search by worker or contract. Every row has a checkbox, and there is a select-all control for the current tab plus a running count of what I have selected.

Flag rows that deserve a second look before I approve, with a visible badge on the row and a short reason on hover. There are three checks. First, hours noticeably above that worker's recent weekly average: pull that worker's recent approved timesheets with Deel List Timesheets over a trailing window (default the last eight weeks), compute their average weekly hours, and flag when the submission exceeds it by more than a configurable percentage (default 25 percent). Show the comparison in the badge, for example 46h against a 32h average. Second, adjustments above an amount threshold I configure, set per currency. Third, anything submitted after the cutoff date. Flags are advisory only: never auto-approve and never auto-decline anything, and let me filter the queue to flagged rows only.

To clear items, I tick multiple rows and approve them in bulk with Deel Review Multiple Timesheets, Deel Review Multiple Invoice Adjustments, and Deel Review Multiple Tasks depending on the tab. I can also action a single row from its own row menu with Deel Review Timesheet, Deel Review Invoice Adjustment, and Deel Review Task. When a bulk action partly fails, tell me exactly which rows went through and which did not, and leave the failed ones selected so I can retry rather than losing my place. Refresh the affected tab and its count after every action.

Declining always asks for a short reason before it is sent. After the decline is recorded in Deel, send that reason on Slack with Slack Bot Send a Message. I choose the destination in settings: either a direct message to the contractor, found with Slack Bot Look Up User by Email using the worker's email from Deel List People, or a shared finance channel. The message names the worker, the contract, what was declined with its hours or amount, my reason, and the payroll cutoff date, so the worker knows to correct and resubmit before payroll runs. If the Slack lookup or send fails, keep the Deel decline (it already happened) and surface a clear retry rather than silently dropping the note.

Add a settings view holding the payroll cutoff date for the current pay period, the hours variance percentage, the average lookback window, the adjustment amount thresholds per currency, and the Slack destination choice plus finance channel. Persist these per user so my configuration is there next time I open the app. Also keep a simple per-period history of what I approved and declined, including the decline reasons I typed, so I have a record when someone asks why something was sent back.

Make the queue quick to work through: empty states that say the queue is clear, a visible refresh, loading states that do not block the tabs I have already loaded, and a clear indicator when the cutoff is close or already passed.

## How to customize

- Set the cutoff date for each pay period so the days-remaining countdown and the late flags line up with your payroll calendar.
- Adjust the thresholds: how far above a worker's recent weekly average counts as high hours, and the amount at which an adjustment gets flagged for review.
- Choose where decline notes land, either a direct message to the contractor or a shared finance channel.

## FAQ

### Does this replace approving inside Deel?

It is the same approval. When you clear a row here, the decision is written straight back to Deel, exactly as if you had clicked approve or decline in Deel yourself. You just do it for everything at once instead of moving between separate screens.

### Can I approve several submissions at the same time?

Yes. Tick as many rows as you like in any tab and clear them in a single action. You can also handle one row on its own when something needs individual attention.

### Does it approve anything automatically?

No. Nothing is ever approved without you. The console only gathers what is pending and highlights rows worth a closer look, so every decision stays yours.

### What happens when I decline something?

You type a short reason and it goes out on Slack, either as a direct message to the contractor or to your finance channel, so the worker knows to correct and resubmit before payroll runs.

### Does it cover contractors paid per task, not just hourly ones?

Yes. Alongside timesheets there are tabs for invoice adjustments (bonuses, expenses, commissions, deductions) and for tasks submitted on pay-as-you-go contracts.

Use this prompt in General Input: https://www.generalinput.com/prompts/one-approval-console-for-deel-timesheets-and-adjustments