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

# Xero Integration

> Connect Xero to eggz to automatically sync invoices, bills, quotes, payments, bank transactions, contacts, and your chart of accounts, and troubleshoot common sync issues.

## How eggz works with Xero

eggz syncs your accounting data from Xero so you can view invoices, bills, quotes, and customer information in one place alongside your uploaded receipts. The integration is primarily one-way (Xero to eggz), with the ability to push processed receipts back to Xero — and to publish draft invoices and quotes you create in eggz.

## Connect Xero

<Steps>
  <Step title="Open Integrations">
    Navigate to **Settings > Integrations**.
  </Step>

  <Step title="Click Connect to Xero">
    Click the **Connect to Xero** button. You will be redirected to Xero's authorisation page.
  </Step>

  <Step title="Authorise access">
    Sign in to Xero (if not already) and grant eggz permission to access your data.
  </Step>

  <Step title="Select your organisation">
    If your Xero login has access to more than one organisation, eggz shows a selection screen after you authorise — pick the organisation you want to connect. Only one Xero organisation can be connected per eggz workspace, so choose carefully. (With a single organisation, eggz connects it automatically and skips this step.)
  </Step>
</Steps>

Once connected, the integrations page shows your connection status and sync options.

## What syncs from Xero

eggz pulls the following data from your Xero account:

| Data                  | Direction    | Notes                                                                                                         |
| --------------------- | ------------ | ------------------------------------------------------------------------------------------------------------- |
| **Invoices**          | Xero to eggz | Sales invoices with status, amounts, dates, customer info                                                     |
| **Bills**             | Xero to eggz | Purchase invoices (accounts payable)                                                                          |
| **Quotes**            | Xero to eggz | Quotes with prospect, amounts, status                                                                         |
| **Customers**         | Xero to eggz | Contact information synced into your Accounts list                                                            |
| **Chart of Accounts** | Xero to eggz | Account codes used for expense category mapping                                                               |
| **Payments**          | Xero to eggz | Payments against invoices and bills, including partial payments and their dates                               |
| **Bank transactions** | Xero to eggz | Spend Money and Receive Money transactions                                                                    |
| **Branding themes**   | Xero to eggz | Invoice and quote theme names and logos — refresh from the [Branding themes card](/help/guides/xero-branding) |

Payments and bank transactions keep your [Collected and Outstanding views](/help/guides/reporting-views) accurate — eggz knows not just what was invoiced, but what's actually been paid and when.

<Note>Sync is manual -- click the **Sync** button on each section of the integrations page to pull the latest data. eggz does not automatically poll Xero for changes.</Note>

### Sync order

When you first connect, **documents sync first, then payments**. So invoices, bills, and quotes appear before the payments that settle them. If a payment ever lands before its document, eggz links the two automatically once the document arrives.

<Note>If a payment is deleted in Xero, it disappears from your eggz reports automatically on the next sync.</Note>

## What eggz pushes to Xero

eggz can push processed receipts to Xero in two ways:

| Receipt State | Creates in Xero                | Use Case                                                 |
| ------------- | ------------------------------ | -------------------------------------------------------- |
| **Unpaid**    | Bill (ACCPAY)                  | A supplier invoice you still need to pay                 |
| **Paid**      | Spend Money (Bank Transaction) | An expense already paid, recorded against a bank account |

<Note>Draft invoices and quotes you create in eggz can be [published to Xero](/help/guides/publish-to-xero). Documents synced from Xero can't be pushed back, and customer records created in eggz aren't pushed to Xero on their own.</Note>

## Account mapping

After syncing your Chart of Accounts from Xero, you can map eggz expense categories to Xero account codes. This ensures receipts are posted to the correct account when published to Xero.

<Steps>
  <Step title="Sync Chart of Accounts">
    On the integrations page, click **Sync** next to Chart of Accounts to pull your Xero account list.
  </Step>

  <Step title="Map categories">
    In the **Account Mapping** section, assign each eggz expense category to the appropriate Xero account code.
  </Step>
</Steps>

## Managing your connection

### Connection status

The integrations page shows your current connection status:

| Status            | Meaning                                               |
| ----------------- | ----------------------------------------------------- |
| **Connected**     | Active connection, ready to sync                      |
| **Expired**       | OAuth token has expired. Reconnect to refresh.        |
| **Error**         | Connection issue. Try disconnecting and reconnecting. |
| **Not connected** | No Xero account linked                                |

eggz automatically refreshes your Xero token daily. If the refresh fails, the status changes to **Expired**.

### Disconnect Xero

To disconnect your Xero account, click **Disconnect** on the integrations page. Disconnecting **immediately revokes eggz's access at Xero** — the connection is withdrawn on Xero's side straight away, not just removed from eggz — so eggz can no longer read or sync your data. It does **not** delete any data already synced into eggz.

### Switch to a different organisation

Because only one Xero organisation can be connected per workspace, to change which one is linked: **Disconnect** the current organisation, then **Connect to Xero** again and choose the other organisation on the selection screen.

## Limitations

* **One Xero organisation per workspace**: You cannot connect multiple Xero organisations to the same eggz workspace.
* **One-way sync for most data**: Bills in eggz are **read-only copies synced from Xero** — edit them in Xero. (Publishing a processed receipt can *create a new bill in Xero* — see [What eggz pushes to Xero](#what-eggz-pushes-to-xero) — but existing bills never sync back.) Contact details also sync one way from Xero; the CRM fields you manage on customers in eggz (owner, segment, annual value, and so on) live only in eggz and are never pushed to Xero. Invoices and quotes synced from Xero are one-way too — but a **draft you create in eggz** can be [published to Xero](/help/guides/publish-to-xero).
* **Manual sync**: You need to click the Sync button to pull new data. There is no automatic polling.
* **No bank reconciliation**: eggz displays financial data but does not perform bank reconciliation. Continue using Xero for reconciliation.
* **Currency conversion**: Analytics use your default exchange rates set in general settings, not live foreign exchange rates.
* **Invoices settled by credit notes, overpayments, or prepayments** still show as **Outstanding** in eggz for now, even though Xero considers them settled. This is coming in a follow-up. Invoices settled by an ordinary payment are handled correctly today.
