Skip to main content
Approval workflows

Multi-level approvals, modelled the way procurement actually works

Multi-level approval chains with configurable conditions, role-based resolvers, and timeout escalation. Ready for orders and quotes. Extensible to any entity.

The default · one-step approvallocked to orders
Orderentity
Approversingle, named
Approve / rejectall or nothing
Vendure approval enginepolicies are data
Conditions
order > $10kdiscount > 15%custom flag
Chain
L1ANY
Managernamed
L2ANY
BU Leadrole
L3ALL
VPhierarchy
Timeout
48hescalate
customer-sidecustom resolveraudit

One-step approval, or write the engine yourself

Most B2B platforms ship one approval pattern: one approver, all-or-nothing, hard-coded to orders. Everything else (multi-level chains, spending-limit conditions, timeout escalation, customer-side approvers) turns into custom code or a queue your team babysits.

Vendure Platform ships a generic approval engine. Policies are data. Conditions and resolvers are pluggable. The chain is configurable per policy. Orders, quotes, returns, and custom entities all run on the same machinery.

What the engine gives you

An approval system, not an approval feature

Chains, conditions, resolvers, timeouts, escalations, and an approver-side dashboard. The pieces a real procurement workflow needs.

Multi-level chains, ANY or ALL semantics

Configure as many levels as your policy needs. Each level decides whether one approver is enough (ANY) or every approver must sign off (ALL). Sequential between levels, parallel within a level. Spending-limit chains, named-approver chains, role-based chains all compose from the same primitives.

Conditions, built-in and custom

Trigger approvals based on data on the entity: order total over a threshold, discount over a percentage, a custom flag on a quote. Vendure ships baseline conditions; custom conditions plug into the same ApprovalCondition interface and surface in the policy editor.

Resolvers: named, role-based, hierarchy-based

Resolve the approver dynamically. Named approver, customer role, company manager, business unit lead, or a custom resolver that calls your HR system. Approvers can be Vendure administrators or customer-side users.

Timeouts and escalation

Set a timeout per chain level. When it expires, the request auto-approves, auto-rejects, or escalates to the next level (your choice per policy). No silent stalls in approver inboxes, no cron job to manage manually.

Approver dashboard and delegation

Approvers see their pending decisions in the admin dashboard or the customer portal, with full context on the entity. Decisions are first-class records: approve, reject, request changes, delegate. The decision history is auditable end to end.

Workflow Enginedurable · observable · replayable
long-lived state
OrderregisteredApprovalEntityHandler
QuoteregisteredApprovalEntityHandler
Supplier onboardingconnecting · custom entityApprovalEntityHandler
Lifecycle hooks
onApproved
onRejected
onChangesRequested
onCancelled
engine handles policy editor, dashboard, audit hooks

Extend approvals to any entity with one handler

Approval Workflows runs on Vendure's Workflow Engine. Each approval request is a long-lived workflow instance: durable, observable, and replayable.

Plugging in an entity takes a single ApprovalEntityHandler. Declare the entity type and how to load it for condition evaluation. Wire onApproved and onRejected, plus onChangesRequested and onCancelled if the policy needs them. The plugin handles the engine, the policy editor, the approver dashboard, and the audit hooks.

Vendure registers handlers for orders and quotes out of the box. Custom entities (returns, supplier onboarding, contract changes) follow the same shape.

One enginesame primitives
Entity
Order· over personal limit
Conditionorder.total > buyer.limit
Chain
L1ANY
Manager
hierarchy
48h
L2ANY
Business Unit Lead
role · escalation

Three approval shapes, one engine

The same engine covers spending-limit gates, discount sign-off, and compliance approval on custom entities.

you writeregisterApprovalEntityHandler(...)
Custom entityReturns
slotted in
Policy editorconditions · resolvers
Approver dashboardadmin · customer portal
Audit traildecisions · transitions
Notificationspending · escalation

One handler per entity. Everything else is already there.

Need a new approval target (returns, refunds, contract changes, supplier onboarding)? Write one ApprovalEntityHandler and the rest of the system follows. Custom conditions and resolvers plug in through the same ConfigurableOperationDef pattern your team already uses for shipping calculators and payment methods.

Trusted by complex B2B commerce and enterprise retail.

FAQ

What procurement and engineering teams ask

Common questions when evaluating Approval Workflows against a flat "request approval" feature or a custom-code approval layer.

B2B buying pluginsone of six
Company accountshierarchy resolverscomposes
Approval workflowsthis plugin
Quote managementapproval branchcomposes
+ 3 more on the platform
Quick order
Reorder from history
Shopping lists

Where approvals fit in the B2B stack

Approval Workflows is one of six B2B buying plugins on Vendure Platform.

Ready when you are

See Approval Workflows in action

Sixty minutes with one of our team. A short platform overview, then a walkthrough of your approval scenarios against the engine.