The Approval Matrix is the core logic engine in ZoneApprovals that determines whether a transaction requires approval and who the designated approvers should be. This article covers the Approval Matrix as redesigned in version 1.16.0 and applies to all accounts on that version or later.
Note: Clicking on the images within this guide will enlarge them for better viewing.
Important: This article applies to ZoneApprovals version 1.16.0 and later. If you are using version 1.15.4 or earlier, refer to Creating an Approval Matrix in ZoneApprovals (Version 1.15.4 or Earlier).
Tip: The new matrix UI is fully backwards-compatible. Any approval matrices created in version 1.15.4 or earlier remain active after upgrading and can be viewed and edited using the new interface without any reconfiguration.
Overview
You can create multiple approval matrices, but do so with care. When more than 1 matrix applies to a transaction, the system uses only the most recently created matrix as the approval logic. Each matrix supports a draft mode, as well as optional start and end dates. A matrix in draft status is excluded from all approval processing.
Microtraining video: Creating an approval matrix
Important: The video below covers ZoneApprovals version 1.16.0 or later. If you are using an earlier version, refer to Creating an Approval Matrix in ZoneApprovals (Version 1.15.4 or Earlier).
Preference Tip: If you prefer a guided experience, follow the video above. For specific navigation paths, refer to the text instructions below.
Step 1: Creating an approval matrix
Navigate to Setup > ZoneApprovals Setup > Approval Matrix > New. This brings you to the New Approval Matrix screen. Click the Configure Matrix button to begin setting up your matrix.
This opens a configuration modal where you will complete the global matrix settings. Once you’ve made all the applicable selection, click Save Changes within the modal to close it and proceed.
Each field is described in detail below. Mandatory fields are indicated with a red asterisk.
Matrix Name
Enter a unique, recognizable title for this approval matrix.
Description
This field is optional, but it is recommended that you provide a concise overview of the approval logic, target audience, or business rules governed by this matrix.
Apply to Subsidiaries
Select 1 or more subsidiaries for which this matrix applies. You can also enable the All Current Subsidiaries checkbox to apply the matrix to all currently active subsidiaries. Note that this setting does not automatically extend to subsidiaries created after the matrix is saved. Review and update the matrix whenever a new subsidiary is added or activated.
For long-term maintenance, the best practice is to select one subsidiary per matrix.
Apply to Record Types
Select the transaction type or types to which this matrix applies. You may select more than one, but for long-term maintenance, it is also best practice to select just one per matrix.
Currency
Select the base currency the matrix uses when comparing transaction amounts. If a transaction is in a different currency (for example, GBP when the matrix currency is EUR), the system recalculates the transaction amount using the exchange rate from the transaction date before evaluating whether approval is required.
Status
This field displays the current matrix status: Draft or Active. The field is blank during initial creation and populates after the matrix is saved or activated. Only matrices in Active status are applied to transactions.
Approval Hierarchy
Select an approval hierarchy definition. This definition must be created before configuring the matrix. For guidance on creating a hierarchy, see Approval Hierarchy Definition.
Once the matrix configuration is saved, a matrix grid is created based on this hierarchy definition's approval levels and thresholds. Therefore, this global matrix setting can no longer be updated later. Should you need to change it, you’ll need to create a new approval matrix.
Start Date
Enter the date from which the matrix should be active. The matrix only becomes active on this date if its status is set to Active.
End Date
Optionally, enter a date on which the matrix should automatically deactivate. If left blank, the matrix remains active for 5 years from the start date.
Overdue Threshold (hours)
Enter the number of hours within which a transaction must be approved. If this threshold is exceeded, the system marks the transaction as Overdue and moves it from Pending Approval to Overdue Approvals. The Approval Log in the audit trail is updated with a yellow exclamation mark.
Important: If the overdue threshold is reached for an AP Payment Batch record, the overdue status and elapsed time are displayed as text directly within the Status column of the ZoneApprovals subtab.
The Overdue status is also the prerequisite for the Approval Reminder feature. Transactions marked as overdue based on this threshold are included in consolidated daily reminder emails (if enabled), helping approvers prioritize pending items.
Important: Approval Reminders are not supported for AP Payment Batch.
Additional Options
Only Highest Approver Required
Important: This feature is not supported for AP Payment Batch.
Enable this option to restrict the matrix to only the highest-level approver. This is useful when many thresholds are present and a reduced approver set is preferred.
Require One Approval Per Employee
Important: This feature is not supported for AP Payment Batch.
By default, each approval log on a transaction requires a unique approval from its assigned employee — even when 1 employee qualifies as approver on multiple logs due to meeting different matrix criteria. Enable the Require One Approval Per Employee toggle to streamline this: once an approver approves their first log, subsequent logs assigned to that same approver are automatically approved.
Audit trail and reasons
If Approval Reason is enforced in your ZoneApprovals Configuration, the reason entered by the approver is captured only on the first approved log. All subsequent auto-approved logs are recorded with the following values:
- Status: Auto-Approved
- Approval Reason: "Require One Approval Per Employee enabled"
Supported approver types
This preference supports individual Employee approvers, as well as Group, Role, and Sourced approvers. If the approver of the first log is also a member of a subsequent Group, or is the designated Sourced Approver for a subsequent log, those logs are automatically approved.
For Role approval logs: a subsequent log assigned to a specific Role is only auto-approved if the user was actively logged into that exact Role when they approved their initial log. Simply having the role assigned on their NetSuite Employee record is not sufficient. Additionally, to approve an initial log as a Role approver, the user must be logged into that role to see the Approve and Reject buttons.
Super approvers
The interaction between this preference and Super Approvers depends on the context:
- When acting as the eligible approver: If a Super Approver is the designated approver for a log (directly, or via their own Group or Role), standard auto-approval rules apply to them as they would to any other employee.
- When overruling for another individual: If a Super Approver approves a log on behalf of another individual approver, subsequent logs assigned specifically to that individual are auto-approved. Subsequent logs assigned to that individual's Groups or Roles are not auto-approved.
- When overruling for a group or role: If a Super Approver approves a log assigned to a Group or Role of which they are not a member, the auto-approval behavior does not extend to other logs in that Group or Role.
Navigating the New Approval Matrix Screen
Once you've saved the matrix configuration, you will be taken back to the New Approval Matrix screen, which now displays a grid based on your hierarchy definition.
To navigate this screen, refer to the image and descriptions below.
- Filters - Allow searching and filtering rows in real time by approver name, group, role, or applied rule criteria. This makes managing large, multi-row approval matrices fast and efficient without reloading the page
- Edit Configuration - Opens the Matrix Configuration modal
-
Save as Draft - Saves the matrix setup and grid configuration as an inactive draft record. Clicking this transitions the page state to display the assigned Matrix Name with a
DRAFTbadge and exposes the draft lifecycle action buttons (Save, Save as New Draft, Activate, Inactivate) - Rules - Displays the routing criteria assigned to each row (e.g., transaction amount thresholds, departments, locations, classes, custom body/line fields). Rows are evaluated sequentially top-to-bottom, and the first matching rule set triggers approval routing across the defined approval levels.
- Add Rule - Opens the slide-out Rules Drawer on the right side of the screen. In this drawer, users can add, edit, or remove specific segment conditions and field criteria for that row.
- Approval Levels - Represents the sequential approval tiers or monetary thresholds defined by the selected hierarchy. Each column corresponds to a stage in the approval workflow that transactions must pass through when matching the row's rule criteria
- Select Approver - Assigns the designated approver for that level
- Make a Copy - Instantly duplicates the entire row—copying its configured rules and assigned approvers across all approval levels—to quickly create new rows with similar routing logic
- Delete - Deletes the specific row and all its associated rule criteria and level assignments from the matrix
- Add Approval Row - Appends a new blank row at the bottom of the approval matrix grid, ready for defining new rules and assigning approvers
Clicking on Save as Draft replaces the page name with the Matrix Name with a DRAFT label and shows the following buttons.
- Save - Saves any modifications made to the existing draft matrix without changing its status
- Save as New Draft - Clones the current matrix setup and saves it as a brand-new draft instance, allowing users to test alternative routing configurations while leaving the original draft untouched
-
Activate - Validates and transitions the matrix from
DRAFTstatus toACTIVE. Once activated, ZoneApprovals begins evaluating and routing live transactions against this matrix. -
Inactivate - Sets or maintains the matrix status as
INACTIVE, disabling transaction routing through this matrix while preserving its configuration for future use or editing
Step 2: Adding approvers
Overview
Once the matrix basics are defined, add 1 or more approval rows. When a transaction is submitted for approval, the system evaluates each row individually from top to bottom and populates the approval logs for any rows whose criteria are met.
Adding approvers
Under an approval level or column, click on Select Approver. Doing so will display a list of options grouped into four approver types: Sourced Approvers, Groups, Roles, and Users.
- Sourced Approvers are dynamic — instead of naming a specific person, ZoneApprovals queries the transaction or linked record at runtime to find the right approver. For example, it might source the employee's direct supervisor, the requestor on the purchase order, or the default approver defined on the vendor record. If the Sourced Employee Approver field on the employee record is blank, the system will use the default approver specified in the Approval Configuration record.
- Groups are NetSuite Entity Groups made up of employees. When a step is assigned to a group, any active member — or their designated delegate — can action the approval. For more information on using groups with ZoneApprovals, see the micro training called "Creating a Group for Zone Approvals."
- Roles work similarly as Groups, but instead of a named group, approval is open to any NetSuite user currently assigned that role — such as CFO or Controller.
- Users are simply a named individual employee record — a specific person explicitly assigned to that step.
When a transaction enters the workflow, ZoneApprovals evaluates the matching matrix line and resolves each step accordingly: Sourced approvers are looked up from the record, Groups and Roles are expanded so any eligible member can act, and Users are assigned directly.
Should you need to make any changes, simply click on an approver, and choose a new one from the picklist.
If an approval level is left blank, no approver is required for that threshold.
Step 3: Adding rules
Overview
If no rules are set, the approval configuration will apply to all the selected records in the selected subsidiaries for the matrix.
The approval matrix supports segmentation criteria at the header level, the line level, or both. When line-level segmentation is used, the approver reviews the total amount of applicable lines rather than each line individually. By default, the matrix includes the standard NetSuite segments: Department, Class, and Location. You can extend this with custom segments.
Important: For AP Payment Batch, only the standard header-level classifications — Department, Class, and Location — are supported.
Adding a rule
Click Add Rules to define the segments for a particular approval row. This opens a slide-out drawer on the right side of the screen titled Edit Approval Rules.
At the top of the drawer, you will see guidance text explaining how the rules work: rules define which records will follow this approval path. Only records matching the selected criteria will use this approval row.
The drawer displays the following default rule dropdowns in a vertical list: Class, Class (Line), Department, Department (Line), Location, and Location (Line). Each functions as a multi-select picklist, and each includes the default options Empty and Any. If you leave a segment empty, ZoneApprovals ignores that specific filter when evaluating the transaction. The matrix line will match transactions regardless of what value is on the transaction for that segment.
Once you have added all the desired rules, click Save.
Using the "Is Not" operator
Once you make a selection, the Is Not operator becomes available. For example, we want to apply this rule to all departments, except Sales. Instead of clicking multiple values, we can just click Sales, then Is Not.
The value turns red with an exclamation point before it, e.g. ! Sales.
Adding fields or a custom segment
Important: This feature is not supported for AP Payment Batch.
Standard or custom fields of type List/Record, Free-form, and Checkbox, as well as custom segments can be included as criteria for the matrix.
Click on the Additional Fields button in the top-right corner of the drawer. A dropdown will appear with two options: Add Fields and Add Segment. Selecting either will open a focused modal where you can choose the desired NetSuite data point and specify whether it applies to the Body or Line level. The new rule will appear at the top of the drawer once added.
To remove a rule, click the trash icon next to it. Take note: if you delete a default rule (such as Department, Class, or Location), the field will remain visible in the drawer but its values will be cleared. If you delete a custom segment or field, it will be completely removed from the drawer.
Optional: Reordering or Deleting Approval Rows
Reordering Approval Rows
To reorder approval rows, click and hold a row, then drag it to the desired position.
Deleting Approval Rows
Select the bin icon on any row to remove it. The row disappears immediately from the screen, but the change is only saved when the matrix record is saved.
Important: Transactions already in the approval process continue to follow the original matrix logic even after the matrix is altered, deleted, or inactivated.
Configuring 3-way match approval routing
Important: This feature is not supported for AP Payment Batch.
Overview
If you use ZoneCapture with the 3-Way Match functionality, you can configure approval routing based on discrepancies captured between Purchase Orders and Vendor Bills. When a discrepancy is detected on a Vendor Bill, the failed lines appear in the 3-Way Match Summary.
You can configure the matrix to trigger approval routing based on 1 or more of the following discrepancy types: Rate, Quantity, and Amount.
Adding the 3-way match discrepancy criteria
- When creating a new matrix, set Apply to Record Types: Vendor Bill.
- In In the main matrix grid, locate the row where you want to apply 3-Way Match routing. Click Add Rules in the Rules column for that row.
Inside the slide-out Rules Drawer, select 3-Way Match from the available rule segment options. If the 3-Way Match is not listed, follow the instructions in Enable ZoneCapture 3-Way Match.
-
Choose the specific discrepancy type(s) that should trigger approval routing for this row:
General 3WM Discrepancies – Triggers on any 3-way match failure.
Quantity 3WM Discrepancies – Triggers when line item quantities differ between the Purchase Order / Item Receipt and Vendor Bill.
Rate 3WM Discrepancies – Triggers when line item unit prices differ from the PO.
Amount 3WM Discrepancies – Triggers on total line or bill amount variance.
How Approval Routing Executes
When a Vendor Bill is saved in NetSuite:
ZoneCapture compares the Vendor Bill against the related Purchase Order and Item Receipt, populating the 3-Way Matching Summary sublist on the Vendor Bill record.
ZoneApprovals checks the sublist for failed matching lines.
If discrepancies exist, ZoneApprovals matches the discrepancy type against the matrix row rules and automatically routes the Vendor Bill to the approver specified for that discrepancy scenario.
Step 4: Activating an approval matrix
Before activating, confirm that the Start Date is set correctly. When all settings are correct, select the Activate button. The matrix is applied to transactions immediately from this point forward, wherever the criteria are met.
Optional: Inactivating an approval matrix
In the future, you can inactivate the matrix by clicking Edit, then Inactivate.