NetSuiteFree templatePDF, Excel, Word exportNetSuiteAll NetSuite tools

NetSuite Vendor Bill and Purchase Order Approval Workflow Design Template

This template produces a SuiteFlow design document for a tiered vendor bill or purchase order approval workflow in NetSuite: header settings, states, buttons, transition formulas, emails and test cases. Fill in your limits and roles, review it with AP and finance, then build it in Customization, Workflow, Workflows.

Fill in

Live preview
Download:

NetSuite Vendor Bill Approval Workflow Design Template

1. Workflow header

SettingValue
Record typeVendor Bill
Workflow IDcustomworkflow_vb_approval
OwnerNetSuite Administrator
Release statusTesting
Execute as AdminNo
InitiationEvent Based: On Create; event types Create; context types User Interface, CSV Import, Web Services (decide each explicitly)
Initiation conditionApproval Status is Pending Approval or empty
Standard approval routing preferenceReviewed: custom SuiteFlow replaces standard routing

2. States

StateEntry actionsButtonsTransitionsTrigger
Pending ApprovalSet Field Value: Approval Status = Pending Approval (1); Lock Record (Before Record Load) for users not in AP SupervisorApprove, Reject (Add Button, condition: role is AP Supervisor)Approve and total <= 5000: Approved; Approve and total > 5000: Tier 2 Review; Reject: RejectedOn Entry / Before Record Load
Tier 2 ReviewSend Email to Controller; Lock Record for other rolesApprove, Reject (role is Controller)Approve and total <= 25000: Approved; Approve and total > 25000: Final Review; Reject: RejectedOn Entry / Before Record Load
Final ReviewSend Email to CFOApprove, Reject (CFO only)Approve: Approved; Reject: RejectedOn Entry / Before Record Load
ApprovedSet Field Value: Approval Status = Approved (2); Send Email to creatorNoneOn edit of amount: back to Pending ApprovalOn Entry
RejectedSet Field Value: Approval Status = Rejected (3); Send Email to creator with reasonResubmit (creator)Resubmit: Pending ApprovalOn Entry

3. Transition rules

FromToCondition (formula)Execute on button
Pending ApprovalApproved{total} <= 5000Approve
Pending ApprovalTier 2 Review{total} > 5000Approve
Tier 2 ReviewApproved{total} <= 25000Approve
Tier 2 ReviewFinal Review{total} > 25000Approve
Any review stateRejectednoneReject
ApprovedPending Approval{total} changed after approval (compare old and new value)Before Record Submit

4. Emails and notifications

Tier 1 notice: to AP Supervisor on entry to Pending Approval, subject includes document number, vendor and amount. Tier 2 notice: to Controller on entry to Tier 2 Review. Final notice: to CFO on entry to Final Review. Outcome: to the creator on Approved and Rejected; the rejection email includes the reason field. Reminder: optional scheduled transition or saved search alert for items pending more than 3 business days.

5. Test cases

#ScenarioExpected resultPass
1Vendor Bill for 5000 exactlyApproved after one approval
2Amount just over 5000Moves to Tier 2 Review
3Amount just over 25000Moves to Final Review
4Reject at Tier 2Approval Status Rejected (3), creator emailed
5Edit amount after approvalReturns to Pending Approval
6Create through CSV importWorkflow initiates or not, per context types chosen
7Non-approver opens recordRecord locked, no Approve button
8Approver is also the creatorSegregation rule applied as designed

6. Sign-off

Workflow owner / Date
AP manager / Date
Controller / Date

Approval Status internal ids on transactions are 1 Pending Approval, 2 Approved, 3 Rejected. Check Setup > Accounting > Accounting Preferences > Approval Routing (Vendor Bill Approval Routing, Purchase Order Approval Routing) in a sandbox before release, so that only one approval mechanism acts on the record. Document the decision in the header.

Have your approval design checked

Send the completed design and we will review it for missed contexts, edit-after-approval gaps and segregation of duties before you build.

