Enable your users to synchronize accounts payable and receivable data with popular accounting solutions.

Overview

Many SMEs use various accounting solutions to store and prepare their financial data for submission to tax authorities. With Monite, you can connect your users’ data to their preferred accounting software and pull necessary financial data for import into your interface, as well as push data in case they need to do any post-accounting work outside of your application.

Supported accounting systems

Each entity can connect to one of the following accounting systems:

  • QuickBooks Online
  • Xero

New supported accounting systems will be added in future releases of our platform. If you have any specific requests, please contact our Support team.

An entity can connect their data to only one accounting system. If they want to connect to another accounting system, they have to disconnect the currently connected system first.

Requirements and considerations

  • All Monite partners that intend to support accounting integration must create developer accounts in the accounting platforms they intend to support.
  • Each entity that wants to connect to an external accounting system (like Xero or QuickBooks) must have an account with that system before attempting to create an accounting connection with the Monite API.

How the integration works

The first step required to enable accounting integration for an entity is to establish a connection to an entity’s accounting software and ask an entity user to authorize the connection. Once the connection has been established, the entity’s financial data will be synchronized automatically between Monite’s and the entity’s accounting software. After the initial synchronization, Monite will automatically trigger synchronizations between both systems every 24 hours.

Monite does not push older invoices or bills to the entity’s accounting software during the initial synchronization. Therefore, only invoices and bills eligible for pushing after the accounting synchronization will be pushed to the accounting software.

You can track the data synchronization status by calling GET /accounting_connections/{connection_id}. This endpoint returns information about the entity’s connection to an accounting system including the status of the connection and the last synchronization.

What data is synchronized

Currently, Monite pulls and pushes the following data from and to accounting systems. Data is synchronized every 24 hours:

DataPulled for matchingPulled for creationPushed
Ledger accounts✔️References to ledger accounts in invoice line items, and products
Counterparts✔️✔️
Products✔️✔️
Tax rates✔️
Accounts Receivable: invoices✔️
Accounts Payable: invoices (bills)✔️

Entities can also pull records from the accounting system on demand by calling POST /accounting_connections/{connection_id}/sync.

How data is synchronized

After every synchronization, you can track its status and any errors returned by calling GET /accounting_synched_records/{synced_record_id}. For more information, see Check synchronization logs.

Set up integration with an accounting system

1. Prerequisites

Before starting an accounting integration, you must have a partner account in Monite.

2. Generate a Monite partner access token

To authenticate your API calls with Monite, you need to generate a new partner-level token. To do this, call POST /auth/token with the following parameters:

1curl -X POST 'https://api.sandbox.monite.com/v1/auth/token' \
2 -H 'X-Monite-Version: 2024-01-31' \
3 -H 'Content-Type: application/json' \
4 -d '{
5 "grant_type": "client_credentials",
6 "client_id": "YOUR_PARTNER_CLIENT_ID",
7 "client_secret": "YOUR_PARTNER_CLIENT_SECRET"
8 }'

The successful response contains the token and its validity time (in seconds):

1{
2 "access_token": "eyJ0eXAiOiJKV1QiLCJhb...",
3 "token_type": "Bearer",
4 "expires_in": 1800
5}

3. Specify your accounting provider

Next, specify the accounting provider in your Monite partner settings. To do this, call PATCH /settings and set the accounting.provider field to railz:

1curl -X PATCH 'https://api.sandbox.monite.com/v1/settings' \
2 -H 'X-Monite-Version: 2024-01-31' \
3 -H 'Authorization: Bearer YOUR_PARTNER_TOKEN' \
4 -H 'Content-Type: application/json' \
5 -d '{
6 "accounting": {
7 "provider": "railz"
8 }
9 }'

4. Set up entities in Monite

If you have not already, create entities in Monite that represent your customers. Since the connection to an accounting system is configured on the entity level, Monite partners must have entities in Monite before proceeding further.

Entities that use accounts receivable must also create their product catalog in Monite before setting up an accounting connection.

5. Set up partner accounts on accounting platforms

Partners must set up accounts in QuickBooks and Xero to successfully support an accounting integration on these platforms.

6. Provide accounting credentials

After successfully creating a partner account in QuickBooks or Xero, partners must now provide their secure application keys (API Key and Secret) for whichever platform they intend to support on Monite.

To do this, please send the credentials to dev-accounting@monite.com via a secure password manager or file sharing tool, such as BitWarden.

7. Establish entity connection to an accounting system

To establish a new accounting connection that allows an entity to synchronize all its accounting data with a third-party accounting system, call POST /accounting_connections. In this request, you must pass the entity ID in the X-Monite-Entity-Id header:

1curl -X POST 'https://api.sandbox.monite.com/v1/accounting_connections' \
2 -H 'X-Monite-Version: 2024-01-31' \
3 -H 'X-Monite-Entity-Id: ENTITY_ID' \
4 -H 'Authorization: Bearer YOUR_PARTNER_TOKEN' \

The successful 201 Created response contains the information about the newly created connection:

1{
2 "id": "cd16c05b-bd05-45c8-822c-a5aa4a6b1e78",
3 "created_at": "2024-06-08T19:52:22.557280+00:00",
4 "updated_at": "2024-06-08T19:52:22.557291+00:00",
5 "connection_url": "https://sites.railz.ai/ste-bac47d52-c7f3-452c-83d3-de55d6193924",
6 "errors": null,
7 "last_pull": "2024-06-08T19:52:22.557307+00:00",
8 "platform": null,
9 "status": "pending_auth"
10}

Note down the connection_url value as you will need it on the next step.

Each entity can connect to only one accounting system at a time. The entity must be disconnected from any previous system before they can successfully establish a new connection. To disconnect an entity from an accounting system, call POST /accounting_connections/{connection_id}/disconnect endpoint. For more information, see Disconnect an accounting system

8. Entity user authorizes their connection

Send the connection_url value obtained on the previous step to the entity representative. This URL looks like this:

https://sites.railz.ai/ste-bac47d52-c7f3-83d3-452c-de55d6193924

The entity user must navigate to this URL in their browser. This opens an authorization page, where the entity user must select their preferred accounting system.

Authorization page
Authorization page

After selecting the accounting platform, the entity user must log in and authorize Monite to access their data.

Partners can customize specific attributes on the authorization page. To do this, please contact your Monite Customer Success Manager.

Upon successful authorization, the platform field will contain the entity’s chosen accounting platform and the value of the status field in the accounting connection object will be connected. You can confirm this by calling GET /accounting_connections/{id}.

Troubleshooting

If you experience any issues and need our assistance with this integration, please feel free to contact our Support Team at any time.