Xero API

Integrate Xero with your product—along with any other
Accounting
 application

Connect your product to all the applications your customers use via Merge's

Accounting

 

Unified API to close more deals, retain customers, and expand to new markets

Your Product
Merge
Your customers' data
Accounting Periods
Accounts
Addresses
Async Passthroughs
Async Tasks
Attachments
Audit Trails
Balance Sheets
Bank Feed Accounts
Bank Feed Transactions
Cash Flow Statements
Company Info
Contacts

Top integration use cases for Xero

Sync Xero Data

FAQ on integrating with Xero’s API

What data can Merge sync between Xero and my platform?

You can sync data related to accounts, invoices, payments, contacts, credit notes, tax rates, and more. This data can be fetched, updated, and created within your platform using Xero's API endpoints. You can learn more about the endpoints Merge uses here.

How can I customize Xero data syncs?

With features like Field Mapping, you can map custom fields from Xero to Merge's data models. Additionally, Remote Data allows you to access raw Xero data in its original format, and Authenticated Passthrough lets you make direct API requests for more specific Xero data not covered by Merge’s Common Models.

What actions can I perform with the Xero integration?

You can fetch account balances, create invoices, record payments, and update contact information. You can also track financial transactions in real-time and access historical data for reporting purposes.

How does Merge handle rate limits and syncing for Xero?

Merge efficiently manages Xero’s rate limits by storing data in its own database. This approach reduces the need for constant API requests, and it ensures faster sync times and consistent data availability, even during Xero API outages.

How frequently does data sync between Xero and my platform?

By default, Merge syncs Xero data every 24 hours. However, depending on your plan, you can configure custom sync frequencies ranging from real-time updates (using webhooks) to less frequent intervals like daily, monthly, or quarterly.

Can I control how often data is synced from Xero?

Yes, Merge allows you to customize the sync frequency to meet your needs. You can choose between various options, including real-time syncs through webhooks or periodic syncs at intervals such as daily or quarterly.

What happens if a sync fails between Xero and Merge?

If a sync fails, Merge automatically retries it. You can monitor the status of your syncs and resolve any errors using the Merge Dashboard, which provides real-time observability and logs for better issue detection.

How long does it take developers to set up a Xero integration?

Setting up a Xero integration through Merge typically takes anywhere from a few hours to a few days. In addition, once the integration is implemented, you can access more than a dozen additional accounting integrations, including QuickBooks Online, NetSuite, and Sage Intacct​​.

How is your customer's Xero data encrypted and where is it stored?

Merge encrypts Xero data in-transit and at rest using AES-256 encryption. Data is also stored on AWS, with options for storing it in AWS’ regions within the EU, APAC, and U.S. Single-tenant environments are also available for additional security​​.

Are there any days you’ll be closed for the holidays in 2024?
Trusted to power integrations globally
Build Smarter

Make integrations your competitive advantage

More sales, less code, fewer headaches

Focus on your core product

Stop diverting your engineers to yet another integration and let them get back to work.

Give customer success a break

Manage your simplified integration issues in a single pane. No therapist required.

Stop losing sales due to integrations

Launch integrations in days, not quarters. Your sales team will thank you.

APIs Made Simple

The toolkit for all your integration needs

We make integrations painless with accessible API design, dead-simple SDKs, and beautiful documentation that we agonize over.

View docs
Get Employee Data
import merge
from merge.client import Merge
merge_client = Merge(api_key="<YOUR_API_KEY>", account_token="<YOUR_ACCOUNT_TOKEN>")
employee = merge_client.hris.employees.list()
import { MergeClient, Merge } from '@mergeapi/merge-node-client';
const merge = new MergeClient({
  apiKey: 'YOUR_API_KEY',
  accountToken: 'YOUR_ACCOUNT_TOKEN',
});
employee = await merge.hris.employees.list()
ApiClient.instance.authentications.tokenAuth = {
  type: 'bearer',
  accessToken: 'API_KEY',
};
new EmployeesApi().employeesList('ACCOUNT_TOKEN', {}, (data) => {
  console.log(data);
});
import (
  "context"
  "fmt"
  merge "github.com/fern-api/merge-go"
  mergeclient "github.com/fern-api/merge-go/client"
  "github.com/fern-api/merge-go/hris"
)

