> For the complete documentation index, see [llms.txt](https://docs.kula.digital/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kula.digital/your-data-sources/xero.md).

# Xero

Xero brings your **accounting** into Kula Intelligence — contacts, transactions, and (where your plan allows) the general ledger — so money answers reconcile against your actual books.

## What we read — and what we don't

* **We read:** your organisation's settings, contacts, and transactions (invoices, payments, bank transactions) — read-only.
* **We don't:** post entries, change your books, or move money.

## A note on Xero plans

Xero's full **general-ledger (Journals) feed** is only available on Xero's top **Advanced** plan. On standard plans we read what your plan exposes, and you can **upload a general-ledger export as a CSV** to fill in the rest — see [CSV & ClassPass](/your-data-sources/csv.md). Either way you get a complete picture; the Advanced plan just makes it automatic.

## What you'll need

* A **Xero Custom Connection** (a client ID and secret) that you create in the Xero developer portal, with read-only scopes.
* Someone in your Xero organisation to **approve** the connection.

> A Custom Connection is *client-pays* — it uses a connection slot on your own Xero subscription. That's normal and keeps your accounting access entirely under your control.

## How to connect

1. In the Xero developer portal, create a **Custom Connection** with the read-only scopes for settings, contacts, and transactions.
2. Xero emails an approver in your organisation. Once they approve it, copy the **Client ID** and generate a **Client Secret**.
3. In Kula, open **Connectors → Xero**, paste the Client ID and Secret, and click **Test**. The test confirms which Xero organisation it reached.
4. Click **Connect**, then import. For older history or the general ledger, upload a CSV export as above.

## If it stops working

A Xero error usually means the Custom Connection was revoked or its secret rotated. Recreate or re-approve the connection and re-enter the details. See [Keeping your connectors healthy](/your-data-sources/operating.md).
