Skip to main content
This section describes how to implement Tax Sync between an Accounting System and Pleo. It maps tax code data from the Accounting System to the equivalent Tax Codes 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. Tax Sync ensures Pleo always has a current, accurate list of tax codes. Stale or missing tax codes result in expenses carrying incorrect tax data when exported. For the full tax-to-expense chain, see Platform Capabilities: Tax Sync.

Tax Sync Execution Model

Tax Sync is a deterministic reconciliation process executed by the integration. On each sync run, the integration:
  1. Retrieves relevant active Tax Codes from the Accounting System (filtering out irrelevant or inactive codes)
  2. Retrieves the current state of Tax Codes 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 Tax Codes API
Each sync run must be independent, repeatable, and produce a consistent end state.

High-Level Process

Matching Model

Tax Codes are matched to their AS counterparts using the code field. For full matching rules, see Sync Tax Codes.

Sync Process

Tax Sync runs as a single reconciliation step on every sync cycle. The integration fetches relevant active tax codes from the Accounting System and all Tax Codes (active and archived) from Pleo, then reconciles the two using the code field.

Filtering

Before reconciliation, the integration must filter the tax codes retrieved from the Accounting System:
  • Exclude tax codes not relevant to expense management (for example: Sales VAT)
  • Exclude blocked, inactive, or archived tax codes
Only the filtered set of active, relevant tax codes is used for reconciliation.

Reconciliation Outcomes

ConditionResult
Matching active Tax Code in Pleo, details matchPreserve existing Tax Code
Matching active Tax Code in Pleo, details differUpdate Tax Code name, rate, and type to match AS
Matching archived Tax Code in PleoUnarchive Tax Code and update details if needed
No matching Tax Code in PleoCreate new Tax Code with code, name, rate, and type
Duplicate codes in PleoRetain the Tax Code matching the AS rate; archive the duplicate
After all Accounting System tax codes are processed, any remaining active Tax Codes in Pleo that had no match are archived. For the full reconciliation algorithm and step-by-step implementation instructions, see Sync Tax Codes.

Tax Code Types

Pleo supports two tax code types: inclusive and reverse. For full type mapping rules, see Tax Sync Data Mapping.

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 Tax Codes API. See the how-to article for step-by-step implementation instructions.
Rate Limit HandlingScheduling must respect the Pleo Tax Codes API rate limit.
For schedule, frequency, and rate limit details, see Tax 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 UpdatesTax Codes 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 active, relevant tax codes from the Accounting System
  • Tax Codes remain stable across repeated sync runs
  • Outdated tax codes are archived automatically
  • Bookkeepers always have current, accurate tax codes available for expense assignment

What Comes Next?