Product and engineering teams ship one integration, not one per accounting system
Your customers keep their books in whichever system they already chose, and that choice is theirs rather than yours. Maesn puts one REST API in front of all of them, so what you ship is one integration instead of dozens.
- DATEVOAuth + client credentials, XML
- Xerotenant id per connection, REST
- sevdeskAPI token, its own field names
- and one client per system after that
Every system executes the same use-case, but they all do it differently
Every system reinvented the wheel: auth methods are different, object structure, multi-API calls required to retrieve or post one dataset, webhooks in availability or in how they work, user-based versus app-based, sync versus async API calls, API technologies that differ between REST, SOAP and XML/CSV uploads, qualification processes, limited documentation, missing sandboxes, different paginations, rate limits, data formats, developer access and much more.
require seven different sets of mandatory fields for the same expense
is how many ways those systems name the account the line books to
expect the amount net, against four that expect it gross, and the difference is the tax
One object, counted across the systems that support it. That is the work an estimate per connector does not contain, and expense sync sets it out field by field.
Integrating to a new system is always about getting to know new ways to build something, understanding the details and exploring the quirks that are not documented. That is time consuming and often something that can only be explored if you are getting really deep into a system and build up a technology partnership.
But is that really what you want to do? Especially if that is exactly what we have done already?
Everything unified, as if it were one system only
GET /invoices?limit=50X-API-KEY: <x-api-key> # your identifier against usX-ACCOUNT-KEY: <x-account-key> # your customers' identifier - received during authentication# The same call for every connected system. Which system answers# is decided by the account key, not by a branch in your code.
You integrate once, against one common data model. An invoice has the same field names and the same types whether it came from DATEV, Xero or sevdesk, and your product logic stops carrying a branch per vendor. A call like GET /invoices stays the same call, and which system answers it is a value you pass rather than a code path you maintain.
Connecting a customer is one flow rather than a project. Unified authentication absorbs the vendor differences that are real, an app registration here, a tenant selected during connect there, and tokens stay on our side. Where one installation carries a field nobody else asks for, customisation handling reaches past the model to the system's own endpoint, so an exception stays one request rather than a fork.
Everything engineers need to go live in days
Our Maesn features aim to unify everything that is possible, and for any use-case specific challenges we are there to help you.
- Common Data Model
A field-name translation per vendor, and the mapping table that grows with every system.
- Unified Authentication
A vendor login per system, plus the token lifecycle behind each one.
- Unified Pagination & Filtering
The paging loop per system, and the nightly full re-read that stands in for asking what changed.
- Unified Webhooks
One subscription and one event body, instead of a different vendor model per integration.
- Unified Error Handling
A failure dialect per system, and the support runbook that grows with every one you add.
- Asynchronous Processing
Your own rate limiting, sequencing and task tracking for the month-end run that does not behave.
- Unified Logging & Monitoring
Guessing which system failed for which customer at which moment, from your own logs.
- Customisation Handling
A fork when one installation carries a field nobody else asks for.
- MCP Server
Building an agent surface over accounting data yourself, once your product needs one.
Some systems don’t offer any developer sandboxes. For those, we run test environments that you can use.
- AbaBau
Made for engineers
HERO Software runs the back office for craft businesses, from the quote to the invoice, and more than 40.000 tradespeople work in it.
“The support provided is truly first class, with impressively quick response times. The documentation is thorough and easy to follow, which made integration a smooth process for me. I also appreciate the wide range of accounting integrations and endpoints available. It's clear that the endpoints are continuously being developed and expanded, which adds even more value to the platform.”


What arrives through the API, and what stays your product
A unified layer that is vague about its boundary costs more than one that is narrow about it.
- One REST API and one object model across the connected systems
- One connect flow per customer, plus tokens and their refresh
- A sandbox per system, including the ones with no free trial
- Vendor API changes absorbed centrally rather than in your release
- One event model and one signed event body
- When a record leaves your product, and what triggers it
- Which account, tax rate or dimension a line belongs to
- Reconciliation before a write, so a record is not written twice
- What your users see when a target system rejects something
- The workflow itself, from the quote to the posting
The decisions on the right are the ones that depend on what you built, and they should stay there. What the layer removes is the part that is the same for every product and different for every system. Invoice creation is the shortest example of both halves in one workflow, and the directory of connected systems shows what the right-hand column has to hold up against. How requests are processed and what is kept on the way through is on the security page.
Common questions
Why use Maesn instead of building the integrations ourselves?
Do we still have to deal with each system's data formats?
Do we get sandboxes, and for which systems?
Do we have to manage access tokens ourselves?
Is authentication the same across systems?
How do webhooks work here?
Does the API support filtering, ordering and pagination?
What happens when an ERP is heavily customised?
What happens when a vendor changes its API?
Is the documentation in English?
Build once on the Unified API.
See how one integration across every system works for your integration, or dive into the technical reference.