Optional. The tool and every export work without this. No spam.

Was this tool useful?

How to use it

Choose the record type, enter the workflow ID you will use, the two tier limits and the role or person at each tier, then decide release status and Execute as Admin. The document fills every state and transition with your values. Walk through the states table with the AP manager and controller before anyone opens the workflow editor: most rework in approval workflows comes from undecided edge cases such as edits after approval, CSV imports and approvers who created the bill. Keep the release status at Testing in sandbox, where only the owner triggers it, and switch to Released after the test cases pass.

Where this lives in NetSuite

Workflows are built at Customization, Workflow, Workflows, New. The Approval Status field (approvalstatus) on vendor bills and purchase orders uses internal ids 1 Pending Approval, 2 Approved and 3 Rejected, which is what Set Field Value actions and saved search criteria reference. The accounting preferences for approval routing sit at Setup, Accounting, Accounting Preferences, Approval Routing subtab, with separate checkboxes for vendor bills and purchase orders. Review those preferences before building: if standard routing and a custom workflow both act on the same record, approvers see conflicting buttons and statuses. Oracle also offers the SuiteApprovals SuiteApp if you prefer configured rules over a hand-built workflow.

  • Lock Record and Add Button actions use Before Record Load triggers.
  • Use formula conditions such as {total} > 25000 on transitions with Execute on Button set.

Design decisions to make explicitly

Decide which context types initiate the workflow: user interface only, or also CSV import, web services and scripts. Imported bills that skip approval are a frequent audit finding. Decide whether an amount change after approval sends the record back, and whether foreign currency bills compare {total} in transaction currency or a converted value. Decide whether Execute as Admin is needed; it lets actions run with full permissions, which hides role problems during testing. Finally, decide who can approve their own bills: a condition comparing the current user to the creator enforces segregation of duties.

How to check it in the system

After each test case, open the record's System Information, Workflow History subtab to see each state entered and action executed, and the System Notes for the Approval Status changes. A saved search on the record type with criteria Approval Status is Pending Approval and a column for the current workflow state gives AP a queue view, and the same search with date created older than three days is a ready reminder alert.

Frequently Asked Questions

How do I create a vendor bill approval workflow in NetSuite?

Go to Customization, Workflow, Workflows, New, set the record type to Vendor Bill, initiation On Create, then add states for pending, each review tier, approved and rejected. Use Add Button for Approve and Reject, transitions with Execute on Button and formula conditions on {total}, and Set Field Value actions on Approval Status. Test in sandbox before release.

What are the Approval Status values in NetSuite?

On transactions such as vendor bills and purchase orders, Approval Status internal ids are 1 for Pending Approval, 2 for Approved and 3 for Rejected. Workflows set them with Set Field Value actions, and saved searches and SuiteQL filter on them, for example approvalstatus = 1 for the pending queue.

Should I use standard approval routing or a custom workflow?

Standard routing and SuiteApprovals cover common limit-based approvals with configuration only. A custom SuiteFlow workflow is worth it when you need extra tiers, department or subsidiary rules, custom emails or locking. Whichever you choose, review the Approval Routing preferences so only one mechanism controls the record.

How do I approve purchase orders in NetSuite with limits?

Employee records carry purchase and approval limits used by standard routing, while a custom workflow compares {total} against tier limits on its transitions. This template uses fixed tier limits in transition formulas; if limits vary per approver, read them from the employee record in a condition or a workflow action script.

If you want AP and controllers to ask NetSuite which bills are waiting on whom, and why, in plain English with answers drawn from workflow history, we can set that up on your own infrastructure.

ArchRay builder
Design the on-prem AI stack for NetSuite: model, GPUs, RAG pipeline, guardrails
See memory, speed and cost as you swap parts, then export the diagram. Free, in your browser.
Open the builder

Keep exploring

Free tools

ERP fixes and how-tos

Runs with your ERP

AI on your ERP

Integrations

Comparisons

Software