client := mergeclient.NewClient(
  mergeclient.ClientWithAuthApiKey("<YOUR_API_KEY>"),
  mergeclient.ClientWithHeaderAccountToken("<YOUR_ACCOUNT_TOKEN>"),
)
employee, err := client.Hris().Employees().List(
  context.TODO(),
  &hris.EmployeesRetrieveRequest{
    IncludeRemoteData: merge.Bool(true),
  },
)
if err != nil {
  return err
}
fmt.Printf("Retrieved employee with ID %q\n", *employee.Id)
ApiClient client = Configuration.getDefaultApiClient();
client.setBasePath('https://api.merge.dev/api/ats/v1');
ApiKeyAuth tokenAuth = client.getAuthentication('tokenAuth');
tokenAuth.setApiKey('API_KEY');
CandidatesApi apiInstance = new CandidatesApi(client);
apiInstance.candidatesList('ACCOUNT_TOKEN');
import com.merge.api.MergeApiClient;
import com.merge.api.resources.hris.employees.requests.EmployeesRetrieveRequest;
import com.merge.api.resources.hris.types.Employee;
MergeApiClient mergeClient = MergeApiClient.builder()
    .accountToken("ACCOUNT_TOKEN")
    .apiKey("API_KEY")
    .build();
Employee employee = mergeClient.hris().employees().list(
    EmployeesRetrieveRequest.builder()
        .includeRemoteData(true)
        .build());
{
"id": "0958cbc6-6040-430a-848e-aafacbadf4ae",
"remote_id": "19202938",
"employee_number": "2",
"company": "8d9fd929-436c-4fd4-a48b-0c61f68d6178",
"first_name": "Dirna",
"last_name": "Emanuel",
"display_full_name": "Dirna Emanuel",
"username": "dirnaemanuel",
"groups": [
  "21a54124-397f-494d-985e-3c5b330b8a68"
],
"work_email": "dirna@merge.dev",
"personal_email": "dirnaemanuel@gmail.com",
"mobile_phone_number": "+1234567890",
"employments": [
  "17a54124-287f-494d-965e-3c5b330c9a68"
Meta Endpoint

Programmatically access required schemas

Third-party providers require specific (and often different) fields to write data to their APIs, making your code a mess.

Dynamically fetch required data schemas from Merge’s /meta endpoint to make POST or PATCH requests that just work.

View Docs
Beyond Building

Rely on the best integration observability system

Let our logs, issue detection, and automated alerts save your customer success team time, money, and headaches.

Forget maintenance - let your developers focus on building!

Start for free

How Drata helps thousands streamline their SOC 2 with Merge

Read case study

​​”Working with Merge’s Unified API and beautiful React component took less than a sprint to integrate, test, and release.”

Daniel Marashlian of profile photo
Daniel Marashlian
Co-Founder & CTO

Read more about building and maintaining multiple integrations

A guide to maintaining your product integrations
A guide to maintaining your product integrations
Blog
Blog Posts
10/27/2023
A guide to integrating multiple APIs
A guide to integrating multiple APIs
Blog
Blog Posts
11/13/2023
The top challenges of normalizing multiple API integrations
The top challenges of normalizing multiple API integrations
Blog
Blog Posts
11/20/2023
One Step Ahead

We're the cheat code to your integrations strategy

Revolutionize your integrations strategy for HR, payroll, directory, ATS, project management, ticketing, accounting and CRM platforms.

Start for free or talk to our sales team and learn how Merge makes it easy to add all your integrations in days – not years.
Read more