maesn
For developers

Webhooks in ERP and accounting: which systems push events

Webhooks make integrations event-driven, and in ERP and accounting they are the exception rather than the rule. This guide walks the systems Maesn connects: which push events natively, which model and payload style each one uses, and what happens on the ones that stay silent.

Dr. Themo Voswinckel, CEO and Co-Founder at Maesn
Dr. Themo Voswinckel
CEO and Co-Founder · · Updated
Illustration for Webhooks in ERP and Accounting: Which Systems Push Events
The concept

Webhooks enable event-driven integrations

A webhook is a mechanism that lets one system actively notify another when a specific event occurs. Instead of continuously querying an API to check whether data has changed, a webhook lets the source system push a notification as soon as something relevant happens, such as an invoice being created, a payment being booked or a customer record being updated.

Technically a webhook is usually an HTTP POST request sent to a predefined URL. The request contains information about the event and, depending on the system, additional context or data. This lets integrations react almost in real-time to changes while reducing the API traffic that polling causes. For integration-heavy environments, webhooks are a key enabler of scalable and responsive architectures.

Terms used below
Tenant
The software vendor offering the integration
User
A customer of that software vendor
App
The integration the tenant provides
Why it matters

Why they matter in ERP and accounting

ERP and accounting systems are often the system of record for critical business data. Changes in them usually have downstream effects on reporting, payments, CRM systems or operational workflows. Without webhooks, integrations rely on scheduled polling jobs that introduce delay, increase API load and complicate error handling.

Webhooks mitigate that by enabling near real-time updates and clearer event semantics. They make automation easier to build, reduce synchronisation latency and keep distributed systems consistent. In theory that makes them an ideal fit for ERP and accounting integrations. In practice their adoption in this domain has been slow.

The two models

The two webhook models ERP vendors use

Across ERP and accounting platforms two different webhook models have emerged, and understanding them is essential for designing reliable integrations.

App-based: one endpoint for every user

In an app-based model a software vendor configures a single webhook endpoint for an entire application. All events from all connected users are sent to that one endpoint, and each payload includes a user identifier so the receiving app can determine which user the event belongs to. This is common on accounting platforms with strong app marketplaces, such as QuickBooks Online and Xero. From the vendor’s perspective it simplifies management and scales well across thousands of small tenants. From yours it requires robust internal routing, security validation and user isolation.

User-based: a subscription per user

In a user-based model, subscriptions are created per user. Each one explicitly defines which events should be delivered and where they should be sent. This is more common in ERP and mid-market systems, where data isolation, permissions and compliance requirements are stricter. Systems such as Microsoft Dynamics 365 Business Central and weclapp follow this approach. It is more complex to manage and it offers finer control with clearer boundaries between user environments.

Payloads

How payloads differ between systems

Implementations also differ significantly in how much data they deliver. Some systems use a ping-and-pull approach, where the webhook only signals that something has changed and includes user and object identifiers. The receiving system then fetches the full data through the API in a second step. This pattern is common in enterprise-oriented ERPs and keeps payloads small and secure.

Other systems include meaningful business data directly in the payload. That can reduce the number of follow-up API calls and simplify processing, and it also increases payload size and places more responsibility on the sender. In our experience even extensive payloads often still miss information a real use case needs, which means a second API call is usually necessary anyway.

Why Maesn standardises on ping and pull
Following it everywhere keeps the event body free of business data: what travels is an identifier, and the data itself moves over an authenticated call you make. That is a consistency decision and a security property at the same time.
Trust

Delivering events is only half the job

Unifying webhooks across every ERP and accounting system solves coverage, and a callback URL is publicly reachable, which means anyone who learns it could POST a forged event to it. That is why every event Maesn delivers is signed with an HMAC-SHA256 signature in the X-MAESN-SIGNATURE header, so your endpoint can verify it came from us before acting on it.

System by system

Which systems support native webhooks

The overview below shows which systems provide native, vendor-supported outbound webhooks and how each one implements them. Systems without official support are listed explicitly rather than left out, because their absence is the finding.

Of the 27 systems assessed
10
push events natively
2
answer in their own way
15
stay silent
Every one of them delivers the same unified event through Maesn, which is why that column is a sentence here rather than a repeated cell.
SystemModelPayload
Exact OnlineUser-basedPing and pull
Business CentralUser-basedPing and pull
XeroApp-basedPing and pull
QuickBooks OnlineApp-basedEvent payload
Lexware OfficeUser-basedEvent payload
FreshBooksUser-basedEvent payload
MoneybirdUser-basedEvent payload
QontoUser-basedEvent payload
Visma e-conomicUser-basedEvent payload
weclappUser-basedEvent payload
Fortnox
Websockets instead of webhooks

Events arrive over a persistent connection rather than as discrete HTTP requests, which has to be kept alive, reconnected and scaled per customer. Maesn holds it and emits ordinary unified events from it.

Xentral
Beta, with a model of its own

Support exists but follows Xentral's own conventions and is still in beta, so the shape can change without notice. A change on their side is ours to absorb rather than yours to track.

