One of our customers recently asked us to streamline their vendor payment process. Active in the SaaS industry and relying on a network of partners to implement their platforms on their behalf, they wanted to make sure any partner payment (that the partner was entitled to get after a customer platform implementation) would not be made without getting the payment first from the customer for their subscription.
In order to automate this business process, we used a combination of 2 powerful standard functionalities in NetSuite:
- Payment Hold checkbox on vendor bill
- Schedule workflows linked to saved searches
First, thanks to the payment hold, once ticked, NetSuite follows the following behavior:
- The “make payment” button is not available on the vendor bill and a vendor bill payment cannot be done for that bill.
- Vendor bills with payment hold flagged do not show on the bill payments page for processing payments in bulk
- When processing vendor payments via the Electronic Payment SuiteApp, bills with “payment hold” flagged do not show up in the queue to pay.
We used this payment hold functionality in our custom business process to make sure any partner bill would not appear in the queue for payment, as long as the related customer invoice is not paid. This is why the payment hold checkbox has been ticked by default.
Secondly, instead of using custom scripts, we decided to schedule workflows to automate the business process of dynamically checking and unchecking the “payment hold”.
When you configure a workflow to run on a schedule, the workflow executes on the results of a saved search. When you choose to initiate a workflow on a scheduled basis, you select a saved search and then define the schedule on which the workflow runs. You can schedule the workflow to run one time, every 30 minutes, or at a certain time on a daily, weekly, monthly, or yearly basis. In our case, we decided to schedule the workflow on a daily basis at night (when activities within our customer NetSuite account are the lowest). Be aware that due to the running frequency of the workflow (being 30 minutes minimum), the process is not always immediate within NetSuite.
Before you define the schedule for the workflow, you must create the saved search.
The saved search must run on the same record type as the base record type for the workflow. The saved search must also include at least one filter set on the Criteria subtab for the saved search. We created a first saved search that would look for all the bills that have a related customer invoice with the status “paid in full”.
On the workflow definition page, select the Scheduled option, select the saved search, and set the schedule for the workflow.
At the scheduled time, NetSuite runs the saved search and initiates a workflow instance to run on each of the records in the search results.
Within the workflow state management, we created a state with a “set field value” action to “untick” the payment hold checkbox. This way, once the workflow runs across vendor bills records where a related customer invoice is paid, it releases the payment hold flag on vendor bills and makes those bills available for payment in NetSuite.
By combining those 2 standard functionalities, we managed to automate a business process that is vital for our customer.
Using on one side the payment hold functionality instead of an approval flow with a pending approval status allows to track correct accounting entries while still holding the payment. On the other hand, scheduling workflows based on saved searches allows to set automation within complex business rules.
- Easy maintenance by end-user
- No need to use SuiteScript
- Standard NetSuite functionalities
- Process is not immediate