> ## Documentation Index
> Fetch the complete documentation index at: https://docs.maesn.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Xero

> Integrate Xero easily with Maesn’s Unified API. See the documentation with detailed system coverage and setup prerequisites.

**TARGET\_SYSTEM:** `xero`

<div className="integration-table">
  |                      |                          Read                          |                         Create                         |                         Update                         |                         Delete                         |                         Webhook                        |
  | -------------------- | :----------------------------------------------------: | :----------------------------------------------------: | :----------------------------------------------------: | :----------------------------------------------------: | :----------------------------------------------------: |
  | Accounts             | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Async task           | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> |
  | Bank accounts        | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Bills                | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Bill lines           | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Booking proposals    | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Contacts             | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="check" iconType="solid" color="#4db975" /> |
  | Customers            | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Credit notes         | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Dimensions           | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Expenses             | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Files                | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Fiscal years         | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> |
  | Goods receipts       | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> |
  | Goods receipt lines  | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> |
  | Invoices             | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="check" iconType="solid" color="#4db975" /> |
  | Invoice lines        | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Items                | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Journals             | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Journal entries      | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Offers               | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Offer lines          | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Open items           | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Payments             | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Payment terms        | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> |
  | Projects             | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> |
  | Purchase orders      | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Purchase order lines | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Sales orders         | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> |
  | Sales order lines    | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> |
  | Suppliers            | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Tax rates            | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Transactions         | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Trial balance        | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> |
  | Units                | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Users                | <Icon icon="check" iconType="solid" color="#4db975" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="xmark" iconType="solid" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
  | Vendor credits       | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> | <Icon icon="phone" iconType="light" color="#828282" /> |
</div>

<Icon icon="check" iconType="solid" color="#4db975" /> = Supported by Maesn <br />
<Icon icon="phone" iconType="light" color="#828282" /> = On demand - contact us<br />
<Icon icon="xmark" iconType="solid" color="#828282" /> = Not supported by Xero <br />

## How to connect to Xero

To allow your customers to link your application with their Xero accounts, you need to set up a Xero App and submit your application credentials to maesn.

<Steps>
  <Step title="Prerequisites">
    Before you begin, make sure you have the following:

    * A Xero account with administrator permissions.

    You can sign-up for a free trial at [https://www.xero.com/signup/](https://www.xero.com/signup/), if you do not have a Xero account already. Note that you will not need to use this Xero account for anything else than managing the Xero App and, if you want to, becoming a Xero partner later.
  </Step>

  <Step title="Create the Xero App">
    In this step we create the App that a user can choose to install into their Xero instance to authorize the integration with your application.

    * Navigate to the Xero [developer portal](https://developer.xero.com/app/manage/) and log in, if you are not already logged in.
    * On the tab "my Apps", click "New App".
    * In the pop-up, enter the below details:
      * **App Name**: This should be your application's name. When your users link their Xero account, they will see that "App Name" is requesting to integrate with their Xero account.
      * **Integration Type**: Web app.
      * **Company** or **application URL**: The homepage of your company's website, e.g. `https://yourcompany.com/`.
      * **Redirect URL**: Should be set to `https://api.maesn.dev/auth/callback/xero`.
  </Step>

  <Step title="Generate your client secret">
    Now it is time to generate the unique client secret for your App.

    * Navigate to the Configuration tab of your newly created App
    * Click the "Generate a secret" button.
    * Note your `client id`, which you will need together with the `client secret` in subsequent steps.
    * Copy the `client secret` by clicking the Copy button next to the value. Make sure that you have copied the value before navigating away from this page. Once navigating away, you will not be able to retrieve it again.
  </Step>

  <Step title="Configure your integration in the maesn API">
    In the last step, we setup your API tenant with your App's details:

    * Get in touch with your contact person at maesn to submit the client id and client secret.

    If you are not sure who your technical contact is, do not hesitate to [reach out to us](https://www.maesn.com/contact).
  </Step>
</Steps>

## Becoming a Xero Partner

Anyone can become a Xero app partner. The requirements and steps to become a partner are detailed [here](https://developer.xero.com/documentation/xero-app-store/app-partner-guides/app-partner-steps/).

Note that it is only possible to link 25 Xero accounts to your app before it is certified through the app partnership process. In addition, your customers cannot link more than two applications that are not certified.

## Webhooks

Xero supports the following resources:

* `CONTACT`
* `INVOICE`

Xero sends `CREATED` and `UPDATED` events.

Before you start using webhooks for Xero, you will need to contact us to receive the callback URL to use in your Xero App configuration and complete the setup.

Inside your Xero app, you will choose the `resource` you want the webhooks enabled for. Once configured, this setup will be valid for all users of the app.

Now, for each authenticated end user, call Maesn’s create webhook endpoint `POST /webhooks` with the following body:

```javascript Example code snippet theme={null}
    const response = await axios.post(url, {
        "callbackUrl": callbackUrl
    }, {
        headers: {
            'X-API-KEY': apiKey,
            'X-ACCOUNT-KEY': accountKey
        }
    });
```

It will return the `id` associated with the subscription:

```json Example response theme={null}
{
    "data": {
        "id": "550e8400-e29b-41d4-a716-446655440000",
        "callbackUrl": "https://example.com/webhook-endpoint/12345",
        "createdDate": null,
        "expiresDate": "null",
        "secret": "2f1fd5f883d4c0adf5b31b91e4d6ae2d2975620c67bac8fdb864c78047b1d522"
        "updatedDate": "null"
    },
    "meta": {}
}
```

At this point, your system is ready to receive end-user–related events at the callback URL you provided. Quickbooks retrieves a list of events.
The event response will be an array providing the following information:

```json Example event body theme={null}
[{
    "eventType": "CREATED",
    "filterDate": null, //not supported by xero
    "resource": "CONTACT",
    "recourceId": "b15311cf-c0c1-46fe-b895-341b4b2eb005",
    "userId": "1cb1fbcc-b9ed-4ed8-a8c2-40a7fa5c8047"
}]
```

To delete the webhook subscription, you can call the `DELETE` `/webhooks/{webhookId}` endpoint.
