What is Data Sync?
Data Sync is a Mono feature that allows you to fetch new data (balance, transactions, and statements) from financial accounts connected to your web or mobile app. This data is retrieved from your customers' financial institution and can be manually or automatically refreshed to bring up up-to-date information.
Types of Data Sync
There are two types of data sync:
1. Automatic Data Sync:
Every 24 hours (at midnight), Mono automatically refreshes all connected accounts to your business. After this automatic refresh, the transaction data of all connected accounts are updated automatically. And while connected accounts are refreshed every 24 hours by default, you also have the option to update the frequency to every 6 hours (4 times a day) or every 12 hours (twice a day).

2. Manual Data Sync:
If you want to retrieve new data without waiting for the automatic refresh on all your connected accounts, Manual Data Sync allows you to manually trigger a request to update the customers' financial data. To trigger Manual Data Sync, you can do it via an API call here. With manual Data Sync, you have a rate limit of one API call per connected account, every two minutes. Also, only accounts connected after Data Sync was enabled for your business, will receive webhook events notifications.

How does Data Sync work?
The basics
When Data sync is triggered on a connected account, it refreshes the account with the bank and fetches updated data. For accounts that have 2FA/MFA(Multi-Factor Authentication) enabled, they need to be prompted to provide authorization before the Data Sync process can be run.
A clearer picture of how Data Sync works
By default, the account balance and transaction data of all connected accounts for every business are refreshed automatically every 24 hours. During this 24-hour period, any call made to our Information, Transaction, and Statement endpoints, etc will not return updated data till 12.00 am.
For example, Mr. Adam connects his account to a business named XYZ Ltd, at 2.00 pm on 19th August 2021 with his account balance at NGN 10,000 and thirty minutes later, he performs various transactions worth NGN 5,000. At this point, the current balance in his bank app will be displayed as NGN 5,000, but when XYZ Ltd checks the Information API endpoint, NGN 10,000 will still be displayed as his balance. To get the current balance/transaction history on Mr Adam's account, there are two ways XYZ Ltd can do this:
The first option is to wait till 12.00 am when Auto Data Sync refreshes all accounts connected to XYZ Ltd including Mr. Adam's account. After 12.00 am, on 20th August 2021, the Information endpoint will then return the new and current account balance. This is what we refer to as Automatic Data Sync.
The second option is for XYZ Ltd to trigger the Data Sync endpoint manually. This is quite useful for businesses/developers that cannot wait till the auto-refresh time to get new data. Once triggered successfully, XYZ Ltd can then call the Information endpoint to get the real-time account balance of Mr. Adam. What this means is that XYZ Ltd doesn't have to wait till midnight to get the updated account balance on a connected account. We refer to this process as Manual Data Sync.
An edge case
There may be cases where a user changes the password to their account(s), so an OTP, security answer, token, CAPTCHA, etc will be required from their bank before such account(s) can be re-synced successfully and new data returned. This is the Re-authorisation or MFA (Multi-Factor Authentication) case.
When a manual sync trigger fails, a failed response will be sent in the status field as "failed", followed by a reauthorisation_required event which contains the Account ID, of the user/customer.
For automatic sync, a reauthorisation_required event will be sent, which contains the Account ID of the user/customer.
How to set up re-authorisation on MFA-enabled accounts
The first thing to do would be to call the Re-authorisation endpoint by passing in the Account ID. A temporary reauth token will be sent which will expire after 10 minutes.
Next, you will pass this reauth to the connect.reauthorise() handler, which replaces the connect.setup() handler in your Mono Connect frontend (e.g JS, Android, IOS). Now the Mono widget will pop up prompting your user to only re-authorise.

Once this is successful, a webhook notification event will be sent to your business indicating that new data is currently available. You can then proceed to call your desired endpoint for the newly returned data.
How you can build with Mono Data Sync
Finance Management
For personal finance management apps like Inflow, after a user signs up, they would have to connect their bank account to the PFM using Mono. Mono then returns the updated user data from the connected financial institution and provides the requested data at each endpoint.
If more transactions are carried out after the initial connection via Mono Connect, they aren't returned as part of the data in the desired endpoints. To retrieve the user transactions in real-time, the personal finance management app will need to enable Data Sync.
When Data Sync is initiated, we pull in up-to-date transaction/balance data from their bank or institutions with the user's account ID as an identifier. This allows the finance management app to track recent transactions and cash flow on a connected account.
And for a corporate finance management tool or app like Float, that helps SMEs or business owners to micro-track their expenses and manage their finances with ease, it would be necessary to help these businesses to identify their revenues and expenses on the fly, on all their business accounts.
With Automatic Data Sync enabled, they can refresh all connected accounts daily, and then fetch real-time transactions for reporting and bookkeeping purposes.
Also, for each time a business owner logs into the finance management app, Data Sync can be triggered manually to fetch new transaction data on their connected accounts and then show these insights (be it balances, transactions etc) on their dashboard when it is processed and ready.
Lending
For lending companies such as Aella, one of the important parts of the loan application process is getting access to customers' financial history in order to assess their creditworthiness and decide whether to offer them loans or not. Usually, this means they need to retrieve the customer's bank statement for three or six months, as the case applies.
Now, what if a customer returns a second time to borrow a much higher loan than the previous amount borrowed. How do you view their past transaction history and re-assess their creditworthiness without putting them through the repetitive process of sharing their statements multiple times?
This is where Data Sync comes into play. For example, If Ada borrowed NGN50,000 in April 2021 and during the process, connected her bank account through Mono to share her transaction history with the lender.
When she returns to obtain a loan of NGN150,000 in August 2021, all she simply has to do is log into the lender's app or website, and Data Sync will be manually triggered to share her updated transaction history with the lender in real-time. With this, the lender can then closely monitor the returned transaction data to underwrite her and determine whether to increase or decrease her credit limit. This also ensures that lenders are able to assess customers' creditworthiness easily and offer loans faster.
Getting started with Data Sync
How to set up automatic data sync
Log into the dashboard (app.mono.co).
Expand the tab that displays your business name and click on Settings.
Navigate to Billing > Subscription> Addons.

How to set up manual data sync
Navigate to the Manual Data Sync section on the API reference page to see the endpoint used to trigger the sync. The parameters required are:
Account ID of the connected account
Mono Secret Key from App created on the Dashboard
Benefits of using Data sync
For businesses/developers:
Up-to-date data for all connected accounts
Ability to monitor updates on connected accounts on demand
Perform checks and fact-finding on connected accounts
For end-users:
Your users can easily authorize with their bank when your business needs their recent or updated transaction data.
Users can seamlessly connect and provide financial data to businesses and organizations that need it.
NOTE: Please go through this documentation for more technical insight on how to implement Data Sync to your business solution