# How to revoke a leave request

**For:** Manager | Admin
**You'll need:** A leave request with status **'Confirmed'**.

You'll undo a previously-approved request — moving it from **'Confirmed'** to **'Revoked'**, putting the hours back, and removing the absence from the calendar.

## Open the request

::::{tab-set}
:sync-group: platform

:::{tab-item} Web
:sync: web

1. In the header, go to **Company → Leave requests**.
2. (Optional) Filter to status **'Confirmed'** to find it faster.
3. Click the row of the request you want to revoke.
:::

:::{tab-item} Mobile app
:sync: mobile

1. Tap **More → Manager → Leave requests**.
2. Tap the request carrying the **'Confirmed'** badge. There's no status filter on mobile, so scroll to find it.
:::
::::

## Revoke

::::{tab-set}
:sync-group: platform

:::{tab-item} Web
:sync: web

1. In the **'Admin notes'** textarea, add the reason — the worker cancelled, schedule changed, mistaken approval.
2. Click **'Revoke'**.
3. In the **'Revoke leave request?'** dialog, click **'Revoke request'** to confirm.
:::

:::{tab-item} Mobile app
:sync: mobile

1. Tap **Revoke** at the bottom of the request — the only action a **'Confirmed'** request offers, shown in red.

Mobile revoke takes effect straight away: there's no confirm dialog and no notes field. If you want the reason on the record, revoke from the web app instead. The app takes you back to the queue once it's done.
:::
::::

## What happens

- Status flips to **'Revoked'**.
- The original leave-balance transaction is reversed. A new ledger row posts the hours back to the worker's balance with the opposite sign.
- The calendar event is removed from the schedule.
- **'Reviewed by'** and **'Reviewed at'** are re-stamped with you and the current time.

## Verify it worked

The request reloads with a **'Revoked'** badge. The action buttons disappear — **'Revoked'** is terminal. In the {doc}`/manage-leave/leave-transactions/view-the-leave-ledger`, the latest row is the reversal, signed positive against the original booking.

```{warning}
Revoke is for already-confirmed requests. To delete a request that was never confirmed, use {doc}`delete-a-leave-request` instead — confirmed and revoked rows stay for audit.
```

## Related

- {doc}`review-a-leave-request`
- {doc}`approve-a-leave-request`
- {doc}`delete-a-leave-request`
- {doc}`/manage-leave/leave-transactions/view-the-leave-ledger`
