Skip to main content
This section describes how to implement Chart of Accounts Sync between an Accounting System and Pleo. It maps Chart of Accounts entries from the Accounting System to the equivalent Chart of Accounts in Pleo. Synchronisation is one-way, from the Accounting System into Pleo. The integration is responsible for all sync orchestration, reconciliation, and API operations. The pages in this section cover the detailed implementation requirements for the sync process. Chart of Accounts Sync is the first step in Pleo’s account-to-expense chain. Accounts synced here are what bookkeepers assign to expense categories; stale or missing accounts result in exports referencing incorrect account data. For the full account-to-expense chain, see Platform Capabilities: Chart of Accounts Sync.

Chart of Accounts Sync Execution Model

Chart of Accounts Sync is a deterministic reconciliation process executed by the integration. On each sync run, the integration:
  1. Retrieves active Accounts from the Accounting System
  2. Retrieves the current state of Accounts from Pleo (active and archived)
  3. Reconciles Pleo to match the Accounting System state
  4. Applies the required create, update, unarchive, and archive operations via the Pleo API
Each sync run must be independent, repeatable, and produce a consistent end state.

High-Level Process

Matching Model

Accounts are matched to their AS counterparts using the externalId field. For full matching rules, see Sync Accounts.

Sync Process

Chart of Accounts Sync runs as a single reconciliation step on every sync cycle. The integration fetches all active accounts from the Accounting System and all accounts (active and archived) from Pleo, then reconciles the two using the externalId field.

Reconciliation Outcomes

ConditionResult
Matching active Account in Pleo, details matchPreserve existing Account
Matching active Account in Pleo, details differUpdate Account name and code to match AS
Matching archived Account in PleoUnarchive Account and update details if needed
No matching Account in PleoCreate new Account with name, code, and externalId
After all Accounting System accounts are processed, any remaining active Accounts in Pleo that had no match are archived. For the full reconciliation algorithm and step-by-step implementation instructions, see Sync Accounts.

Execution Requirements

RequirementDescription
Scheduling OwnershipThe integration defines sync timing and execution frequency
Full ReconciliationEvery sync execution reconciles against full Accounting System state
Non-Overlapping ExecutionSync executions must not overlap
API OwnershipAll changes are applied through the Pleo Chart of Accounts API. See the how-to article for step-by-step implementation instructions.
Rate Limit HandlingScheduling must respect the Pleo Chart of Accounts API rate limit.
For schedule, frequency, and rate limit details, see Chart of Accounts Sync Periodicity and Scheduling.

Processing Principles

PrincipleDescription
Unidirectional SyncData only flows from the Accounting System into Pleo
Idempotent ExecutionRe-running the same sync with unchanged data produces the same final state
Deterministic ReconciliationIdentical inputs must produce identical outputs
Non-Destructive UpdatesAccounts are archived instead of deleted
Consistent Identity ResolutionMatching logic must behave consistently across executions
Stateless ExecutionEach sync run must independently reconcile against current source state

Expected Outcome

After implementation:
  • Pleo accurately reflects the Chart of Accounts from the Accounting System
  • Accounts remain stable across repeated sync runs
  • Outdated accounts are archived automatically
  • Bookkeepers always have current, accurate accounts available for category assignment

What Comes Next?