No native outbound webhooks
AbacusbexioBuchhaltungsButlerDATEV RechnungswesenDATEV Unternehmen OnlineFreeAgentHoldedodooPennylaneSage AccountingSage ActivesevdeskSnelstartTwinfieldVisma eAccounting

Newer additions to the catalogue are still being assessed: BMD, Dinero, Fatture in Cloud, Procountor, Sage 50 Spain, SAP Cloud ERP, Spiris. They connect through the same unified event model as everything else; what is not yet written up is which of them publish a native webhook underneath.

This is also the reason a build-versus-buy estimate for webhooks is usually wrong. Support is not a question you can answer once per vendor. It is a question per object, per model and per payload style, and the answer changes when a vendor ships a release.

A neighbouring mechanism

Websockets are not webhooks

A few ERP and accounting systems, such as Fortnox, use websockets instead of webhooks to deliver change events. Websockets establish a persistent, bidirectional connection that streams events in real time, whereas webhooks rely on discrete HTTP requests sent when an event occurs.

Websockets can provide very low latency, and they introduce additional complexity: the connection has to be kept alive, reconnect logic has to be handled carefully, and scaling becomes harder across many customers. Webhooks are stateless, easier to secure and simpler to operate at volume, which is why they suit cross-system integrations better, while websockets are typically used in more controlled or vendor-specific scenarios.

Object coverage

Where native webhooks stop short

Even where systems support native webhooks, they often cover only a limited set of objects. It is common to see events for sales-related entities such as invoices or sales orders, while important purchasing objects such as purchase orders are not supported at all. That forces teams to combine webhooks and polling inside the same integration, which means two codepaths that fail in different ways.

Maesn addresses this by complementing native webhooks with synthetic webhooks. Unsupported objects are monitored through polling and emitted as unified webhook events, so coverage and behaviour stay consistent across every system.

One model

One event model across every system

Webhooks in ERP and accounting are fragmented, inconsistent and often missing entirely. Maesn answers that with user-based webhooks for every connected system, synthetic webhooks where native support is missing or partial, the same security-first ping-and-pull pattern everywhere and a consistent payload structure.

The result is that all webhooks behave the same across all systems. What your handler needs to know stops at the unified event model, and the differences catalogued above stay on our side of the connection, across every connected system.

The reason

Why so many systems still have none

Despite the advantages of event-driven integrations, many ERP and accounting systems still do not offer native, vendor-supported webhooks. That is often rooted in legacy architectures, a strong reliance on batch processing and strict audit or compliance requirements that make real-time event delivery harder to implement and maintain. Many products in this space were also designed around manual workflows rather than continuous system-to-system automation.

When native webhooks are missing, polling is often seen as the only viable alternative. It is technically straightforward, and it introduces delay, increases API traffic and makes integrations less reactive. Some systems, such as Odoo, close the gap with third-party or add-on solutions that simulate webhooks by polling internally and emitting events externally. Those improve responsiveness and typically come with recurring costs that often exceed 200 euros per user per month, which makes them expensive at scale. Most teams fall back to direct polling as the pragmatic option.

What it means

What this means for integration teams

For teams building across multiple ERP and accounting systems, the challenge is not handling webhooks themselves. It is dealing with inconsistent models, different payload strategies and the frequent absence of any webhook support at all. A workable strategy has to abstract those differences, combine event-driven delivery with a fallback where events do not exist, and offer one way to consume changes across systems.

FAQ

Frequently asked questions

What is a webhook and why does it matter for ERP integrations?

A webhook is an HTTP POST request sent automatically when a specific event occurs, such as an invoice being created or a payment being booked. Instead of polling an API repeatedly, your system receives updates in near real-time, which reduces API traffic and synchronisation delay.

What are the two main webhook models used by ERP vendors?

App-based webhooks send all user events to one central endpoint, which is common on platforms like QuickBooks Online and Xero. User-based webhooks create an individual subscription per user, which is common in systems like Microsoft Dynamics 365 Business Central. The two differ in what they ask of you for routing, security and scale.

What is the ping-and-pull pattern?

Some systems send only a notification that something changed, without the data itself. The receiving system then fetches the detail through a separate API call. That keeps payloads small and secure, and it is the pattern Maesn follows across every integration.

Why do many ERP systems still not support native webhooks?

Legacy architectures, batch processing models and strict compliance requirements make real-time event delivery harder to implement. Many ERP products were designed around manual workflows rather than continuous system-to-system automation.

What happens when native webhooks are missing?

Teams typically fall back to polling, which introduces delay and increases API load. Some platforms offer third-party add-ons that simulate webhooks, and those often cost more than 200 euros per user per month, which makes them impractical at scale.

How does Maesn handle webhook fragmentation across systems?

Maesn provides user-based webhooks for every connected ERP and accounting system. Where a system has no native webhook support, Maesn uses synthetic webhooks based on polling and emits them in the same standardised ping-and-pull format, so behaviour is consistent across every system.

One event model, every system

See how unified webhooks behave on the systems your customers run, or read the technical reference.