Approvals
XBuddy Approvals is the one place where every sign-off in your business comes to rest. When a purchase order exceeds a threshold, an expense needs a manager’s OK, or an employee files an internal request, an approval chain generates one or more decision steps and routes them here. Approvers act on it, requesters track it, and every decision is stamped with who, when, and why — giving you a clean audit trail across the whole organization.
Requests reach Approvals from two directions. Most document approvals (purchase orders, invoices, budget overruns) are generated automatically by policies in Finance, Procurement, and other apps. Employee requests — IT support, cash advances, overtime, purchase proposals, expense claims — are submitted by employees from the Self-Service Portal against a catalog of request types that your admin configures, each of which can carry its own multi-step approval chain.
Who uses it: managers and directors clearing their My Tasks queue, requesters checking on what they’ve Sent, admins configuring Request Types and chains, and oversight staff reviewing All approvals. Because requests originate from so many places, Approvals is the shared control point rather than yet another app-specific queue.
Before you start
Two queues, not one
The app holds two different things and they behave differently. Knowing which one you are looking at saves most of the confusion.
| Workflow approvals | Employee requests | |
|---|---|---|
| What it is | A business document — invoice, purchase order, leave, contract — routed through an approval chain | A form an employee fills in: equipment, certificate, advance |
| Where | /approvals, /approvals/all, /approvals/[id] | /approvals/requests, /approvals/requests/[id] |
| Who defines the steps | An admin, in a workflow template | An admin, in a request type |
| Permission | approvals:*, workflow:* | requests:* |
Permissions
| Permission | Unlocks |
|---|---|
approvals:approve | My approvals — the queue of what is waiting on you |
approvals:request | Submit for approval and see what you sent |
approvals:read | See all approvals in the company, and the reports |
approvals:write | Act on an approval beyond deciding it |
approvals:delete | Remove an approval record |
requests:read / :write | See and raise employee requests |
requests:approve | Decide employee requests |
requests:manage | Define request types |
workflow:read / :write / :admin | See, build and administer workflow templates |
workflow:approve | Decide a workflow step |
Who can open an approval
Approvals deliberately do not follow the normal data-scope rule, and they must not. An approver is almost never the owner of the record: a manager approves their report’s leave, an accountant approves another department’s expense. If scope applied, the one person who must act could not open the file.
So reading an approval exempts three groups: the submitter, anyone who has already acted on it, and the designated approver of the current step. Everyone else is an outsider and is filtered normally.
A step condition can only read what the trigger sends. Conditions are evaluated against the metadata the submitting module emits. If a condition asks for a key that is not in that payload, the condition is false — and a false condition means the step is skipped, not “always true”.
The failure looks like this: a 2 billion ₫ order sails past a step that says “over 100 million requires the CFO”, because the template asked for amount while the trigger sends total. Nothing errors. Build conditions only from the keys the subject actually emits — the builder lists them.
Key Features
- My Tasks inbox of requests awaiting your decision
- Sent view tracking the status of requests you submitted
- All view for admins/oversight across every approval
- One-click approve / reject with a required reason on rejection
- Requests generated automatically by Workflow policies across apps
- Request Types catalog for internal/employee requests (IT support, cash advance, overtime, purchase proposals, expense claims, and more)
- Multi-step approval chains per request type, configured without opening the visual workflow builder — sequential steps, each with its own approver (a person, a role, the requester’s manager, or a panel)
- Panel steps where either any one person, or everyone in the panel, must approve
- Conditional steps that only run above a threshold (e.g. a finance panel only steps in when the amount exceeds a limit)
- Send back a request for revision without rejecting it outright
- Approved expense claims are materialized into a real Expense record automatically — no second approval
- Trip settlement flow for reconciling a travel advance against actual spend, one line item at a time
- Delegation so approvals route to a stand-in while you’re away
- SLA timers on approvals so slow decisions surface and escalate
- Full audit trail (approver, timestamp, comment) on every request
- The Approvals Steward assistant nudges pending items and flags bottlenecks
Screen map
Queues
| Screen | Route | What it is for | Permission |
|---|---|---|---|
| My approvals | /approvals | What is waiting on you right now | approvals:approve |
| All approvals | /approvals/all | Everything in the company | approvals:read |
| Approval detail | /approvals/[id] | The chain, the history, the decision buttons | see “Who can open” above |
| Sent | /approvals/sent | What you submitted and where it is | approvals:request |
| Employee requests | /approvals/requests, /approvals/requests/[id] | The request queue | requests:read |
Configuration
| Screen | Route | What it is for | Permission |
|---|---|---|---|
| Rules | /approvals/rules | Routing and policy rules | workflow:write |
| Settings | /approvals/settings | Module behaviour | workflow:admin |
| Escalation | /approvals/settings/escalation | What happens when a step goes overdue | workflow:admin |
| Request types | /approvals/settings/request-types | Define employee request forms and their chains | requests:manage |
| Workflows | /approvals/automation/workflows | The template builder | workflow:write |
| Agents | /approvals/automation/agents | AI agents scoped to approvals | workflow:write |
Reports
| Screen | Route | Answers |
|---|---|---|
| Summary | /approvals/reports/summary | Volume and status at a glance |
| Cycle time | /approvals/reports/cycle-time | How long decisions take |
| Approval rate | /approvals/reports/approval-rate | How much is approved versus rejected |
| By approver | /approvals/reports/by-approver | Where the queue is piling up |
| By type | /approvals/reports/by-type | Which document types dominate |
| Overdue | /approvals/reports/overdue | What has blown its SLA |
| Employee requests | /approvals/reports/employee-requests | The request side |
All reports require approvals:read.
Important features
Full feature reference
| Nav item | What it does |
|---|---|
| My Tasks | Your personal queue of approval requests awaiting your decision, with source document, requester, amount, and SLA timer. Approve/reject/send-back inline. |
| Sent | Requests you submitted, showing pending/approved/rejected status and, for multi-step chains, the step and approver currently holding each one. |
| All | Oversight view of every approval in the tenant — for admins and auditors to monitor volume, bottlenecks, and outcomes. |
| Requests | Management/oversight view of employee-submitted internal requests (IT support, cash advance, expense claims, and more) — separate from where employees file them (Self-Service). |
| Request Types | Admin catalog of internal request types — form fields, SLA target, attachment requirements, and the multi-step approval chain for each. |
| Reports | Analytics on approval turnaround time, approval/rejection rates, SLA breaches, and volume by policy, app, or approver. |
| AI Hub | Run the Approvals Steward assistant and review its nudges and bottleneck alerts. |
| Workflows | The full visual builder for approval automation — branching logic, step signatures, auto-escalate overdue items, notify on rejection, or kick off the next step once approved. |
| Settings | Configure delegation, SLA targets and escalation paths, notification preferences, and approval permissions. |
Integration points
| Connects to | How the data flows |
|---|---|
| Workflow Management | Policies and request-type chains define the approval rules; matching events in source apps or submitted request types generate the requests that land in Approvals. |
| Self-Service | Employees submit internal requests here against the request-type catalog; Approvals is where those requests are decided. |
| Finance | Expenses, bills, payments, and budget overruns route here for sign-off before they post. Approved expense claims materialize directly into Expense records. |
| Procurement | Purchase requisitions and purchase orders over threshold require approval before they’re issued to vendors. |
| HR | Leave, overtime, and other people requests flow through the same approval engine. |
| Calendar | Approvals awaiting you with a deadline appear in the Calendar Due view. |
Related AI agents
| Agent | What it does |
|---|---|
| Approvals Steward | Watches pending approvals, nudges approvers on aging items, flags bottlenecks and SLA risk, and surfaces requests that need attention. |