Netsuite Bank Feeds

Back to Bank Feeds

Setting up a Netsuite Bank Feeds Workflow with Rutter

Introduction

Rutter API enables you to support setting up Bank Feeds for your customers' accounting instances. This allows you to sync bank transaction data into the instance to enable reconciliation for an accountant which ensures the accuracy and validity of your customers' books.

  1. Connect to a business entity’s accounting system using Rutter Link. See Getting Started for more info on creating your first connection.
  2. Onboard your customers to Netsuite Bank Feeds to establish a connection between their bank account and their accounting instance.
  3. Continuously sync transaction data into the accounting instance to enable reconciliation.

Platform Setup

Data Sync Configuration

Make sure to include these Rutter Objects in your Data Sync Configuration through the Rutter dashboard.

  • Bank Feed Account
  • Bank Feed Transaction

Connect to the Accounting System

Embed Rutter Link into your application and walk through an end to end business authentication flow in order to create a new Connection. This Connection represents the business accounting system and contains an access_token used to read and write data for that instance.

Make your first connection in minutes

Follow our guide to get up and running

Explore Quickstart

Pre-requisites on your NetSuite Instance

Please reach out to Rutter if you'd like access to this feature after a Rutter connection has been established with your User's NetSuite instance.

Ensure your User's "AccountLink" NetSuite bundle is updated to at least Version 26. We will then configure your User's bundle with the required resources programmatically.

Please ask your Netsuite Users not to manually update or uninstall & reinstall the "AccountLink" bundle once we have configured the bundle as this will remove the resources required for this feature. If this happens, please reach out to Rutter and we will reconfigure the bundle for you.

Implementation Steps

Step 1: Create a Bank Feed Account

Creating a Bank Feed Account in a NetSuite instance accomplishes two things:

  1. A new Financial Institution is created in NetSuite with your organization’s name.
  2. A connection is established between the Financial Institution bank account and the specified GL account in NetSuite.

The GL account representing the bank account may already exist in NetSuite or may need to be created. You can use the LIST /accounts API to find the Rutter ID of an existing account, or the POST /accounts API to create a new one if needed.

Once set up, the new Financial Institution will appear in the "Financial Institutions List" tab in the NetSuite UI. The new Bank Feed Account will be visible under the "Format Profile" section. Any additional Bank Feed Accounts created later will be attached to the same Financial Institution and listed in the Format Profile. You can begin syncing Bank Feed Transactions after creating the first Bank Feed Account.

Financial Institution page example

Use Rutter’s POST /bank_feeds/accounts API endpoint to supply the bank accounts your customer would like to set up with a Bank Feed.

Example Create Bank Feed Account Request Body
1
{
2
"bank_feed_account": {
3
"account_id": "00000000-0000-0000-0000-000000000000",
4
"internal_bank_account_id": "0674101002388",
5
"parent_bank_feed_account_id": "00000000-0000-0000-0000-000000000000",
6
"transaction_start_date": "2023-02-02T00:00:00.000Z",
7
"bank_account_type": "bank",
8
"currency_code": "USD",
9
"name": "Regan's Bank Account",
10
"available_balance": 1546.23,
11
"bank_account_number": "182237382",
12
"current_balance": 1833.21,
13
"line_of_business": "small business",
14
"routing_number": "123456789",
15
"additional_fields": {
16
"override_existing": true
17
}
18
}
19
}

The feed_status field of the posted Bank Feed Accounts will be inactive to start. Once the first set of transactions has been synced (see Sync Bank Feed Transactions), the bank feed account will be activated in NetSuite and the feed_status field will be set to active.

Example Create Bank Feed Account Response Body
1
{
2
"bank_feed_account": {
3
"id": "00000000-0000-0000-0000-000000000000",
4
"account_id": "00000000-0000-0000-0000-000000000000",
5
"internal_bank_account_id": "0674101002388",
6
"parent_bank_feed_account_id": "00000000-0000-0000-0000-000000000000",
7
"last_statement_date": null,
8
"next_payment_date": null,
9
"transaction_start_date": "2023-02-02T00:00:00.000Z",
10
"bank_account_type": "bank",
11
"feed_status": "active",
12
"available_balance": 1546.23,
13
"available_credit": null,
14
"bank_account_number": "182237382",
15
"credit_limit": null,
16
"currency_code": "USD",
17
"current_balance": 1833.21,
18
"finance_charges": null,
19
"last_statement_balance": null,
20
"line_of_business": "small business",
21
"minimum_payment_amount": null,
22
"name": "Regan's Bank Account",
23
"next_payment_amount": null,
24
"past_due_amount": null,
25
"purchases_apr": null,
26
"routing_number": "123456789",
27
"last_synced_at": "2023-01-02T02:34:56.000Z",
28
// ...
29
}
30
}

Step 2: Sync Bank Feed Transactions

