Kommo + Sage: CRM and Accounting Integration Without Manual Data Entry

Kommo handles sales, Sage handles accounting — but there is no native connector between them. A manager closes a deal and manually transfers the data to Sage: client details, amount, line items, tax code, ledger account number. At 40–50 deals per month, this amounts to several hours of lost time and a persistent source of errors. A custom Kommo and Sage integration eliminates this gap entirely.


Why No Native Integration Exists

The Kommo marketplace has no official connector with any version of Sage: neither Sage Business Cloud Accounting nor Sage Intacct. Via Zapier or Make it is possible to set up a basic trigger — but it covers only the simplest scenario of creating a contact. Real business logic requires direct work with the Sage API.

It is important to understand that Sage is not a single product:

  • Sage Business Cloud Accounting — a cloud solution for small businesses with a REST API
  • Sage Intacct — a platform for mid-size and large businesses with a more complex API architecture and mandatory ledger account mapping
  • Sage 50 — a desktop solution with a limited API

This article describes integration with Sage Business Cloud Accounting and Sage Intacct — the two most widely used cloud versions.


The Key Sage Peculiarity: Ledger Accounts

Unlike QuickBooks or FreshBooks, Sage requires each invoice line item to be linked to a ledger account — an account in the company’s chart of accounts. This means that when transferring line items from Kommo to Sage, each item must contain not just a name and amount but also the correct ledger_account_id.

This is exactly where all attempts to set up the integration via Zapier break down: without ledger account mapping, the invoice in Sage either fails to create or is created with accounting errors. The custom integration resolves this through a configuration mapping table: each product or service type from the Kommo catalogue corresponds to a specific ledger account in Sage.


What the Custom Integration from Exceltic.dev Delivers

  • Pipeline stage trigger — the Sage invoice is created strictly when the deal moves to the required stage, such as “Raise Invoice” or “Contract Signed”
  • Ledger account mapping — each line item from the Kommo catalogue is automatically linked to the corresponding ledger account in Sage via a configuration table
  • Full line item mapping — name, quantity, unit price, discount, and tax code are passed to every Sage invoice line
  • Contact deduplication — before creating an invoice, the system checks for the client’s existence in Sage by email and uses the existing contact_id instead of creating a duplicate
  • Reverse synchronisation — when the invoice status changes in Sage (Paid, Void, Overdue), the corresponding field in the Kommo deal card is automatically updated
  • Sage Intacct support — for companies on Sage Intacct, the integration supports additional objects: dimensions, departments, locations
  • Link in the card — after the invoice is created, its number and direct link are written to a custom field in the Kommo deal

How the Integration Works — Technical Process

Connection Architecture

The integration is built on the stack Kommo Webhooks → Exceltic middleware → Sage Business Cloud API. Authentication with Sage is implemented via OAuth 2.0 with automatic refresh token renewal. Reverse synchronisation works via Sage Webhooks, which notify the middleware when an invoice status changes.

The key difference from QuickBooks or FreshBooks integrations is the mandatory initialisation on startup: the middleware loads the complete list of ledger accounts from Sage (GET /ledger_accounts) and builds the mapping table jointly with the client’s accountant. Without this step, correct invoice creation is impossible.

Step-by-Step Workflow

  1. Manager moves the deal to the “Raise Invoice” stage in Kommo
  2. Kommo sends a webhook with the deal ID to the middleware endpoint
  3. Middleware requests full deal data GET /api/v4/leads/{id} and contact data GET /api/v4/contacts/{id}
  4. System looks up the contact in Sage: GET /contacts?email={email}
  5. If the contact is not found — a new one is created: POST /contacts
  6. For each deal line item, middleware determines the ledger_account_id from the mapping table
  7. An Invoice object is formed with an array of line items, tax_rate_id, and payment_terms_id
  8. Invoice is created: POST /sales_invoices
  9. Sage returns the invoice_id and invoice number
  10. Middleware writes the number and link to the Kommo deal’s custom fields: PATCH /api/v4/leads/{id}
  11. When the invoice status changes in Sage — a webhook updates the Payment Status field in Kommo

What Happens on Error

On a Sage API error, the middleware saves the event to a queue with exponential backoff: retries after 1, 5, and 15 minutes. After three failed attempts, a task is created in Kommo for the responsible manager with an error description. A special case is a ledger account mapping error: if a deal line item is not found in the mapping table, the middleware does not create an invoice with incorrect data but immediately notifies the manager asking them to clarify the line item type.


Real-World Case

Financial consultant, 3 managers, ~35 deals per month, clients in the UK.

The company used Sage Business Cloud Accounting as its primary accounting system — the standard for small businesses in the UK. Kommo was used to manage the pipeline. Between them — a complete gap: every closed contract required manual invoice creation in Sage with the correct ledger account for each service (consultation, audit, report preparation).

The accountant spent 3–4 hours per week creating invoices and verifying the correctness of ledger account mapping. Approximately once a month, a mapping error occurred — the invoice was sent to the client with the wrong account code, requiring correction and resending.

After the integration was launched, invoices are created automatically within 5 seconds of the stage change in Kommo. Ledger account mapping is configured once and works without the accountant’s involvement. Payment status is visible directly in the Kommo pipeline.

Result: 14 hours per month returned to the accountant, 0 mapping errors in 6 months, invoice cycle reduced from 1–2 days to a matter of seconds.


Which Businesses This Suits

The integration is most relevant for companies in the UK and EU where Sage is the standard accounting system — especially in professional services: financial consulting, accounting firms, legal companies, and architectural practices.

For companies on Sage Intacct, the integration is especially valuable when there is a complex organisational structure: multiple legal entities, departments, and locations — all of which are mapped through Sage Intacct dimensions to the Kommo pipeline data.


Frequently Asked Questions

Why can’t I integrate Kommo and Sage via Zapier? Zapier can transfer basic contact data but cannot map line items to Sage ledger accounts. Without the correct ledger_account_id in each line, the invoice either fails to create or is created with accounting errors. This requires direct work with the Sage API and configuration logic on the middleware side.

Does the integration support Sage Intacct? Yes. Sage Intacct has its own API based on XML/SOAP (legacy version) and REST (new version). The Exceltic middleware supports both and additionally passes dimensions: department, location, project — from custom Kommo deal fields.

How is the ledger account mapping configured? When launching the integration, Exceltic.dev runs a session with the client’s accountant: loads the ledger account list from Sage and jointly builds the mapping table — which product or service type from the Kommo catalogue corresponds to which account code in Sage. After that, the mapping works automatically.

What happens if a deal has a new service type without a mapping? The middleware does not create an invoice with incorrect data. Instead, a task is created in Kommo asking to clarify the ledger account for the new line item. After the mapping is added, the invoice is created automatically.

How long does the Kommo and Sage integration take to develop? Basic integration with line item mapping and reverse synchronisation — 4–6 business days. Sage Intacct version with dimensions support — 8–12 business days. Exceltic.dev determines the exact timeline after the technical briefing.

If you want to automate Sage invoice creation from the Kommo pipeline — describe your task to the Exceltic.dev team. We will analyse the mapping and propose an architecture suited to your accounting structure.

More articles

All →