Sage Bank Feeds

Back to Bank Feeds

Setting up a Sage 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. Get listed as a bank within all Sage products (including Sage Intacct and Sage Business Cloud).
  3. Onboard your customers to Sage Bank Feeds to establish a connection between their bank account and their accounting instance.
  4. Continuously sync transaction data into the accounting instance to enable reconciliation.

Our Sage Bank Feeds API supports Sage Intacct and Sage Business Cloud.

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

Get listed as a bank within Sage products

When your customer wants to set up a Bank Feed between their accounting instance and their bank account, they will need to select you from a list of banks within Sage's "Connect Your Bank" flow.

To get listed, you will need to follow the steps below:

  1. Set up your Sage Bank Feeds Configuration. Go to Rutter Dashboard > "Platforms" tab, then select "Bank Feeds" and click "Configure" for Sage.

  2. Input your information into the “Bank Feeds Configuration” form.

Bank Feeds Config UI
  • Name: Your organization's name for Sage's "Connect Your Bank" page. Include "(powered by Rutter)" at the end (Sage requirement).

  • Company Logo URL: Link to your logo for white-labeling the Rutter-powered authentication flow in Sage's setup process.

  • Company Country Code: Your company's supported region.

  • One-Time Password Intructions: Directions for customers to obtain their OTP, displayed on the white-labeled authentication page. Plan how to expose this password to customers, preferably via a button in your UI. The password will expire 1 hour after generation.

  1. Contact Rutter Success Team to continue onboarding. We will reach out to our Sage partner to confirm they have received your submitted information. If so, you will be listed as a bank in Sage products. You will start in a beta status, which means your customers will need to provide an access code to connect to your bank. We will request this access code from Sage and share it with you. You will move out of beta at Sage's discretion, likely after you have successfully onboarded a few customers.

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

Bank Feed Implementation Steps

Step 1: Create a 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. Your customer will be able to select any of the accounts you supply through this endpoint during the Sage Bank Feed authentication flow.

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 a customer has gone through the authentication flow and successfully selected banks to pull from, 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": "inactive",
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: Sage User Bank Feed Setup Process

  1. When your customer is ready to set up bank feed, you can instruct them to go to Sage’s “Banking” section, select an account for which they’d like to set up a feed, and select “Connect To a Bank”. This set of actions may vary slightly depending on the Sage product.

  2. They will then be prompted to select you from a list of banks. They should search the name you provided through your Sage Bank Feeds Platform Configuration in your dashboard. Note: If you are still in a beta status, your user will need to input an access code after they have selected your bank. Please reach out to Rutter for this access code, which we will request from our Sage partner.

  3. Next, a Rutter-powered authentication page in Sage will prompt your customer for a One-Time Password (OTP). The page displays the instructions you provided in your Bank Feeds Configuration within the Rutter Dashboard. This OTP, generated by Rutter, allows secure authentication without accessing the user's actual credentials. The authentication page is white-labeled and integrated into Sage's Bank Feed setup process. OTP page example

To create a One-Time password for your customer, please use Rutter’s POST /bank_feeds/otp API.

Example Generate OTP Response Body
1
{
2
"bank_feed_otp": {
3
"expires_at": "2023-01-10T00:00:00.000Z",
4
"otp": "00000000-0000-0000-0000-000000000000"
5
}
6
}
  1. After successful OTP authentication, your customer will select the account to connect from the list you provided through POST /bank_feeds/accounts in Step 1. They will be asked to choose the start date for the Bank Feed's transaction history. This will be reflected in the transaction_start_date field of the Bank Feed Account once they have completed this process.

Step 3: Sync Transaction Data

In order for you to start syncing transaction data for a Bank Feed Account, your customer must have successfully authenticated and set up the Bank Feed through their Sage product. To check the authentication status of a Bank Feed Account, use GET /bank_feeds/accounts API. Once the transaction_ready field is true, transactions can start being synced for this account.

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
"transaction_start_date": "2023-02-02T00:00:00.000Z",
8
"bank_account_type": "bank",
9
"feed_status": "active",
10
// ...
11
}
12
}

To sync transaction data for a Bank Feed Account, use POST /bank_feeds/transactions API. We suggest syncing transactions every 24 hours.

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
}
  • If no transactions have been synced, use the transaction_start_date field to determine the date when transactions starts syncing from. You can fetch synced transactions with GET /bank_feeds/transactions API.

  • If the Bank Feed Transaction input is valid, the response will include a job ID which can be used to check the status of the POST request using Fetch a Job API. Store this job ID for reference. You cannot post another batch until the previous job completes.

  • If the job completes successfully, transactions have synced into the accounting system. You can now post the next batch, starting from the last transaction date in the previous batch.

  • If the job fails, the transactions have not synced into the accounting system. You should retry the POST request after fixing the error described in the job response.

Transaction Syncing Rules

  1. You can only submit transactions for one Bank Feed Account at a time.
  2. You can only submit one batch of transactions at a time. You must wait for the previous batch to complete before submitting another batch.
  3. You can only submit transactions for a Bank Feed Account that has been authenticated and set up through the Sage product (i.e. the feed_status field is active).
  4. Only posted transactions should be submitted.
  5. Transactions must be in chronological order.
  6. You must provide at least one transaction per sync request, and at max 1000.
  7. Each transaction must have a unique identifier (transaction_id). The identifier for a transaction must never change. The same transaction identifier should not occur more than one time for a Bank Feed Account.