> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.monite.com/v2023-09-01/accounting/integration/manage/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.monite.com/_mcp/server. # Manage accounting integrations ## Check for an active accounting connection Before configuring a new accounting connection for an entity, make sure this entity has no other existing accounting connections that are active at the moment. For this purpose, call `GET /accounting_connections` with the `X-Monite-Entity-Id` header containing the entity ID: ```sh curl 'https://api.sandbox.monite.com/v1/accounting_connections' \ -H 'X-Monite-Version: 2023-09-01' \ -H 'X-Monite-Entity-Id: ENTITY_ID' \ -H 'Authorization: YOUR_PARTNER_TOKEN' ``` If there are no other active connections set up for this entity, you will receive a `200 OK` response with an empty `data` array: ```json { "data": [] } ``` ## Trigger accounting synchronization By default, Monite automatically synchronizes the entity's data in our database with the data in the entity's accounting system every hour. However, entities can also trigger an instant synchronization when needed. To do this, call `POST /accounting_connections/{connection_id}/sync`: ```sh curl -X POST 'https://api.sandbox.monite.com/v1/accounting_connections/{connection_id}/sync' \ -H 'X-Monite-Version: 2023-09-01' \ -H 'X-Monite-Entity-Id: ENTITY_ID' \ -H 'Authorization: Bearer YOUR_PARTNER_TOKEN' ``` The `202 Accepted` response is returned if the request is successful. ## Disconnect an accounting system \[#disconnect] To disconnect an already established accounting connection, call [`POST /accounting_connections/{id}/disconnect`](/v2023-09-01/api/accounting-connections/post-accounting-connections-id-disconnect): ```sh curl -X POST 'https://api.sandbox.monite.com/v1/accounting_connections/{id}/disconnect' \ -H 'X-Monite-Version: 2023-09-01' \ -H 'X-Monite-Entity-Id: ENTITY_ID' \ -H 'Authorization: Bearer YOUR_PARTNER_TOKEN' ``` The successful `200 OK` response contains `"status": "disconnected"`: ```json { "id": "3fa85f64-5717-4562-b3fc-2c963f76afa6", "status": "disconnected", "platform": "xero", "created_at": "2023-04-02T13:11:53.250Z", "updated_at": "2023-04-02T13:11:53.250Z", "last_pull": "2023-04-02T13:11:53.250Z", "errors": null } ``` ## Check synchronization logs You can obtain an overview of all the synchronization events between Monite and the accounting system in a list. When the synchronization is successful, the status and IDs of records from both systems will be returned. If not, an error status with details will be returned instead. To get a list with all the sync records, call [`GET /accounting_synced_records`](/v2023-09-01/api/accounting-synchronized-records/get-accounting-synced-records). Filtering the results by the `object_type` is **mandatory**. For example, `GET /accounting_synced_records?object_type=bill` will get all the sync records for bills (payables). ```sh curl -X GET 'https://api.sandbox.monite.com/v1/accounting_synced_records?object_type=bill' \ -H 'X-Monite-Version: 2023-09-01' \ -H 'X-Monite-Entity-Id: ENTITY_ID' \ -H 'Authorization: Bearer YOUR_PARTNER_TOKEN' ``` You can refine the request to get information about a specific object by adding the `object_id` query parameter to the request, for example: ``` GET /accounting_synced_records?object_type=bill&object_id=342d33a5-e89f-4a90-8c68-7da318ad4d88 ``` > **Info** > > For the full list of available sort and filter parameters, see the [`GET /accounting_synced_records`](/v2023-09-01/api/accounting-synchronized-records/get-accounting-synced-records) endpoint. This successful response returns a synchronization object that includes the `sync_status` and `errors` fields, representing the synchronization status and information about any errors, respectively. ```json { "data": [ { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "created_at": "2024-03-05T15:14:14.728Z", "updated_at": "2024-03-05T15:14:14.728Z", "errors": {}, "last_pulled_at": "2024-03-05T15:14:14.728Z", "object_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "object_type": "product", "object_updated_at": "2024-03-05T15:14:14.728Z", "platform": "xero", "platform_object_id": "18cb53c4-3807-4a5a-8da9-303053a40002", "platform_updated_at": "2024-03-05T15:14:14.728Z", "provider": "railz", "provider_object_id": "58e1d32f-a092-438a-bffb-3bf6af9ba8ec", "provider_updated_at": "2024-03-05T15:14:14.728Z", "sync_status": "pending" } ], "next_pagination_token": "eyJvcmRlciI6ImFzYyIsImxpbWl0IjoyLCJwYWdpbmF0aW9uX2ZpbHRlcnMiOnsiZW50aXR5X2lkIjoiOWQyYjRjOGYtMjA4Ny00NzM4LWJhOTEtNzM1OTY4M2M0OWE0In0sInBhZ2luYXRpb25fdG9rZW5fdHlwZSI6Im5leHQiLCJjdXJzb3JfZmllbGQiOm51bGwsImN1cnNvcl9maWVsZF92YWx1ZSI6bnVsbCwiY3VycmVudF9vaWQiOjR9", "prev_pagination_token": null } ``` You can get the details about a specific record by sending a `GET` request to the [`/accounting_synced_records/{synced_record_id}`](/v2023-09-01/api/accounting-synchronized-records/get-accounting-synced-records-id) endpoint. ## Retrieve accounting tax rates When pushing an invoice to an accounting system, Monite tries to map the applicable tax rates used in the invoice to the tax rates available in the entity's accounting system. Entities can retrieve the available tax rates from the accounting system to ensure that they match either the `tax_rate_value` or `vat_rate_id` fields in the invoice line items. To do this, call `GET /accounting_tax_rates`: ```sh curl -X GET 'https://api.sandbox.monite.com/v1/accounting_tax_rates' \ -H 'X-Monite-Version: 2023-09-01' \ -H 'X-Monite-Entity-Id: ENTITY_ID' \ -H 'Authorization: Bearer YOUR_PARTNER_TOKEN' ``` The response returns the list of tax rates available in the entity's accounting system. Any VAT rates that are used in the invoice line items and are missing from the entity's accounting system must be created manually by the entity in their accounting system. ## Retry pushing data You can manually retry a failed sync to the accounting system in cases where errors occur during the attempt by calling [`POST /accounting_synced_records/{synced_record_id}/push`](/v2023-09-01/api/accounting-synchronized-records/post-accounting-synced-records-id-push). The `synced_record_id` of the failed sync can be obtained in the [synchronization log](#check-synchronization-logs): ```sh curl -X POST 'https://api.sandbox.monite.com/v1/accounting_synced_records/{synced_record_id}/push' \ -H 'X-Monite-Version: 2023-09-01' \ -H 'X-Monite-Entity-Id: ENTITY_ID' \ -H 'Authorization: Bearer YOUR_PARTNER_TOKEN' ``` The successful response returns the information of the retried sync: ```json { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "created_at": "2024-03-05T16:20:57.066Z", "updated_at": "2024-03-05T16:20:57.066Z", "errors": {}, "last_pulled_at": "2024-03-05T16:20:57.066Z", "object_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "object_type": "product", "object_updated_at": "2024-03-05T16:20:57.066Z", "platform": "xero", "platform_object_id": "18cb53c4-3807-4a5a-8da9-303053a40002", "platform_updated_at": "2024-03-05T16:20:57.066Z", "provider": "railz", "provider_object_id": "58e1d32f-a092-438a-bffb-3bf6af9ba8ec", "provider_updated_at": "2024-03-05T16:20:57.066Z", "sync_status": "pending" } ``` > Learn how to manage your accounting integrations.