Approval Flows
How Requisition and Purchase Order approval chains are configured, processed, and resolved.
On this page
Two separate flows
Approval Flows live under Settings → Approval Flows. Requisitions and Purchase Orders each get their own independently configured chain — enabling or editing the Requisition flow has no effect on the Purchase Order flow, and vice versa. Both are part of Equipt's procurement backbone, shared with Landscapt the same way Vendors are.
If no flow has been created yet for an entity type, the page shows an Initialize Default Flows button that creates an empty “Requisition Approval” and/or “Purchase Order Approval” flow with zero steps. A flow with zero steps means nothing is gated — the requisition or PO can move straight through without needing any approval at all.
Adding and configuring steps
Each flow is an ordered list of steps. Click Add Approval Step to append one, or the pencil icon on an existing step to edit it. Steps can be reordered by dragging them (the grip handle on the left) — order matters, since steps are processed strictly in sequence. Every field on a step:
| Field | What it controls |
|---|---|
| Label | A short name shown on the step, e.g. “Manager Approval” or “Finance Sign-off.” |
| Required Role | For Requisitions/POs: admin, manager, or purchaser. (Estimate Approval in the CRM uses its own CRM roles instead — see below.) |
| Assign To | Either a specific person, or “Any [role]” — every user holding that role is notified, and the first one to decide resolves the step. |
| Dollar Threshold | The request total this step activates at. $0 means the step always runs. A non-zero amount means the step is skipped entirely for anything under that total. |
Changes to a flow auto-save about 400ms after you stop editing (a Save Changes button also appears while a change is unsaved, in case you want to save immediately or navigate away right after editing).
Worked example: a 2-step requisition chain
Say you want small requisitions to clear quickly, but anything sizable to also get a named admin's sign-off. Configure the Requisition Approval flow with two steps, in this order:
- Step 1 — “Purchaser Review.” Required Role: purchaser. Assign To: Any purchaser. Dollar Threshold: $0 (always required). Every user with the purchaser role is notified; whoever decides first resolves this step.
- Step 2 — “Admin Sign-off.” Required Role: admin. Assign To: a specific named admin. Dollar Threshold: $2,500. This step only opens once Step 1 is approved, and only activates at all if the requisition total is $2,500 or more — a $400 requisition skips it entirely and goes straight to
approvedonce Step 1 clears.
A $6,000 requisition submitted under this flow needs both a purchaser and the named admin to approve, in that order, before it reaches approved. A $200 requisition only needs the purchaser.
The approval state machine
| From | To | What causes it |
|---|---|---|
draft | pending_approval | Requester submits the requisition or PO for approval. |
pending_approval | approved | Every step in the flow has been approved, in order — the last step's approval resolves the whole chain. |
pending_approval | rejected | Any current-step approver rejects. This is immediate — later steps never get a chance to weigh in. |
approved | ordered | The PO is sent to the vendor (requisitions convert to a PO at this point, or an already-approved PO is marked ordered). |
ordered | closed | Receiving/invoice matching for the PO is complete. |
Only the current approver in the chain can approve or reject a given step — this is enforced server-side, not just hidden in the UI. A step skipped for falling under its dollar threshold doesn't block progress; the chain simply moves on to the next step as if it had approved.
Notifications
When a requisition or PO moves to pending_approval, a request row is created for every approver eligible on the first step (either the one assigned user, or everyone holding the required role). From there:
- Approval requested — the next step's eligible approver(s) are notified in-app and by email as soon as their step becomes current.
- Approved — once every step has cleared, the original requester is notified.
- Rejected — the original requester is notified by email immediately, including the rejecting approver's comment.
Why can't I approve my own requisition?
This comes up often enough to spell out exactly what's happening, because the actual answer usually isn't what people expect.
superseded and are no longer actionable. Nothing was misconfigured; someone else on the team just got there first.If you genuinely need a specific person to hold sole approval authority for a step (rather than “any manager,” which fans out to the whole team), set that step's Assign To field to that one named person instead of leaving it on “Any [role].”
How this differs from Estimate Approval (CRM)
Landscapt's Estimate Approval is a related but deliberately simpler concept — a single gate on an estimate, not a multi-step chain. An estimate's approval status is one of not_required, pending, approved, or rejected, and it does still support its own configurable chain of CRM-role based steps (Operations Manager, Sales, etc., rather than the admin/manager/purchaser roles used here) — but the concepts, roles, and gating rules are distinct enough from Requisition/PO approval that they're covered on their own page rather than repeated here.
See the Estimating guide for how Estimate Approval fits into the budget engine and estimate lifecycle.