There are two ways that Netsuite ingests transactions from Rutter:

  1. Netsuite will automatically run a sync for the latest transactions for every active Bank Feed Account every 24 hours.
  2. The end user can click on the “Update Imported Bank Data” button in the “Match Bank Data” tab to trigger a manual sync for the latest transactions. Triggering a manual sync can only be done once per hour per GL account.

Once the bank transaction data has been successfully ingested by Netsuite, the end user can now reconcile the bank transactions against accounting transactions.

NetSuite Bank Feed Transactions can be seen in the “Match Bank Data” tab of the NetSuite UI, where it’s used by finance teams for reconciliation.

Match Bank Data page example

To sync transaction data for a Bank Feed Account, use the POST /bank_feeds/transactions API. We suggest syncing transactions every 24 hours, though this can be done at any frequency you prefer. The transaction_ready status indicates when Rutter is able to accept new transactions for a bank feed account. For Netsuite, this will always be true after a bank feed account has successfully been created.

Example Create Bank Feed Transactions Request Body
1
{
2
"bank_feed_transactions": {
3
"bank_feed_account_id": "00000000-0000-0000-0000-000000000000",
4
"transactions": [
5
{
6
"transaction_id": "ACRAF23DB3C4",
7
"posted_at": "2023-02-02T02:34:56.000Z",
8
"amount": -300,
9
"description": "Office supplies",
10
"transaction_type": "debit",
11
"payee": "Office Depot"
12
}
13
]
14
}
15
}

After you have synced transactions to Rutter, NetSuite will ingest these transactions automatically at a 24 hour cadence. All Bank Feed Transactions contain a platform_ingested field which represents whether it has been successfully sent to the third party accounting system.

Example Create Bank Feed Transactions Response Body
1
{
2
"bank_feed_transactions": [
3
{
4
"id": "00000000-0000-0000-0000-000000000000",
5
"bank_feed_account_id": "00000000-0000-0000-0000-000000000000",
6
"transaction_id": "ACRAF23DB3C4",
7
"posted_at": "2023-02-02T02:34:56.000Z",
8
"amount": -300,
9
"description": "Office supplies",
10
"duplicate": false,
11
"payee": "Office Depot",
12
"platform_ingested": true,
13
"transaction_type": "debit",
14
"last_synced_at": "2023-01-02T02:34:56.000Z"
15
}
16
]
17
}

Transaction Syncing Rules

  1. Only sync transactions that have been marked as posted by the Financial Institution.
  2. transaction_id's within a list of transactions in a POST request must be unique, otherwise the input will be rejected. If you are unsure whether a transaction has been synced before in a previous POST request, you can still include the transaction in the request and Rutter will handle the deduplication. The POST response for an already synced transaction_id will include a duplicate: true field, as well as the data that was previously synced- the new input will not override the previously synced data.
  3. You must provide at least one transaction per sync request, and at max 1000.
  4. We suggest syncing transactions every 24 hours, though this can be done at any frequency you prefer.

Fixing Missing Transactions

In some cases, your customers may notice transactions missing from their bank feed in NetSuite. Here's how to troubleshoot this issue:

Locating Transactions in NetSuite

Transactions can appear in several locations depending on their status:

  • Unmatched, matched, or excluded transactions appear in tabs within the Match Bank Data view.
  • Cleared transactions (submitted after matching) can be found in the Reconcile Account Statement view. After selecting the relevant account, go to the Review tab, then click on Matched under the View Details column to see the corresponding bank transactions.
  • Once transactions have been fully reconciled and a report created, individual transactions are no longer directly visible. However it is possible to delete a Reconciled Statement (essentially undoing the reconciliation), which puts the corresponding transactions back into the "cleared" state.

Monitoring Bank Feed Imports

We recommend guiding your end users to set up the Banking Import History view. This will help them track ingestions and verify that the imported count matches what they expect:

  1. Click "Personalize" in the upper right corner of the dashboard
  2. On the Standard Content tab, click the List icon or drag it onto the dashboard
  3. In the portlet settings, select "Bank Statement Import" from the List Type menu and click Save
  4. Click "Edit/View" to see lists of imported transactions

Re-syncing Missing Transactions

In the rare cases that transactions are truly missing, you can reach out to the Rutter support team to request that the missing transactions are marked for re-ingestion in Rutter. Transactions marked for re-ingestion will be processed during the next ingestion cycle (either automatically every 24 hours, or when the end user triggers a manual sync).

Previously ingested transactions will appear in the "Excluded" tab if they're duplicates, or in the "To Be Matched" tab if not previously ingested.

Reviewing NetSuite Logs

For persistent issues, customers can access NetSuite plugin logs to provide additional information:

  1. Navigate to "Script Execution Logs" in NetSuite
  2. Set the filter to correspond to the relevant ingestion period
  3. Export the logs (preferably to CSV) for further analysis
  4. Share these logs with Rutter support if additional troubleshooting is needed