# How to Set Up Approval Routing in NetSuite

> Source: https://netray.co/erp-help/netsuite-how-to-approval-routing
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: ERP Help

## Short answer

NetSuite offers two approval routing paths: native transaction approval (Enable Features > Transaction approvals, then per-employee Approval Limit and Purchase Approval Limit fields) for simple single-approver chains, and SuiteFlow (Customization > Workflow > Workflows) for multi-step, condition-based, or parallel approval routing with escalation and notification logic.

## Kind

how-to

## System

netsuite

## Erp

Oracle NetSuite

## Module

Approval Routing / Workflows

## Query

how to set up approval routing in NetSuite

## Alternate Queries

- NetSuite purchase order approval workflow setup
- NetSuite expense report approval routing
- NetSuite multi-level approval limits configuration
- NetSuite vendor bill approval routing how to

## Applies To

NetSuite native approval routing (Purchase Order, Expense Report, Vendor Bill) and SuiteFlow custom workflows, all editions with the relevant approval feature enabled

## Steps

### How to configure approval routing

**Items:**

For native routing, enable Setup > Company > Enable Features > Employees tab, check Purchase Approvals or Expense Report Approvals as needed.

Set each employee's approval authority on their employee record's Human Resources or Approval subtab: Purchase Approval Limit for POs, Approval Limit for expense reports.

Assign each employee a Supervisor on the employee record, since native routing sends transactions up the supervisor hierarchy until an approver with sufficient limit is found.

For anything beyond a straight hierarchy (parallel approvals, department-based routing, amount tiers spanning multiple approvers, conditional routing by subsidiary or class), build a SuiteFlow workflow instead under Customization > Workflow > Workflows > New.

In SuiteFlow, set the workflow's record type (Purchase Order, Vendor Bill, Expense Report, or any record), trigger (Before Record Submit or After Record Submit), and add states representing Pending Approval, Approved, Rejected.

Add Action items per state: Set Field Value to change the approval status field, Send Email for notifications, and transitions with conditions (e.g. total > 10000) that route to different next states or approver fields.

Use a Workflow Action Script (custom SuiteScript) inside the workflow when routing logic needs data not available to no-code conditions, such as looking up a department's approver from a custom setup record.

Test with Release Status set to Testing first, running transactions through every branch (approve, reject, escalate) before setting Release Status to Released.

## Sections

### Native approval vs SuiteFlow

**Body:**

Native transaction approvals are fast to configure and sufficient when approval is a simple amount-based hierarchy: an employee's manager approves up to their limit, and it escalates up the supervisor chain until someone's limit covers the transaction total. It has no support for parallel approvers, department-specific routing, or custom notification logic beyond NetSuite's built-in approval emails.

SuiteFlow is the right tool once approval needs branch by criteria other than a simple amount and supervisor chain: routing purchase orders by department to a department head regardless of reporting line, requiring two parallel sign-offs above a threshold, or adding a finance review step only for certain subsidiaries.

### Building a SuiteFlow approval workflow

**Body:**

A typical approval workflow has states for Pending Approval, Approved, and Rejected, with the transaction's approval status field (native Approval Status list field, or a custom field) transitioning between them via button actions the approver clicks (Approve, Reject) exposed on the transaction form.

Button actions on a workflow state are added as a Button custom action; the approver sees an Approve/Reject button directly on the transaction record when it is in the Pending Approval state and they have permission, avoiding the need for a separate approval queue UI.

**Code:**

// Workflow condition example: route to CFO above threshold
Condition: {custbody_total_amount} > 25000
Action: Set Field Value -> nextapprover = CFO employee record
Action: Send Email -> template: PO Escalation Notice

### Dynamic approver lookup

**Body:**

When approvers depend on department, subsidiary, or a project's assigned manager rather than a fixed supervisor chain, a Workflow Action Script (SuiteScript executed as a workflow action) can query a custom setup record mapping department to approver and set the next approver field dynamically, something no-code workflow conditions cannot do on their own.

Keep this lookup logic in one reusable script deployed to multiple workflows rather than duplicating condition trees across the PO, vendor bill, and expense report workflows separately, so a change to the approval matrix only needs a data update, not a workflow redesign.

### Notifications and escalation

**Body:**

Send Email actions on state entry cover most notification needs; pair them with a Set Field Value that stamps a Sent Date so a scheduled script can find transactions pending more than N days and escalate or resend a reminder, since SuiteFlow itself has no native time-based escalation trigger beyond a Scheduled workflow trigger on the record.

A Scheduled (not Record-triggered) workflow can run daily against a saved search of overdue pending approvals and force-transition or notify, which is the standard pattern for building escalation into NetSuite approval routing.

## Pitfalls

Relying on native approval limits when routing actually needs department- or subsidiary-based logic, then discovering the supervisor hierarchy does not match the real approval matrix.

Forgetting to set Purchase Approval Limit or Approval Limit on every employee in the chain, which silently blocks escalation at whichever level has no limit set.

Building a SuiteFlow approval workflow without a Rejected state and a clear way to return the record to the requester, leaving rejected transactions in limbo.

Not testing parallel or multi-branch approval paths before release, so an edge case (e.g. a $0 PO, or a PO with no assigned department) falls through with no valid transition.

Hardcoding an approver's internal ID in a workflow condition instead of looking it up dynamically, breaking routing the moment that employee record is deactivated or replaced.

Mixing native approval fields and a custom SuiteFlow approval status field on the same record type, causing two approval mechanisms to conflict.

## Ai Angle

ERPray, grounded on your NetSuite approval workflow definitions and employee approval limits, can trace why a specific transaction is stuck pending, identify the exact state and missing condition blocking it, and answer questions like which approvers currently have authority over a given department's purchase orders, without you opening the SuiteFlow editor and manually walking the state diagram.

## Faq

### Can native approval and SuiteFlow approval routing run on the same record type together?

**Answer:** It is possible but not recommended; having both native transaction approval and a custom SuiteFlow workflow acting on the same approval status field creates conflicting logic. Most implementations pick one mechanism per transaction type.

### How do I let an approver delegate approvals while out of office?

**Answer:** NetSuite has no native delegate-approval feature; the common pattern is a workflow condition or script that checks an Out of Office custom field on the employee record and routes to a backup approver, or simply granting the backup approver equivalent permissions temporarily.

### Why is my PO stuck in Pending Approval with no approve button visible?

**Answer:** Usually a permissions gap: the logged-in user does not have the role permission for the workflow's button action, or the workflow condition that should show the Approve button (e.g. matching them as the current approver) is not evaluating true for that record.

### Can approval routing differ by subsidiary in a OneWorld account?

**Answer:** Yes, by adding a subsidiary condition to the SuiteFlow workflow's transitions or by deploying separate workflows scoped to specific subsidiaries under the workflow's Subsidiaries restriction on the Workflow record.

## Search terms

NetSuite approval routing, NetSuite purchase order approval workflow, NetSuite SuiteFlow approval, NetSuite approval limit setup, NetSuite expense report approval, NetSuite vendor bill approval, NetSuite approval workflow states, NetSuite multi-level approval

---
Talk to an engineer: https://netray.co/contact?intent=erp_ai | Machine catalog: https://netray.co/agent/catalog.json
