Skip to content
Chart of Accounts

Import a Chart of Accounts from a CSV

Updated Sep 13, 2026Web

Every row is matched against your existing accounts first. The preview says exactly what will be created, updated and left alone — and what it refuses.

Before you start

Nothing is written until you have seen what will happen. Pippin reads the file, matches each row against the accounts you already have, and shows you a plan.

Every row gets one of these verdicts:

Verdict What it means
New No account matches. It will be created.
Update An account matches, and something about it differs.
No change An account matches and already agrees. Nothing happens.
Structural The row would move an account under a different parent. Allowed, but look at it.
Type differs The row says this code is an asset and your books say it is an expense. Refused.
Duplicate code The same code appears twice in the file. Refused.
Two of this name The name matches two of your accounts. Refused rather than guessed.
Missing parent The row’s parent is neither in your books nor in the file. Refused.
No name · Unknown type · Unknown subtype The row cannot be read. Refused.

A refused row does not stop the others. Fix it in the file and run the import again.

Steps

Screenshot · this article

Good to know

Import your Chart of Accounts before anything else. Opening balances, Bills and receivables all post to accounts, so they need somewhere to land.

Re-running the import is safe. Rows that already agree come back as No change.

An account’s type cannot be changed by an import. Retyping an account that already carries postings would silently restate every report it appears in, so Pippin refuses and tells you which row.

Didn't solve it?
Beta support answers within one business day.