# Connecting to Xero Accounting

> The Sisense Xero connector is a certified connector that allows you to import data from the Xero API into Sisense via the Sisense generic JDBC connector. The Xero connector offers the most natural way to connect to Xero data to search (Customers, Transactions, Invoices, Sales Receipts, etc.), update items, edit customers, and more, and provides additional powerful features.

*Source: https://docs.sisense.com/main/SisenseLinux/connecting-to-xero-accounting.htm*

---

Last updated: June 10, 2026

|  |  |
| --- | --- |
| [Tier](https://www.sisense.com/pricing/#pricing) | [Deployment](https://docs.sisense.com/main/SisenseLinux/introduction-to-sisense-cloud-managed-services.md#ComparisonofManagedCloudandSelfHosted) |
| Launch     Grow    Enterprise | Cloud     On-Prem |

The Sisense Xero connector is a certified connector that allows you to import data from the Xero API into Sisense
via the Sisense generic JDBC connector. The Xero connector offers the most natural way to connect to Xero data to
search (Customers, Transactions, Invoices, Sales Receipts, etc.), update items, edit customers, and more, and
provides additional powerful features.

The support for the connector is provided by Sisense and will be assisted by the certification partner's support,
if needed. For any support issues or additional functionality requests, contact your Sisense representative or open
a request through the Sisense [Help Center](https://sisensesupport.zendesk.com/agent/dashboard). For
advanced inquiries specific to driver functionality, you can also contact the certification partner's support
directly via [support@cdata.com](http://oemsupport@cdata.com/).

After you have downloaded and installed the connector, you can connect through a connection string you provide
Sisense in Sisense. The connection string is used to authenticate users who connect to the Xero APIs. Once you have
connected to Xero, you can import a variety of tables from the Xero API.

This page describes how to download the Xero driver and deploy it, how to connect to Xero with a connection string,
provides information about the Xero data model, and more.

**Note:**

For the list of supported connectors, see [Data Source Connectors](https://docs.sisense.com/main/SisenseLinux/introduction-to-data-sources.md).

## Downloading the Xero JDBC Driver

You can download the Xero JDBC driver [here](https://www.cdata.com/solutions/bi/sisense).

For a short video about downloading the driver, see below (the video uses the Box driver as an example).

**Note:**

- The driver is certified for Sisense v7.2 and above.
- Sisense v7.4 and above: Click the above link to download a ready-to-use driver.
- Sisense prior to v7.4: Click the above link to download a 30-days free-trial of the driver. Contact Sisense
  for the full license version.

## Deploying the Xero JDBC Driver

**Prerequisite:** The install file (setup.jar) is a Java Application that requires Java 6 (J2SE) or
above to run.
  
To install the driver, double-click the setup.jar file and proceed with the instructions in the installation
wizard.
  
Depending on the machine on which you are accessing the Sisense application, install the driver in one of the
following locations:

- **When Sisense is installed on your local machine**, deploy the driver locally.
- **For a non-local installation** (when accessing Sisense on a remote Windows server, or accessing the Sisense hosted cloud environment), select one of the below methods:

  - Deploy the driver on the Sisense server machine, and then perform all the authentication on the server machine.
  - Deploy the driver on your local machine (or any other machine, as convenient), perform all the authentication on that machine, and then copy the JAR file to the remote server.

    For detailed instructions, see [Copying a CData JAR File Installed Locally to a Remote Server](https://docs.sisense.com/main/SisenseLinux/copying-a-cdata-jar-file-installed-locally-to-a-remote-server.md).
  - If you are on a Linux deployment, deploy the custom JDBC connector on your local machine (or any other machine), perform all
    the authentication on that machine, and then copy the JAR file to this location:
    `/opt/sisense/storage/connectors/jdbcdrivers/driver_name_folder`. For detailed instructions, see
    [Deploying a Custom Connector](https://docs.sisense.com/main/SisenseLinux/deploying-a-custom-connector.md).

For a short video of the process, see below (the video uses the Box driver as an example).

### JAVA Troubleshooting

If you do not have Java 6 installed, you may download it from [here](https://www.oracle.com/technetwork/java/index.html).

If your system is not set up to run Java applications, execute the following command: java -jar setup.jar

## Connecting to Xero

To access Xero's REST API from Sisense, you must provide valid Oauth Xero credentials through a connection string.
After you receive your credentials from Xero, you can create the connection string and provide Sisense with it to
connect to your data.

To create the connection string:

1. On the server, create a writable directory (e.g. `/opt/sisense/storage/tmp`), and set the connection string parameter `Location=<yourpath>`.

   **Tip:**

   This can be done in the file management UI or by contacting Sisense Support.
2. Open the lib directory for the connector. The default path is:
   `C:\Program Files\CData\CData JDBC Driver for &lt;Driver Name&gt; 2019\lib`
3. Double-click the JAR file in the lib directory.

   ![8 5lib folderthumb](https://docs.sisense.com/main/Resources/Images/8-5lib-folderthumb030013.png)

   Alternatively, to open the JAR file from the command line, enter the following command in the command prompt
   (change the driver name to your driver):

   `cd C:\Program Files\CData\CData JDBC Driver for &lt;Driver Name&gt; 2019\lib`

   Press Enter and then enter the following command (change the driver name to your driver):

   `"C:\Program Files\Sisense\infra\jre\bin\java.exe" -jar cdata.jdbc.&lt;Driver Name&gt;.jar`

   Press **Enter** again.

   **Example:**

   ![8 5jar command linethumb](https://docs.sisense.com/main/Resources/Images/8-5jar-command-linethumb030013.png)

   The Connection String Builder opens.
4. Click in the Value column of the **Initiate OAuth** property and select GETANDREFRESH

   ![8 5initiateoauthgetandrefreshthumb](https://docs.sisense.com/main/Resources/Images/8-5initiateoauthgetandrefreshthumb030014_360x448.png)
5. Click **Test Connection**.
6. A browser window opens where you need to log in to your application in order to grant access. (Each application
   will display a different window and messages.)

   Close the **Authorization Successful!** message that opens.
7. Go back to the **Connection String Builder** dialog and click **OK** in the
   **Test Connection Successful** message to close it.
8. Click **Copy to Clipboard** to obtain the connection string.

For a short video of the process, see below (the video uses the Box driver as an example).

The driver uses embedded credentials which originate from a OAuth App embedded into the driver. The embedded
credentials provide full functionality, so you do not have to create an OAuth App.

**Note:**

If you want to configure the authentication or limit the scope of the data provided to Sisense, you will need to
create your own OAuth App. For details, see [here](http://cdn.cdata.com/help/DXE/jdbc/pg_connectingtoxerocustomapp.htm).

  

You need to follow the above instructions only once, to retrieve the Access and Refresh tokens. Once the tokens
have been retrieved, the driver will be refreshing them in the background when they expire, with no further
involvement from you.

To help you create a connection string and test the connection, see [Connection String Builder for Certified Connectors](https://docs.sisense.com/main/SisenseLinux/connection-string-builder-for-certified-connectors.md).

If you have any issues connecting to your data source, see [Troubleshooting JDBC
Data Connectors](https://support.sisense.com/kb/en/article/troubleshooting-jdbc-data-connectors-8031775).

## Adding Xero Tables to your ElastiCube

2. Open Sisense. (For a non-local installation, open Sisense on the hosted cloud environment.)
3. In the Data page, open an ElastiCube or create a new ElastiCube .
4. In the Model Editor, click ![+data](https://docs.sisense.com/main/Resources/Images/+Data.png). The Add Data dialog box is displayed.

   ![8 5JDBC1thumb](https://docs.sisense.com/main/Resources/Images/8-5JDBC1thumb030032_1037x543.png)
5. Click **Generic JDBC** to open the JDBC settings.

   ![JDBC settings(30)](https://docs.sisense.com/main/Resources/Images/JDBC_settings(30)_997x521.png)
6. In **Connection String**, paste the string you obtained above. When you do so, the string is
   appended with some `_persist` properties.

   **Example:**

   A sample connection string in Sisense:

   `jdbc:box:Initiate``OAuth="GETANDREFRESH";_persist_oauthexpiresin=3199;_persist_token_timestamp=1561893244662;_persist_oauthaccesstoken=mswNfVDVpnBZc3pkQQja7WRHNebbaGZL;_persist_oauthrefreshtoken=ybofHX3Vrd7C8cPhE5ZysVxFiUmkJSiw2htjPL0nKDBgpqjcyGP6Am7KNaDzqhZz;`
7. In **JDBC JARs Folder**, enter the name of the directory where the Xero JAR file is located (see
   [Deploying the Xero JDBC Driver](#Deployin)).
8. In **Driver's Class Name**, enter the following class name:
   `cdata.jdbc.xero.XeroDriver`
9. Leave the **User Name** and **Password** blank.
10. Click **Next**. A list of tables in the database are displayed. All tables and views associated
    with the database will appear in a new window.
11. From the Tables list, select the relevant table or view you want to work with. You can click next to the
    relevant table or click **Preview** to see a preview of the data inside it.
12. (Optional) Click **+** to customize the data you want to import with SQL. See [Importing Data with Custom Queries](https://docs.sisense.com/main/SisenseLinux/importing-data-with-custom-queries.md) for more
    information.
13. After you have selected all the relevant tables, click **Done**. The tables are added to your data
    model.

For a short video of the process, see below (the video uses the Box driver as an example).

## Xero Connector: Additional Resources

For the full documentation set for the Xero connector, click [here](http://cdn.cdata.com/help/DXE/jdbc/default.htm).

For connection string options, click [here](http://cdn.cdata.com/help/DXE/jdbc/Connection.htm).

For information about the Xero data model, click [here](http://cdn.cdata.com/help/DXE/jdbc/pg_datamodel.htm).

## Limitations

**XERO API**

To access the AgedPayablesByContact and AgedRecievablesByContact tables, you need to specify a particular
ContactID, the unique ID of the Contacts table, in the SELECT query using a WHERE clause. This allows you to
retrieve data for a specific contact. These are limitations of the Xero API, as these reports are specific to each
contact. Here is an example:

`SELECT due, paid, total FROM AgedPayablesByContact WHERE ContactID='xyz'`
  
`SELECT duedate, reference FROM AgedRecievablesByContact WHERE ContactID='1234'`

Due to this limitation, you cannot build an ElastiCube with these tables without custom SQL.

**Daily Limit**

There is a daily limit of 5000 API calls against a single Xero organisation in a rolling 24-hour period.

In addition to the daily limit, a single access token can only be used up to 60 times in a rolling 60-second
period.

**Encountering a Rate Limit**

If you encounter a rate limit, the Xero API will return an HTTP 503 (Service Unavailable) error, with the following
message: "oauth\_problem=rate limit exceeded".

**Note:**

If you encounter a rate limit, do not continue to make requests, as this may continue to add to your limitation.
If necessary, you may need to queue requests.

**Token Limitations**

- If you connected to Xero data by following the steps in [Connecting to Xero](#Connecti) above, then you are using a
  Public App for connection. In a Publish App, each access token will only last for 30 minutes. If you want longer
  access to the organization, you need to re-authorize your application every 30 minutes.
- **To re-authorize**, repeat the steps in [Connecting to Xero](#Connecti) in the **Connection String
  Builder** dialog. Repeat this process each time the token expires. For further details, click [here](http://cdn.cdata.com/help/DXE/odbc/pg_connectingtoxeroembeddedapp.htm).
- **To avoid having to re-authenticate**every 30 minutes, you need to connect to Xero by registering
  a Private App. There you will need to provide the OAuth-related credentials (OAuthAccessToken, OAuthClientId and
  OAuthClientSecret) along with a digital certificate.
  1. Click [here](http://www.cdata.com/kb/entries/ssl_certificate_generator.rst) for instructions on
     creating a Private/Public Key Pair with the Certificate Generator tool. Run the tool, tell it where to
     export the public and private keys, and generate them. To learn more on creating the digital certification,
     see in the "Authentication with a Private Application" section [here](http://cdn.cdata.com/help/DXE/odbc/pg_connectingtoxerocustomapp.htm).
  2. Create a new application in the Xero Developer Portal and upload the public key. It provides youwith a
     Consumer Key and Consumer Secret.
  3. Open the **Connection String Builder** dialog box. Set the Certificate options so that they
     use the new certificate. Set the OAuthAccessToken property. Set the Consumer Key and Consumer Secret you
     received above in the OauthClinetId and OauthClientSecret properties.
  4. Click **Test Connection** in the dialog box. This generates a connection string that will not
     expire after 30 minutes.
