Structure & Integration

Analytical accounting lets you allocate revenues and expenses by custom business dimensions like departments, projects, regions, or product lines. It exists in many accounting systems, such as Odoo, Netsuite, Exact Online, or QuickBooks Online, and is fully supported in our unified API. In Chift, this functionality revolves around Analytical Plans (dimensions) and Analytical Accounts (values within a dimension).

What are Analytical Plans / Accounts?

An Analytical Plan (also called a dimension or axis) defines a business perspective for analysis. Each plan includes multiple Analytical Accounts (or values) that can be used to tag entries. Here’s an example of plans / accounts scheme:
Analytical PlanAnalytical Accounts
DepartmentSales, HR, Marketing
ProjectProject A, Project B
This sits in parallel to the general ledger accounts: while ledger accounts define the accounting nature of an entry (e.g., “Rent expense”), analytical plans define its business context (e.g., “Marketing team”).

Fixed vs. Dynamic Plan Models

Depending on the accounting system:
  • Some systems use a fixed number of analytical plans — For insatnce, in Exact Online, exactly 2 dimensions with predefined meanings: cost centers and cost units.
  • Others (e.g., Odoo, Netsuite) allow dynamic or unlimited plans, which can be created and managed freely by the user.
Our API supports both models seamlessly.

Analytical plans in Chift

We distinguish two modes of operation:

Single vs. Multi Analytical Plan Modes

  • Single Analytical Plan Mode:
In this mode, only one analytical plan is used. It is defined and configured directly in the connector’s platform settings. You don’t need to use the analytical plan structure in the API — there is no need to specify which plan to use, since only one exists by default.
In mono mode, you can only assign one analytical account per line (no distribution or percentage is possible).
  • Multi Analytical Plan Mode: In this mode, multiple analytical plans can be used (e.g., project, department, region). You must explicitly define, for each line, the analytical plan and corresponding accounts with their distribution.
The Chift API supports both configurations, and the choice depends on the connector setup.
Analytical plans are attached to accounting entries (lines) — this is where analytical allocations happen. They are relevant in the context of:
  • Journal Entries (journal_entries)
  • Invoices (sales_invoices, purchase_invoices) — specifically, the invoice lines that will generate accounting entries.
Analytical plans do not apply to purely financial data or summaries; they are tied to the accounting side of the transaction.

Endpoints to manage Analytical Plans in Chift’s API

MethodEndpointShort description
GET/analytic_plansGet Analytic Plans (list of plans)
POST/analytic_accountsCreate analytic account (single)
POST/analytic_accounts/multipleCreate analytic account (multiple plans)
GET/analytic_accountsGet analytic accounts (list)
GET/analytic_accounts/Get analytic account (detail)
PATCH/analytic_accounts/Update analytic account
GET/analytic_accounts/multiple/Get analytic account (multiple plans)
PATCH/analytic_accounts/multiple/Update analytic account (multiple plans)
GET/analytic_accounts/multipleGet analytic accounts (multiple plans)

Example of an invoice entry using multiple analytical plans in our API

Let’s illustrate by an example:
  • The purchase invoice line for “Consulting Services” has a total amount of 1000.
  • This cost is analytically split:
    • Projects: 70% to project_alpha, 30% to project_beta.
    • Departments: 40% to sales, 35% to marketing, 25% to engineering.
  • This enables detailed cost tracking across both projects and departments, in parallel to the general ledger account 610.
{
  "invoice_type": "purchase",
  "lines": [
    {
      "description": "Consulting Services",
      "amount": 1000,
      "account_id": "610",  // General ledger expense account
      "analytic_distribution": [
        {
          "analytic_plan": "project",
          "analytic_accounts": [
            {
              "analytic_account": "project_alpha",
              "percentage": 70
            },
            {
              "analytic_account": "project_beta",
              "percentage": 30
            }
          ]
        },
        {
          "analytic_plan": "department",
          "analytic_accounts": [
            {
              "analytic_account": "sales",
              "percentage": 40
            },
            {
              "analytic_account": "marketing",
              "percentage": 35
            },
            {
              "analytic_account": "engineering",
              "percentage": 25
            }
          ]
        }
      ]
    }
  ]
}