> For the complete documentation index, see [llms.txt](https://prohelp.assetpanda.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://prohelp.assetpanda.com/integrations-store/record-management/xero-integration.md).

# Xero Integration

You can integrate Xero with Asset Panda Pro to enable the calculation of asset depreciation and the direct transfer of depreciation values into Xero as manual journal entries. The process eliminates manual entry, reduces errors, and ensures financial records remain accurate and current. Depreciation data synchronized between both platforms supports efficient accounting workflows and reliable financial reporting.&#x20;

You can also send your Asset Panda Pro assets to Xero as fixed asset records, so your assets exist in both systems without manual re-entry.

## Integration overview

This integration supports the following mapping options. You can configure either or both options with the integration.

### Send depreciation as journal entries

1. Asset Panda Pro calculates depreciation for the selected collection and applies grouping, if configured.
2. The system validates that total debits equal total credits.
3. A manual journal is built with the following information:
   * Line amounts (positive for debit, negative for credit)
   * No Tax tax type: Journals are posted with the No Tax tax type so depreciation entries are not taxed.
   * Status of Posted
4. The journal is sent to Xero, and the returned Manual Journal ID is stored against the source record for audit.

{% hint style="info" %}

* The currency of posted journals follows your Xero organization's base currency, not Asset Panda Pro. Confirm the organization's base currency before running a sync.
* Access tokens are refreshed automatically. If a refresh fails, an administrator is prompted to reauthorize the connection.
* Errors (authentication or token refresh failures, invalid or inactive account mappings, unbalanced journals, rate limit responses, and general API errors) are logged and visible to administrators.
  {% endhint %}

### Create assets as fixed asset records

1. Asset Panda Pro sends selected records to Xero, where each is created as a draft fixed asset.

{% hint style="info" %}
Assets are created without depreciation fields, so Xero does not depreciate them. Depreciation continues to be tracked in Asset Panda Pro and synced separately as journal entries.
{% endhint %}

2. The returned Xero asset ID is stored against each source record, so a record is never created twice. Records already linked to a Xero asset are skipped on later runs, and the sync does not update assets that already exist in Xero.

## Prerequisites

* Active Asset Panda Pro subscription with administrator access
* Active Xero account with administrator access

{% hint style="info" %}
The Demo Company can be used for testing.
{% endhint %}

* Depreciation Expense and Accumulated Depreciation accounts in the Xero Chart of Accounts (required for journal entries)

## Set up the Xero Developer Portal

1. Log into your Xero Developer account at [Xero Developer](https://developer.xero.com/) and open the **My Apps** tab.
2. Click **New app**.
3. Enter an **App name**, select **Web app** as the integration type, and provide your company or app URL.
4. Add the Redirect URI: `https://assetpanda.app/settings/account-management/configure-integration/authentication`.&#x20;

{% hint style="warning" %}
Do not modify this URI.
{% endhint %}

5. Create the app and then open its **Configuration** page.
6. Copy the **Client ID** and then click **Generate a secret** and copy the **Client Secret**.&#x20;

{% hint style="warning" %}
The **Client Secret** is shown only once. If you leave the **Configuration** page without copying it, you will need to generate a new one.
{% endhint %}

5. Secure both values.&#x20;

{% hint style="info" %}
The scopes needed for the integration are requested automatically by Asset Panda Pro during authorization, so no scope configuration is required in the developer portal.
{% endhint %}

## Set up the Xero integration in Asset Panda Pro

1. Log into Asset Panda Pro with an administrator account
2. Navigate to <img src="/files/dLHka5YWbUR3zisHLua6" alt="Settings icon" data-size="line"> **Settings** > **Account Management**.
3. Expand the appropriate account and module.
4. Click **Manage** in the **Integrations** card.
5. Select **Integrations Store**.
6. In the **Xero** tile, click **Add**. The **Integrations in this module** tab is displayed.
7. In the **Xero** tile, click **Configure**.
8. Enter the **Client ID** and **Client Secret** from your Xero Developer app.
9. Click **Authorize**.&#x20;
10. Sign in to Xero and approve access. If your login has access to more than one organization, select the Xero organization to sync to. The selected organization is stored for the connection.
11. Click **Test and save connection**.
12. If the test is successful, click **Continue with mapping**.
13. Configure the mapping options based on the selected mapping option:
    * [Depreciation journal entries](#mapping-depreciation-journal-entries)
    * [Fixed asset records](#mapping-fixed-asset-records)
14. Click **Save**.

### Mapping: Depreciation journal entries

1. Enter a **Mapping Name** for your configuration (for example, Journal entries to Xero).
2. Confirm the **Sync Direction**. This integration is one-way: Asset Panda Pro to Xero.
3. Select the **External Entity**. This is the Xero organization the entries are posted to (for example, Demo Company (US)).
4. Select the **Collection** in which depreciation values are calculated for your records (for example, Assets for depreciation).
5. Choose the **Credit GL** and **Debit GL** accounts for the journal entries.&#x20;

   * **Credit GL**: Accumulated Depreciation account (for example, 151 - Less Accumulated Depreciation on Office Equipment)
   * **Debit GL**: Depreciation Expense account (for example, 700 - Depreciation)

   Accounts are pulled from your Xero Chart of Accounts and the account **Code** is stored for each mapping.
6. Set **Group by** to control how journals are created:
   * Select **All** to create a single journal entry for the entire collection.
   * Select **None** to create one journal entry for each record in the collection.
   * Select any other field (such as **Category**, **Location**, or **Department**) to group records by that field, creating one journal entry per field value group.
7. Review the **Mapping & Sync Direction** section. The following mappings are configured by default:
   * Depreciation date (Asset Panda Pro) maps to Depreciation Date (Xero).
   * Depreciation amount (Asset Panda Pro) maps to Line Amount (Xero). The debit line is posted as a positive amount and the credit line as a negative amount, so each journal balances to zero.
8. For the **Narration** field, select the Asset Panda Pro field to use for the journal narration (for example, Category, Asset Name, or Asset ID). This setting is required.&#x20;

{% hint style="info" %}
Narration is the free-text memo on the Xero manual journal.
{% endhint %}

9. Click **Save**.

### Mapping: Fixed asset records

1. Enter a **Mapping Name** (for example, Assets to Xero).
2. Confirm the **Sync Direction**. This integration is one-way: Asset Panda Pro to Xero.
3. For **External Entity**, select the Xero organization to which the entries are to be posted (for example, Demo Company (US)).
4. Select the **Collection** that holds the assets to send.
5. Map an Asset Panda Pro **Unique Identifier** to the Xero **Asset Number**. This is required.
6. Map the **Asset Name** field. This is required.
7. Click **Add more** to map optional Xero asset fields (for example, **Asset Type**, **Purchase Date**, **Purchase Price**, **Description**, or **Serial Number**).

{% hint style="info" %}
If you map **Asset Type**, the value must match an existing asset type in your Xero organization. Records whose asset type does not exist in Xero are skipped and logged. If **Asset Type** is not mapped, all records are sent and assets are created without a type.
{% endhint %}

8. Click **Save**.
