This article is relevant if you are confused by NetSuite’s Bank Import automation options and considering implementing NetSuite’s custom bank plug-in connector without using a SuiteApp.
Background
Oracle continues to invest in opening the NetSuite platform to help with financial institution integration. At the time of this writing, Oracle offers a software framework to connect to financial institutions to download and process data to connect up to NetSuite Account Reconciliation Module and Automated Cash Applications. The configuration setup options can be confusing.
Most of the work our firm produces is related to US bank accounts. We suggest our clients use the NetSuite-provided “Bank Feeds” SuiteApp. The free-to-use NetSuite Bank Feeds uses the Yodlee platform behind the scenes to connect to US and Canadian banks. Our experience with this app has demonstrated that it generally works but has known limitations.
Per the NetSuite Help guide, “When integrating U.S. and Canada bank feeds in NetSuite, the SuiteApp primarily focuses on catering to small and medium-sized companies only. Thus, it can only support a maximum of 20 accounts (regardless of type), 10,000 transactions, or a combination thereof per unique login session for a financial institution. Connecting to financial institutions that exceed the maximum limitations per unique login session may eventually result in performance degradation and time-out errors.” In our day-to-day Bank Feeds application use, we have noticed that there are times, without reason, the configuration connection needs to be reestablished; this can be frustrating.
As an alternative to Yodlee as a backend provider, we also understand that NetSuite is starting to work with the Salt Edge tools to connect to financial institutions. At this time, we do not have assessments but look forward to sharing once we are grounded.
If for any reason, the Bank Feeds SuiteApp does not take care of your financial data integration requirements, NetSuite suggests that you try the Auto Bank Statement Import SuiteApp (ABSI). The Bank Statement Import SuiteApp requires that you also install NetSuite sFTP SuiteApp to allow for automatic connectivity using sFTP (assuming that the bank you are working with accepts this communication method). To prepare for Bank Feeds, we must further install the NetSuite Bank Statement Parsers Bundle to help with data processing.
Finally, if you can’t connect and process with the provided SuiteApps, you can use the framework to produce your own connection. Thus, this article seeks to sort out these options and help you better understand the custom-plug-in method.
Three Connection and Automation Approaches
To summarize the methods to connect with the bank for integration automation, attempt to install the software in this order and work in this fashion:
- Bank Feeds SuiteApp: use this method if you can. It’s the quickest approach, but be forewarned of the limitations.
- Auto Bank Statement Import SuiteApp: use this method if the Bank Feeds SuiteApp does not work. But we do not stop there. You need to install the NetSuite sFTP SuiteApp and the Bank Statement Parsers Bundle to give you the maximum capacity to set up a new financial institution configuration. You must sort out what your bank offers regarding connectivity and data formats. We often try to manually upload bank files to confirm our assumptions before trying to fully set this option up.
- Custom Plug-in: should you find that the previous two approaches do not work, use the framework to “roll your own.”
Given the abundance of NetSuite Help information, I will not go further into configuring the first two methods. However, by trying to work the previous two methods, you will be better informed of what is needed to get the custom framework-based solution working. Thus, to become centered, the attempts are worth the effort for learning.
Building a Connection to a Financial Institution (Without a SuiteApp)
If you are at this point, for whatever reason, you have decided to take matters into your own hands. This method will likely, but not in all cases, require SuiteScript Plug-in development.
The software framework has two primary functions:
- Financial Institution Connectivity Plug-in: this is the mechanism to establish network connectivity and authentication to communicate securely with the bank. Your requirements will depend on what the financial institution offers to securely connect. While NetSuite offers a discussion of sFTP, there are other approaches, including multi-factor authentication.
- Financial Institution Parser Plug-in: the mechanism to retrieve the related transaction data, link it to specific NetSuite cash accounts, and route it to the NetSuite application modules via the account import structures.
Financial Institution Connectivity
As discussed in the NetSuite Help pages, the bank connectivity discussion may produce some confusion. At the end of the day, the connectivity feature is working to bring in data and land it onto the NetSuite file system. The Connectivity Plug-in suggests using sFTP to connect to the financial institution. Other methods of connecting may be required. In our Systems Integration Practice, we frequently have to dig into the bank techniques offered to find the most manageable approach. We often use tools like PostMan to produce a “Hello World” type connection. We may need to create a separate SuiteLet to help us confirm the connection assumptions. Once confident we can connect and see the data we need, we can wire up the custom plug-in to work with our SuiteLet and any other custom record structures we have invented to establish and hold secure connection information.
Note, while NetSuite talks about their sFTP SuiteApp, we built a far superior tool that we give to our clients free-of-license charge. For example, the NetSuite automated daily import schedule is not customizable; but our model allows us to schedule data transfers with greater flexibility and provide better connectivity instrumentation and logging. With our tools, if we know we can connect to the bank with sFTP, we can effectively avoid the wiring up (scripting) part of the Connectivity to save us time and effort.
Click on the image to better see the connectivity interface.
Transaction Parser Plug-in
The transaction parser plug-in allows you to craft scripts to translate the financial institution data to link them to your NetSuite cash accounts. When you install NetSuite’s Bank Statement Parsers Bundle, it provides parsers for CSV, BAI2, CAMT053, OFX/QFX and MT940 file formats. Use these parsers — if you can. NetSuite documentation supports the ISO20022 file format; but I did not see this format supplied in the parser bundle. Note these parsers are locked and not modifiable. However, due to existing client work, our firm has full access to the code patterns that we can build on. We have found that there are times when some small nuances in data supplied by the bank under a particular format may not process. See my 2019 article, Tip: Fixes for OFX / QFX Wells Fargo Files for NetSuite Bank Online Statement Uploads.
Assuming you now need to parse the data yourself, you will need to maintain a mapping of the Financial Institution Account Data to your NetSuite Bank Accounts so that you can effectively teach the Bank Import system how data is mapped into NetSuite’s structures so that the built-in Account Reconciliation and Automated Cash Application can process.
Thus, the idea behind the plug-in is that you pick up the data from the NetSuite file system (gathered from the previous connectivity step) and then, with your custom account linking mechanics, you will then drive the data into the Bank Import data structures — similar to what you would do if you drove the data in through a manual file upload and pointed to your custom parser plug-in. The plug-in effectively is a tier that allows data ingestion from the framework.
Click on the image to better see the reference to the parsers.
Readers may wish to review my 2022 article, Gain Access to NetSuite’s Bank Import History Detail Page, as NetSuite has obscured important record visibility required to help confirm detailed record loading and error management.
Custom NetSuite Financial Institution Connection Video Demonstration (13:07)
For readers to better appreciate the plug-in setup and development mechanics, I discussed with Matthew M., Senior Technical Analyst, his recent client work to implement NetSuite’s Custom Connectivity and Parser Plug-in.
Click here to directly see the video.
Work with NetSuite Leadership to Build a Custom NetSuite Bank Connection and Parser
I hope this article has sorted out the options and will help you lead a successful configuration. The outline should also help with data downloads and processing from credit cards and other systems that seek to take advantage of the NetSuite Account Reconciliation feature. We often find that once folks get to SuiteScript, the implementation demands are more significant. This is where it makes sense to have a relationship with a NetSuite expert who understands business first but has deep technical and software development capacities to address real-world challenges.
If you found this article relevant, feel free to sign up for notifications to new articles as I post them. If you are challenged to solve your financial institution integration, let’s have a conversation.
Is there an API end point for this, to import Bank Details, instead of going the manual route where I have to hit the upload button.
Thanks,
Mark
Hi Matt,
See my two articles posted here:
https://blog.prolecto.com/2023/03/18/learn-how-to-craft-a-netsuite-financial-institution-parser-for-bank-import-automation/
https://blog.prolecto.com/2023/10/14/navigating-netsuites-bank-feeds-suiteapp-configuration/
I don’t think of the this part of the system like the rest of the SuiteScript API. There is some capacity if you work within it’s event model.
Marty