Sage 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.
- Connect to a business entity’s accounting system using Rutter Link. See Getting Started for more info on creating your first connection.
- Get listed as a bank within all Sage products (including Sage Intacct and Sage Business Cloud).
- Onboard your customers to Sage 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.
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:
Set up your Sage Bank Feeds Configuration. Go to Rutter Dashboard > "Platforms" tab, then select "Bank Feeds" and click "Configure" for Sage.
Input your information into the “Bank Feeds Configuration” form.
![Bank Feeds Config UI](/_next/image?url=%2Fcontent%2Fguides%2Fbank-feed-config-ui.png&w=1920&q=75)
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.
- 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
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.
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
.
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
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.
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.
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.
To create a One-Time password for your customer, please use Rutter’s POST /bank_feeds/otp API.
1{
2 "bank_feed_otp": {
3 "expires_at": "2023-01-10T00:00:00.000Z",
4 "otp": "00000000-0000-0000-0000-000000000000"
5 }
6}
- 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.
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.
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
- You can only submit transactions for one Bank Feed Account at a time.
- You can only submit one batch of transactions at a time. You must wait for the previous batch to complete before submitting another batch.
- 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 isactive
). - Only posted transactions should be submitted.
- Transactions must be in chronological order.
- You must provide at least one transaction per sync request, and at max 1000.
- 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.