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

# Xero

> Automated US sales tax calculation written back to Xero invoices in real time.

The Xero and Numeral integration automates sales tax calculations and writes the correct tax amount back to your Xero invoices in real time. Numeral handles US sales tax compliance end-to-end directly inside your existing Xero workflow.

***

## Prerequisites

Before you begin, ensure you have:

* An active Xero organization with **admin access** (required to authorize Numeral's app)
* A **Numeral account** with admin access
* A clear sense of which **Xero organization** you want to connect first; if your Xero login has access to several, you'll pick one during the flow. You can repeat this process to connect more later.

<Note>
  Numeral processes only **sales invoices** (Xero `ACCREC`). Bills (`ACCPAY`), purchase orders, and quotes are ignored. Invoices in `DRAFT` or `SUBMITTED` status are also ignored until you authorize them.
</Note>

***

## What Numeral will access

When you authorize the connection, Xero asks you to grant Numeral the following scopes:

| Scope                                | Why we need it                                                       |
| ------------------------------------ | -------------------------------------------------------------------- |
| `accounting.invoices`                | Read sales invoices and write the calculated tax amount back to them |
| `accounting.contacts.read`           | Read customer addresses to determine the right tax jurisdiction      |
| `accounting.settings`                | Read existing tax rates and create Numeral-managed rates             |
| `accounting.reports.taxreports.read` | Pull tax reports for reconciliation                                  |
| `openid`, `profile`, `email`         | Identify the user authorizing the connection                         |

Numeral never reads bank feeds, payroll, or non-sales invoices.

***

## Step 1: Connect Numeral to Xero

To establish the integration between Numeral and Xero, you'll authorize Numeral as a Xero connected app via OAuth. No API keys or manual webhook setup is needed.

### Open the Connections page in Numeral

1. Log in to your **Numeral account**
2. Go to **Connections** in the navigation menu
3. Click **Add a Connection** in the top right of the page

<img src="https://mintcdn.com/numeralhq/teAfQjErxCBYG3kw/images/integrations/xero/01-add-connection.png?fit=max&auto=format&n=teAfQjErxCBYG3kw&q=85&s=d3b8e7830f48b382b795402cce833035" alt="Add a Connection" width="3022" height="1878" data-path="images/integrations/xero/01-add-connection.png" />

### Choose Xero

1. In the **Add Connection** modal, find and click the **Xero** card

<img src="https://mintcdn.com/numeralhq/teAfQjErxCBYG3kw/images/integrations/xero/02-choose-xero.png?fit=max&auto=format&n=teAfQjErxCBYG3kw&q=85&s=b919c8ef9a01f90acec15d7cc27056e8" alt="Choose Xero" width="3018" height="1886" data-path="images/integrations/xero/02-choose-xero.png" />

2. Review the brief overview of what Numeral does with your Xero data
3. Click **Connect to Xero**

<img src="https://mintcdn.com/numeralhq/teAfQjErxCBYG3kw/images/integrations/xero/03-connect-to-xero.png?fit=max&auto=format&n=teAfQjErxCBYG3kw&q=85&s=2c76d8d48af7a7a23b6f171fa3651082" alt="Connect to Xero" width="3012" height="1880" data-path="images/integrations/xero/03-connect-to-xero.png" />

### Sign in and authorize

1. You'll be redirected to **Xero's login page**. Sign in with your Xero credentials.
2. Xero shows the list of permissions Numeral is requesting. Review them, then click **Allow access**.

***

## Step 2: Pick the organization to connect

If your Xero login has access to **multiple organizations**, Numeral will ask which one to connect.

1. Select the organization from the list

<img src="https://mintcdn.com/numeralhq/teAfQjErxCBYG3kw/images/integrations/xero/04-pick-organization.png?fit=max&auto=format&n=teAfQjErxCBYG3kw&q=85&s=b8fe223229a99973dc2e3ec65be8253c" alt="Pick organization" width="3010" height="1874" data-path="images/integrations/xero/04-pick-organization.png" />

2. Click **Connect**

<Note>
  If your login only has access to **one Xero organization**, this step is skipped automatically. To connect a different Xero organization later, repeat the flow from your Numeral Connections page.
</Note>

<img src="https://mintcdn.com/numeralhq/teAfQjErxCBYG3kw/images/integrations/xero/05-xero-connected.png?fit=max&auto=format&n=teAfQjErxCBYG3kw&q=85&s=4d1ce2d0c0c66df153acbbb1a2584654" alt="Xero connected" width="3016" height="1880" data-path="images/integrations/xero/05-xero-connected.png" />

Numeral confirms you're connected to Xero. The next screen takes you to Fivetran so it can authorize the historical data sync.

***

## Step 3: Authorize the data sync (Fivetran)

Numeral uses Fivetran to keep your historical Xero data in sync. After picking your organization, Numeral creates a Fivetran connector for you and redirects to Fivetran's authorization screen.

<img src="https://mintcdn.com/numeralhq/teAfQjErxCBYG3kw/images/integrations/xero/06-fivetran-connect.png?fit=max&auto=format&n=teAfQjErxCBYG3kw&q=85&s=ea45e612ce5cbf8f3dd2b9d17c3f95cf" alt="Fivetran connect page" width="3018" height="1876" data-path="images/integrations/xero/06-fivetran-connect.png" />

1. You'll be redirected to a Fivetran **Connect** page. The OAuth credentials (Client ID and Client Secret) are **pre-filled by Numeral** — you don't need to enter anything.
2. Click **Authorize** to grant Fivetran read access to your Xero data.

<img src="https://mintcdn.com/numeralhq/teAfQjErxCBYG3kw/images/integrations/xero/07-fivetran-authorize.png?fit=max&auto=format&n=teAfQjErxCBYG3kw&q=85&s=a537d0a187ab49912c0ca6677abb25bb" alt="Fivetran authorize" width="3018" height="1804" data-path="images/integrations/xero/07-fivetran-authorize.png" />

<img src="https://mintcdn.com/numeralhq/teAfQjErxCBYG3kw/images/integrations/xero/08-fivetran-xero-auth.png?fit=max&auto=format&n=teAfQjErxCBYG3kw&q=85&s=b76845b26ac2f4bd64e6479f768487ab" alt="Fivetran Xero authorization" width="3022" height="1888" data-path="images/integrations/xero/08-fivetran-xero-auth.png" />

3. Fivetran redirects you back to Numeral once authorization completes.

<img src="https://mintcdn.com/numeralhq/teAfQjErxCBYG3kw/images/integrations/xero/09-fivetran-save-test.png?fit=max&auto=format&n=teAfQjErxCBYG3kw&q=85&s=0905cfe159f09b2518d635c570615059" alt="Fivetran save and test" width="3014" height="1888" data-path="images/integrations/xero/09-fivetran-save-test.png" />

<Note>
  This is a *separate* OAuth grant from Step 1. Step 1 lets Numeral read and write invoice tax in real time; this step lets Fivetran replicate your historical Xero data into Numeral's data lake for backfill, filings, and reconciliation.
</Note>

4. Click **Save & Test**. You'll see a confirmation that the connection is finalized and Numeral begins the initial sync.

***

## Step 4: Wait for the initial sync

<img src="https://mintcdn.com/numeralhq/teAfQjErxCBYG3kw/images/integrations/xero/10-initial-sync.png?fit=max&auto=format&n=teAfQjErxCBYG3kw&q=85&s=5ff178e5db222a3d54a4adf5c4138226" alt="Initial sync" width="3024" height="1896" data-path="images/integrations/xero/10-initial-sync.png" />

After the connection succeeds, Numeral kicks off two background jobs:

| Job                  | What it does                                                                                        |
| -------------------- | --------------------------------------------------------------------------------------------------- |
| **Product sync**     | Pulls your Xero items so you can categorize them for tax                                            |
| **Invoice backfill** | Pulls all historical sales invoices (`ACCREC`) so we can compute past liability and prepare filings |

***

## Step 5: Categorize your products

Once the product sync finishes, head to **Products** in the Numeral sidebar to assign tax categories to each Xero item.

<Tip>
  **Why this matters**

  Different products are taxed differently across US jurisdictions. Assigning the right category lets Numeral apply the correct rate per state, county, and city. Items left uncategorized fall back to your store's default category.
</Tip>

<Note>
  Categorization should happen early in your onboarding in case Numeral does not have the proper category built out for one of your products. If a category needs to be added, contact your Numeral onboarder.
</Note>

***

## How tax calculation works

Once the integration is live, here's what happens automatically:

1. **Invoice created or updated in Xero** — Xero sends a webhook to Numeral.
2. **Numeral fetches the full invoice and customer address** — the customer's `STREET` address (with `POBOX` as fallback) determines the tax jurisdiction.
3. **Numeral calculates tax per line item** — using the product category, customer location, and your active registrations.
4. **Numeral writes the tax back to Xero** — each line's `TaxAmount` and the invoice's `TotalTax` are updated.
5. **A transaction is recorded in Numeral** — used later for filing and reconciliation.

### What you'll see

* **In Xero:** Invoices will display itemized sales tax amounts calculated by Numeral.
* **In Numeral:** The Transactions page will list every Xero invoice with its tax breakdown, jurisdiction, and customer details.
* **At filing time:** Numeral aggregates Xero sales for the filing period and prepares the return for review on the Filings page.

***

## Troubleshooting

<AccordionGroup>
  <Accordion title="Tax fields are wrong or missing on a Xero invoice">
    Most often this is because the customer's address on the Xero contact is missing or incomplete. Numeral uses the contact's `STREET` address (with `POBOX` as a fallback) to determine the tax jurisdiction. Update the address in Xero and the next webhook will recalculate.

    Other things to check:

    * The customer's state has an active registration in Numeral
    * The product on the line item is taxable in that state
  </Accordion>

  <Accordion title="Xero shows the wrong organization during connection">
    Sign out of Xero in another tab, then start the connection flow again. Xero remembers your last-used org and will sometimes default to it.
  </Accordion>

  <Accordion title="Sync has been running for hours and isn't finishing">
    Check the Connections page — if it shows an error state, click into the connection for details. Otherwise, contact support with your Numeral account ID and we'll investigate.
  </Accordion>

  <Accordion title="How do I disconnect Xero?">
    On the Connections page, click into the Xero connection and use the **Disconnect** button. This stops further syncs but preserves your historical filing data.
  </Accordion>
</AccordionGroup>
