Trolley has developed a native integration to Oracle NetSuite ERP to automate more accounts payable and reconciliation tasks and save you and your FinOps team a bunch of time.
Functionality live now:
Reconciliation/Bank Feed - automagically posting your bank feed activity of your Trolley account balance(s) to NetSuite in real time (in under 5 seconds). This includes passing useful meta data into NetSuite, including: Memo, Recipient ID, Payment ID, your own external Payment ID, and any other info you added as payment "Tags" in Trolley. Data is posted as Journal Entries, assigned to the GL accounts you assign in the mapping setup.
Payment Fees - posting any merchant payment fees against your selected GL, such as Bank Charges or Payment Processing Fees accounts.
Connecting your Trolley account to your NetSuite account
Integrations - Login to your Trolley Dashboard and go to Settings > Integrations, then select the NetSuite Integration. The NetSuite integration is only available to customers on the Platform Plan or Enterprise Plan. If you are on the Grow Plan, please contact our support team to ask about about upgrading to the Platform Plan.
2. Connection Setup - You will now need to connect and authenticate your Trolley account to be able to communicate with your NetSuite account. Click on the "Connection Setup" button to connect them together.
3. Connection Settings - You will need to enter your NetSuite Account ID, Subsidiary ID, and the 2 different sets of tokens and secrets generated form your NetSuite account. Please see the detailed step by step instructions below to find and generate these tokens.
NetSuite Account ID: You can find your NetSuite account ID at the beginning of the NetSuite URL. For example, if the URL is https://1234567.app.netsuite.com/, your account ID is 1234567. Note that if you are testing in NetSuite Sandbox, there maybe a suffix added, such as 123456_SB1.
Subsidiary ID: This is the Internal ID number of the subsidiary in NetSuite, for example, 1, 2, or 3. If you only have one Netsuite subsidiary/company, it is likely "1".
Consumer Key / Client ID & Secret: See below section for detailed instructions.
Token ID & Token Secret: See below section for detailed instructions.
Then press Update Settings button to save.
4. Connect - Now toggle the integration connection to "Connected" (green) to hook it up. You will now need to select the "Account Mapping" button to configure the mapping to your chart of accounts when posting to NetSuite.
5. Account Mapping - You need to map your appropriate Chart of Accounts / GL accounts in NetSuite to certain items in Trolley. We display a drop down list of all your GL accounts synced from NetSuite, and you should select the correct accounts that you wish to post against in NetSuite.
Note that there will be separate tables for: Trolley balances, PayPal balances, and Check balances (depending on which of these you have enabled). You will also see accounts under each for each currency you have enabled on your Trolley account.
Bank Account: You should map this to your "Trolley" bank account you have setup in NetSuite for that correct currency. If you don't have a Trolley GL account setup as a bank account in your NetSuite COA, you should do this first. For PayPal or Check, map this to your corresponding PayPal account that is connect to your Trolley account, for the correct currency. Same for Check. We display the account number and name to assist in matching.
Merchant Payment Fees: These are the merchant payment fees paid by you for sending each payment. These are normally mapped to Bank Charges or Payment Processing Fees on your NetSuite chart of accounts.
Recipient / Accounts Payable: This is where the payments are sent to, i.e. recipients and vendors. This is normally mapped to an Accounts Payable account on your NetSuite chart of accounts, and later cleared against the corresponding bills/vendor invoices.
Funding Source: This is the bank account that you will be funding that Trolley balance from, for example: your Trolley USD balance may be funded from your Chase Bank USD bank account. Only set this to a specific bank account if you will always be funding from that same bank account. If you will be funding from multiple bank accounts, it maybe best to setup a Bank Suspense account in your COA in NetSuite (if you don't already have one), and then you would later assign those posted transfers to the correct bank account.
Now press the "Update" button to save changes.
6. Done! Your Trolley account is now connected to your NetSuite Account. All future payments in Trolley will now automatically post instantly to your NetSuite account as journal entries in real time.
Important things to note:
You can pass payment information (meta data) to custom fields in NetSuite as part of the sync. This includes: Payment ID (the one generated by Trolley), Recipient ID (the one generated by Trolley), and your own External Payment ID. This is very easy to setup. You just need to add those fields as custom "Transaction Body Fields" in NetSuite. Make sure either one of: the field name or field id matches: "recipientId", "paymentId" or "externalPaymentId".
Tags in Trolley (only payment tags are supported) can be passed to custom fields in NetSuite, however you need to first setup the custom fields in your NetSuite account as custom "Transaction Body Fields", and the ensure you use the special naming convention for the payment tags. Make sure either one of: the field name or field id matches the tag you pass as a prefix in the Trolley payment tag. The format needed is "fieldname:data", for example "Program:12345678". In this example "Program" would map to a custom Transaction Body Field field name you have setup in NetSuite, and the "12345678" is the data string that would be passed into that field related to that payment. You must use a colon (" : ") between the field name and the data. (Note that you can include spaces, hyphens, and underscores in the prefix before the colon, and they will be ignored when passing to NetSuite. The flexibility of this means you can use this for a huge number of use cases, but some common ones might be: passing through your reference numbers related to that payment of recipient, passing program or client related meta data, passing department or location info, passing segmentation or reporting types, etc.
Historical payments will not post to NetSuite, only new payments that take place once the NetSuite integration is connected and live. If you need to add in historic transaction data, you should manually export those transactions to CSV or OFX format and import those to NetSuite manually.
If you toggle the integration off "Disconnected", it will not post new payments to NetSuite. Toggle to "Connect" to turn it back on.
If a transaction is not successfully posted to NetSuite on the first attempt, we will automatically re-attempt to post it to NetSuite every 30-minutes for the next 5 days until it is successful. If it is not successful at posting after the first attempt, we will indicate on the Balances page in the Dashboard next to each transaction if it has not yet successfully synced up to NetSuite. This may indicate that that some settings in your NetSuite account may need fixing, or that the credentials and mapping in Trolley may need updating. Once and settings have been corrected, you will have a button to manually push individual transactions to be synced to NetSuite, on the balances page.
Step-by-step Instructions for setting up your NetSuite account and creating access tokens ready to connect to Trolley
You will need to set up a few configuration settings in NetSuite to complete the integration with Trolley. This does not require any special technical knowledge, and we have provided below step-by-step instructions so anyone could complete it in around 30-minutes. You will need to have appropriate admin permissions in your NetSuite account to set this stuff up, or ask a colleague with admin permissions to do it for you. We have detailed below what these settings need to look like to work correctly.
A.) Enable Feature: REST Web Services
The Trolley integration we have built for you uses REST Web Services. To use REST web services, the relevant features must be enabled in your NetSuite account. Additionally, the RESTweb services user must have the required permissions assigned to the user’s role. See the following information about enabling the required features and assigning the required permissions.
Enable the REST Web Services feature in NetSuite at: Setup > Company > Enable Features, on the SuiteCloud sub-tab in the SuiteTalk (Web Services) section. Permissions needed are: REST WEB SERVICES. Tick the box and save. To use the feature, you must accept the SuiteCloud Terms of Service.
B.) Enable Feature: SuiteAnalytics Workbook
Enable the SuiteAnalytics Workbook feature at Setup > Company > Enable Features, on the Analytics sub-tab. Permissions needed are: SUITEANALYTICS WOOKBOOK - tick the box and save.
C.) Creating a custom User Role and assigning the Required Permissions to it
You will need to create a custom role in NetSuite and assign the required permissions to it manually. To create a custom role and assign the required permissions:
Go to: Setup > Users/Roles > User Management > Manage Roles, and select the New Role button.
Name the role "Trolley Integration Role" (or similar). Use the "Centre Type" of "Accounting Centre".
3. Now, you need to assign the required permissions. On the Permissions sub-tab towards the bottom of the page, you will need to add all the below permissions on 4 of the sub-tabs: Transactions, Reports, Lists and Setup. Below we list all the permissions needed for each sub-tab, and which level of permission is needed (View, Edit or Full).
Permissions > Transactions:
Make Journal Entry - Full
Permissions > Reports:
SuiteAnalytics Workbook - Edit
Permissions > Lists:
Accounts - Full
Items - View
Permissions > Setup:
Access Token Management - Full
Log in using Access Tokens - Full
REST Web Services - Full
User Access Tokens - Full
Now press the Save button. The role is now setup with all the permissions needed.
D.) Assign the "Trolley Integration Role" to a NetSuite user
Now that the role is created, you need to assign that role to one or more NetSuite users, this is the person/s that will be connecting your NetSuite account to your Trolley account, and access tokens can be generated for them. To do this:
Go to Lists > Employees > Employees > then, edit user of the selected user > Access tab > Roles sub-tab.
Add the role to that user, i.e. "Trolley Integration Role", or whatever you named it if different, pressing Add, then pressing Save.
E.) Creating your Consumer Key (Client Key) and Consumer Secret (Client Secret)
This step is about setting up Token-Based Authentication (TBA) for REST Web Services, and creating keys. To be able to use REST Web Services with Token-Based Authentication (TBA), you must create an "application" using an integration record. As the last step of this procedure, make sure you note the Consumer Key and Consumer Secret as you need to enter these credentials into Trolley in a moment.
In NetSuite, go to menu: Setup > Integrations > Manage Integrations, and click the New button.
Type in the Name of the integration to be called "Trolley Integration" (or something similar).
Make sure the "Token-Based Authentication" option is ticked. Now, make sure that the option "TBA: Authorization Flow" is unticked.
Note: If you already have an integration record for Trolley, you can reuse it by editing the integration and ticking the Token-Based Authentication option.
Your keys will now be generated and displayed at the bottom of the page when you save it. Please copy the Consumer Key (Client Key) and Consumer Secret (Client Secret) values to be used in the Trolley set up configuration.
Important: Please take note that Consumer Key and Consumer Secret values are displayed only once, so please make sure you copy them before going to another page. You can also reuse the consumer key and consumer secret to link one integration (consumer key and consumer secret) to multiple access tokens.
F.) Creating a user Token ID and Token Secret
After creating the integration application, continue with creating a token for a user to use with Trolley. Issue a new token and note its Token ID and Token Secret as you need to save that to Trolley. To do so, follow these steps:
Go to Setup > Users/Roles > Access Tokens > New.
Select the Integration record ("Trolley Integration"), the User, and Role created or referenced in the previous steps.
Token ID and Token Secret will be displayed after pressing the Save button. Please copy the Token ID and Token Secret values to be used in the Trolley Dashboard configuration for the NetSuite integration.
After the above steps are completed, you can now use the Consumer Key, Consumer Secret, Token ID, and Token Secret in your Trolley configuration. The other pieces of info you need to set it up are: your NetSuite Account ID, and your NetSuite Subsidiary ID.
G.) Finding your NetSuite Account ID
You can find your NetSuite Account ID at the beginning of the NetSuite URL. For example, if the URL is https://1234567.app.netsuite.com/, your account ID is 1234567.
Note that if you are testing in NetSuite Sandbox, there maybe a suffix added, such as 123456_SB1.
H.) Finding your NetSuite Subsidiary ID
This is the Internal ID number of the subsidiary in NetSuite, for example, 1, 2, or 3.
Go to: Setup > Company > Classifications > Subsidiaries > List. This will show the Subsidiary ID. It is the However, you might need to go to Home > Set Preferences > General Tab > Set Defaults and check the box for Show Internal IDs if it hasn’t already been checked.