Netsuite 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.
- Connect to a business entity’s accounting system using Rutter Link. See Getting Started for more info on creating your first connection.
- Onboard your customers to Netsuite Bank Feeds to establish a connection between their bank account and their accounting instance.
- 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
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:
- A new Financial Institution is created in NetSuite with your organization’s name.
- 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.
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.
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
.
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:
- Netsuite will automatically run a sync for the latest transactions for every active Bank Feed Account every 24 hours.
- 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.
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.
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.
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
- Only sync transactions that have been marked as posted by the Financial Institution.
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 syncedtransaction_id
will include aduplicate: true
field, as well as the data that was previously synced- the new input will not override the previously synced data.- You must provide at least one transaction per sync request, and at max 1000.
- We suggest syncing transactions every 24 hours, though this can be done at any frequency you prefer.