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

# Importing a Chart of Accounts

> If you already have a chart of accounts — from a spreadsheet, another accounting system, or a country-specific standard — you can load it into Hitaji 360…

If you already have a chart of accounts — from a spreadsheet, another accounting system, or a country-specific standard — you can load it into Hitaji 360 with the **Chart Import** wizard instead of building accounts one at a time. The wizard walks you through four steps: choose a source, map columns, preview, and execute.

**You'll find this at:** `/accounting/accounts/import` (from the Chart of Accounts page, the import flow opens this wizard).

> 📷 *Screenshot: The Chart Import wizard showing the Source → Mapping → Preview → Result step indicator — to be added.*

***

## When to use it

Use the import wizard when:

* You're onboarding a business that already has an established chart you want to keep, or
* You want to start from a **ready-made template** rather than Hitaji 360's built-in default.

If you just want a sensible standard chart to start from, you don't need the wizard at all — the **Bootstrap chart** button on the [Chart of Accounts](/accounting/user/getting-started/chart-of-accounts) page installs the built-in template in one click.

**Before importing:** confirm the correct business is active in the business switcher. The import lands in that business's book only.

***

## The four steps

The wizard shows a progress indicator across the top: **Source → Mapping → Preview → Result.**

### Step 1 — Source

Choose where the accounts come from:

* **Template** — pick from the built-in chart templates. Each template lists its name, country (if any), version, and how many accounts it contains; you can preview the full account tree before importing.
* **Paste / upload CSV or TSV** — provide your own data. You can download a **sample CSV template** to see the expected shape. The sample columns are:

  ```
  code, name, type, parent_code, is_group, detail_type, description
  ```

  with rows such as `1110, Cash, ASSET, 1100, false, cash, Cash on hand`.

The parser handles both comma- and tab-separated data and respects quoted fields.

### Step 2 — Mapping

The wizard **auto-detects** which of your columns map to each field (code, name, type, parent code, is-group, detail type), recognising common header names — for instance `account_code`, `account_number`, `acct_no`, or `no` all map to **code**; `revenue` maps to the **income** type; and `header` is treated as a group flag. You can adjust any mapping the auto-detector got wrong, and you'll see sample values from your data to confirm each column.

You also choose how the **hierarchy** is built:

* **Parent code** (default) — each account names its parent's code in a column.
* **Code prefix** — parents are inferred from the account codes themselves (shorter codes, or codes with trailing zeros, become parents of longer ones).
* **Flat** — no hierarchy; every account is top-level.

### Step 3 — Preview & validate

The wizard validates your accounts against the existing chart and shows a summary: totals, counts by type, how many are groups, and how many **conflict** with codes already in your book. Issues are surfaced as:

* **Errors** (block the import) — e.g. a missing code or name, an invalid account type, a **duplicate code within the import**, or a **parent code that doesn't exist** in either the import or your existing chart.
* **Warnings** (don't block) — e.g. a code that already exists and will be skipped or updated, depending on your conflict setting.

Each affected account is annotated inline so you can see exactly what needs fixing.

You also pick a **conflict resolution** strategy for codes that already exist:

| Strategy           | Behaviour on an existing code                                            |
| ------------------ | ------------------------------------------------------------------------ |
| **Skip** (default) | Leave the existing account untouched; still import its children under it |
| **Update**         | Overwrite the existing account's details from the import                 |
| **New code**       | Import as a new account with a suffixed code (`<code>_imported`)         |

### Step 4 — Execute & result

Run the import. Hitaji 360 creates the accounts (recursively, parents before children), records the run as an **import batch**, and shows you the result: how many were **created**, **skipped**, and **failed**, with any per-account error messages. From the result screen you can jump straight to the Chart of Accounts to see your imported tree.

> Imported accounts are created as **custom** (non-system) accounts. They do not replace the system control accounts the rest of Hitaji 360 needs — if you import onto an empty book, consider whether you still need the standard control accounts (Bootstrap installs those).

***

## Import history and undo

Every import is saved as a **batch** with its source, template name (if any), counts, and timestamp. You can:

* **View import history** — the list of past import batches for the business.
* **Undo a batch** — soft-delete every account that batch created, in one action. An undone batch is marked as such and cannot be undone twice. (Undo removes the *imported* accounts; it does not touch accounts that already existed and were merely updated or skipped.)

This makes importing low-risk: if a mapping or template turns out wrong, undo the batch and try again.

***

## Tips for a clean import

* Make sure every **parent code** referenced in your file either appears earlier in the same file or already exists in the chart — otherwise those rows error out.
* Keep codes **unique** within your file; duplicates are rejected.
* Use a valid **type** for every account: `ASSET`, `LIABILITY`, `EQUITY`, `INCOME`, or `EXPENSE` (the parser also understands friendly variants like `assets`, `liabilities`, and `revenue`).
* Mark header rows with `is_group = true` (or `yes`/`1`/`header`) so they don't accept direct postings.

***

## Related

* [Chart of Accounts](/accounting/user/getting-started/chart-of-accounts)
* [Accounting Overview](/accounting/user/getting-started/overview)
* [Opening Balances](/accounting/user/getting-started/opening-balances)
* [Accessing Accounting](/accounting/user/getting-started/accessing-accounting)
