> For the complete documentation index, see [llms.txt](https://help.modelreef.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.modelreef.io/help/xero-integration/coa-import.md).

# COA Import

This article explains how to import the Chart of Accounts (COA) from Xero into Model Reef and map it into a clean modelling structure.

You will learn how to:

* Pull the COA from a connected Xero organisation.
* Map accounts to variable types and categories.
* Assign accounts to branches.
* Prepare the model for historical actuals import.

***

## What the COA import does

The COA import:

* Reads the full Chart of Accounts from your connected Xero organisation.
* Presents each account with its code, name and type.
* Lets you map each account to:
  * A variable type (Revenue, COGS, Opex, Staff, Asset, Liability, Equity, Tax, Dividend).
  * A reporting category and subcategory.
  * A branch (entity, division, store or project) in the model.
* Stores these mappings for future actuals imports and refreshes.

The COA import itself does not pull transaction values yet. It establishes the structure and mapping rules that will be used when you import actuals.

***

{% stepper %}
{% step %}

### Step 1: Running the COA import

After authenticating to Xero for a model:

* Open the **Xero Integration** panel.
* Click **Import Chart of Accounts**.
* Wait while Model Reef retrieves the account list.
* You will see a table of accounts including:
  * Xero account code.
  * Account name.
  * Account type (as defined in Xero).
  * Status (active or archived).

You can choose to include or exclude archived or inactive accounts depending on your modelling needs.
{% endstep %}

{% step %}

### Step 2: Mapping account to variable type

For each relevant account, choose a **variable type**:

* Revenue accounts -> **Revenue**.
* Direct cost accounts -> **COGS**.
* Operating expense accounts -> **Opex** or **Staff** where appropriate.
* Fixed asset accounts -> **Asset**.
* Loan and debt accounts -> **Liability**.
* Equity accounts -> **Equity**.
* Tax related accounts -> **Tax**.
* Dividend accounts -> **Dividend**.

Model Reef may propose default mappings based on Xero account type and name, but you can override them.

Correct type mapping ensures that actuals flow correctly into P\&L, Balance Sheet and Cashflow.
{% endstep %}

{% step %}

### Step 3: Mapping to categories and subcategories

Assign each account to reporting **categories** and optional **subcategories**. Examples:

* `200 - Sales` -> Category: `Revenue - Subscriptions`.
* `300 - Cost of Sales` -> Category: `COGS - Direct`.
* `400 - Wages and Salaries` -> Category: `Staff - Salaries`.
* `500 - Rent` -> Category: `Opex - Property`.
* `610 - Bank Loan` -> Category: `Liabilities - Loans`.

You can use:

* Existing categories defined in the model.
* New categories created during mapping if necessary.

A consistent category scheme across accounts makes consolidated reporting much clearer.
{% endstep %}

{% step %}

### Step 4: Mapping to branches

If your Model Reef model uses branches for entities, divisions or stores, assign accounts to branches:

* Entity specific accounts -> map to that entity branch.
* Shared group level accounts -> map to the group or a shared services branch.
* Store or cost centre accounts -> map to corresponding operational branches.

Branch mappings determine where actuals appear in branch level P\&L, Balance Sheet and Cashflow views.

Options:

* Map one account to one branch.
* For complex allocations, import at the entity level and then create separate bridging variables for branch splits.
  {% endstep %}

{% step %}

### Step 5: Saving mappings and preparing for actuals import

Once you are satisfied with your mappings:

* Save or apply the mappings.
* Model Reef stores the mapping rules for this model.
* When you later run an **Actuals Import**, these mappings will be used automatically to create and update variables.

You do not need to remap the COA for every refresh unless the underlying Xero Chart of Accounts changes.
{% endstep %}
{% endstepper %}

***

## Updating COA mappings later

<details>

<summary>When and how to rerun the COA import</summary>

If you:

* Add new accounts in Xero.
* Change how you want to group accounts in reports.
* Change your branch structure.

You can rerun the COA import step to:

* Pull new accounts.
* Update mappings for existing accounts.
* Remap accounts to new categories or branches.

Existing variables and historical data will be updated accordingly.

</details>

***

{% hint style="info" %}
Practical tips

* Start with mapping the most material accounts first (revenue, COGS, main operating expenses, key assets and loans).
* Use a simple, consistent category scheme that aligns with your management reports.
* Where possible, align Xero account names and codes with your Model Reef naming conventions to reduce confusion.
* Document your mapping logic for future reference in the team.
  {% endhint %}

***

## Related articles

* [Course/Program Profitability](/use-cases/education-providers-private-vocational/course-program-profitability.md)
* [Build a Cost of Goods Model](/how-tos/operations-and-unit-economics/build-a-cost-of-goods-model.md)
* [COA Import](/help/xero-integration/coa-import.md)
* [Auto-Validation Rules](/syntax/how-input-fields-work/auto-validation-rules.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.modelreef.io/help/xero-integration/coa-import.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
