Skip to main content
Most spend approval processes are documented in a policy nobody reads and enforced by whoever happens to be on the email thread. The goal here is one request form where the approval path is decided by the request itself.
Prerequisites: a Finance workspace with a channel, and the custom fields listed in the Finance overview. Amount must be a number field, not text, or none of the threshold routing works.

What good looks like

1

Design the thresholds before you touch the product

Write the tiers down as a table and get them signed off. Everything else is data entry.A shape that works for most mid-size companies:Note that these are nested, not alternatives. Each tier adds a round rather than replacing the path. That is what makes a single template possible.
2

Build one template with conditional rounds

Create one Purchase request approval template holding every round, then use skip conditions so the rounds that do not apply are skipped when the template is applied.Skip conditions skip a round when they match. So you express the condition for when the round is not needed:
Skip conditions are evaluated once, at the moment the template is applied. Editing the amount on a ticket afterwards does not add or remove a round. If the amount changes materially, reset the rounds rather than editing the field and hoping.
Learn more about skip conditions
3

Use dynamic approvers for the human rounds

Requester’s manager resolves from your HRIS or identity provider at apply time, cascading through each configured source until one returns a manager. Requester’s skip-level manager goes strictly two levels up, which is what you want for executive sign-off.If either role resolves to nobody, Ravenna substitutes the workspace admins so the round is never left empty. That is a safety net, not a routing strategy: a request that keeps landing with Finance admins usually means the org chart in your HRIS is incomplete.
Learn more about dynamic approvers
4

Run the independent reviews in parallel

Rounds that share a stage run at the same time. Finance review and a security review of a new vendor do not depend on each other, so putting them in one stage takes a day out of the cycle. Drag one round onto another in the template to group them.Keep manager review alone in the first stage. It is the cheapest signal and it should filter before anyone else spends time.
Learn more about parallel rounds
5

Nudge, then escalate

Approvals stall. Two mechanisms handle it:
  • Reminder policies nudge pending approvers on a schedule without you building anything.
  • A workflow on the Reminder Expired trigger can post a private note listing who is still pending, or notify the approver’s manager on the second nudge.
Those two are the whole escalation path. Wait for Approval has no timeout branch: a wait that expires without a decision matches neither On Approved nor On Declined, so the run simply ends. Escalation that self-heals comes from the Reminder Expired workflow, not from the wait step.
Learn more in approval flows
6

Report on it from week two

Once Amount, Vendor, and Cost center are real fields, the analytics come free: spend requested by cost center, cycle time from submission to final approval, and approval volume per approver. The last one tends to surface the bottleneck nobody had named.
Learn more in reporting and briefs

Where teams get this wrong

No threshold routing, no spend reporting. Fix this before anything else.
Requesters guess wrong, and every policy change means editing four forms.
The template rots at the first reorg.
Reserve consensus for the rounds where a single yes genuinely is not enough. Everywhere else it just adds a week.
A threshold of 10,000 means something different in three markets.

Next

Expenses and invoices

The other half of the Finance desk.

Approval flows

The full mechanics of rounds and policies.
Last modified on September 17, 2026