maesn
Use case

Company consolidation across every entity's own system

A group closes its books once, on data from subsidiaries that each run something different. Maesn connects every entity through one integration and returns their accounts and postings in the same shape, whichever system each one keeps.

One group, one integration
  • GermanyDATEV Rechnungswesen
  • NetherlandsExact Online
  • United KingdomXero
  • SwedenFortnox
one shape back
accountsjournalEntries

The two objects every entity in a mixed group can deliver.

Trusted by winning software teams
HubSpotTipaltiPaywiseRallyQredNordhealthFindityFintoClockinProvetHeroHolviLanes & PlanesHubSpotTipaltiPaywiseRallyQredNordhealthFindityFintoClockinProvetHeroHolviLanes & Planes
The problem

One closing, and a different ledger in every entity

A group can only consolidate what all of its entities can deliver. That turns the usual question upside down: not how many systems support an object, but how few of them survive across the ones your customer's group actually runs.

Connected systems that serve exactly one country
  • GermanyDATEV Unternehmen Online, DATEV Rechnungswesen, sevdesk, Lexware Office, BuchhaltungsButler, Xentral, Weclapp
  • Switzerlandbexio, Abacus
  • NetherlandsMoneybird, SnelStart
  • FrancePennylane
  • SpainHolded
  • United KingdomFreeAgent
  • SwedenFortnox
  • DenmarkDinero
Sixteen connected systems are available in a single country. A group that operates in more than one market therefore runs more than one system, whatever it would prefer.

The reason a group is on several systems is rarely a decision anybody made. Statutory formats, tax rules, audit requirements and the language the local accountant works in are national, so the software is too. A subsidiary in another country is a subsidiary on another system, and an acquisition arrives with whatever it was already running. That is a permanent condition rather than a migration backlog.

Readable on every entity, as the group grows
  • One entityDATEV RechnungswesenAccounts, Journal entries, Tax rates, Trial balance, Fiscal years5 of 8
  • Plus the Dutch oneExact OnlineAccounts, Journal entries, Tax rates3 of 8
  • Plus the UK oneXeroAccounts, Journal entries, Tax rates3 of 8
  • Plus the Swedish oneFortnoxAccounts, Journal entries2 of 8
Counted from the per-system documentation, for these four systems rather than for the best four. Each row shows what is readable on every entity added so far, which is what a group closing needs.

Every other integration question is a union. This one is an intersection, and the difference is not academic. A single strong system answers most of what a group report wants; the moment a second entity on a second system joins the closing, only what both can deliver counts, and the third and fourth entity subtract again. The consolidation is as capable as its least capable subsidiary.

What is left at the end is small and, fortunately, load-bearing: the chart of accounts and the postings. Everything a group report normally asks for on top of that, the balance per account, the journals, the segments, the fiscal year, is available on some entities and not on others, which for a consolidation is the same as not being available.

Building for the intersection rather than for the best entity is therefore not a compromise, it is the only version that produces a comparable group figure. A pipeline that reads balances where it can and postings where it cannot has two definitions of the same number, and reconciling those two is a worse problem than the one it set out to solve.

How Maesn solves it

One integration, one connection per entity

Onboarding a subsidiary should cost an authentication rather than a project. That is the mechanism this use case runs on, and it depends on how the keys are shaped.

One key per entity and system

An account key identifies one entity in one system, so a group holds as many as it has authenticated pairs. Onboarding a subsidiary is one authentication flow, not an integration project, and that is the difference this use case turns on.

X-API-KEYidentifies you
X-ACCOUNT-KEYidentifies one entity in one system
  1. 1Send the entity to the authentication flow
  2. 2They approve access in their own system
  3. 3Store the key that comes back, once
And sometimes the entity is a choice inside one login

Several systems hold more than one company behind a single account, so the entity is selected rather than connected again. Maesn can run that selection as part of the authentication instead of you passing it on every call.

Business CentralDATEV Unternehmen OnlineDATEV RechnungswesenDineroExact OnlineMoneybirdSage AccountingSage ActiveTwinfield

Documented for nine systems, listed as fourteen target identifiers: DATEV appears five times and Sage Active three, once per country.

Maesn treats that as the normal case. One key identifies your product, a second identifies one entity in one system, and adding the next subsidiary means running the authentication once more rather than writing an adapter. Where several entities live inside a single accounting installation, the entity is a selection instead, and that selection can be stored with the connection rather than repeated on every call. The object shapes that come back are the same regardless of which route an entity took, which is what the common data model is for, and the mechanics of the connection itself are described under unified authentication.

Volume is a group-shaped problem too, since a closing pulls a full period from every entity at once rather than a few records from one. Paginated, filterable reads keep that proportional, an incremental pull limits a refresh to what actually moved, and where a system answers a large read as a background job it arrives as a task you poll. The per-system differences that survive normalisation are the subject of customization handling.

What you get

Every entity's chart of accounts, and the field it arrives without

The group chart is where a consolidation is actually built. Here is what each entity hands over to map onto it, counted across the systems that publish their account fields.

Across the nineteen systems whose account fields are documented
accounts
  • name15 of 19What the account is called
  • code11 of 19The number you would map on
  • class7 of 19Asset, liability, income or expense
  • parentAccountId2 of 19Where it sits in the tree
A group chart is built by mapping each entity's accounts onto it. The field that says where an account already sits in its own tree is documented on two of the nineteen, so on the rest the list arrives flat and the hierarchy is yours to assert.

What that costs is a design decision made early or made twice. A mapping interface that expects to inherit a tree and one that expects to assert it are different pieces of software: the first shows a structure and asks you to confirm it, the second asks you to build one and then holds every entity against it. Discovering which you need after the first two entities are live is the expensive order.

That is more work to specify and, in practice, better. A group chart is a decision about how the group wants to see itself, and inheriting four different national hierarchies would mean reconciling four opinions before producing one. What matters is knowing it in week one, because a mapping interface designed for inherited hierarchies is a different piece of software from one designed to assert them.

The same applies to periods. Fiscal years are readable on two systems, so for most entities the period boundary is a configuration your onboarding captures rather than a value the API returns. Once the accounts are mapped and the periods are aligned, summing postings per account per period reproduces the balance for every entity, which is why the two objects that survive the intersection are enough. What you do with the result is the subject of financial analysis and forecasting.

Proof

A multi-entity product already runs on this connection

Published customer
Immocloud
Immocloud builds real estate management software on this API.

Maesn assigns them this use case in its own customer mapping. What they built with it is theirs to describe, so that is all this says.

Read the case study

Customers who have published a full account of what they built are collected on the case studies page.

Key facts

What a group closing reads, counted per system

The objects a consolidation touches, taken from the per-system documentation rather than from a summary.

Across the 29 connected systems
What you needTodayOn demandSystem cannot
Each entity's chart of accounts1982
The postings behind the figures10127
Receivables per entity13142
The rates each entity applies12143
How postings are grouped5159
Segments to report by3179
A balance per account2720
The period to compare on21215
Read from the per-system documentation. For a single integration the first number is what counts. For a group it is not: an object is usable only where every entity in the closing can deliver it, so the top two rows are the ones a consolidation can rely on and the rest are per-entity bonuses.

Read as a single-system list this table looks comfortable. Read as a group requirement it reads differently, and that is the shift this page exists to make. The chart of accounts at nineteen systems and the postings at ten are the two rows deep enough that a mixed group is likely to clear both. The balance per account at two and the period at two are not rows a group can plan around, however useful they are on the one entity that has them.

Two objects on this list also work in the other direction, which matters once a group wants its closing to end somewhere rather than only to be read. Postings can be written back as well as read, which is how a consolidated result gets recorded in a leading system, described under payment reconciliation, and the rates each entity applies are the subject of tax automation. Asking questions across all entities at once, rather than pulling each one, is what the MCP server is for.

The systems a European group meets most often on this route are worth reading before scoping, because their behaviour on the account and posting endpoints differs more than the summary suggests: DATEV Rechnungswesen, Exact Online, Twinfield, Xero and Microsoft Dynamics 365 Business Central.

Where the line runs

We deliver each entity, you produce the group

Consolidation is a judgement about how a group wants to see itself. What this connection owes you is the same raw material from every entity, in one shape.

Maesn delivers
  • One connection per entity
  • Accounts and postings, one shape
  • The rates each entity applies
  • Paginated, incremental reads
Your product owns
  • The group chart of accounts
  • How each entity maps onto it
  • Intercompany eliminations
  • Currency and period alignment

There is no consolidation object in this model, and no mapping or elimination step either. That is a deliberate boundary rather than a gap: the eliminations, the translation and the statutory result are exactly the parts a group has an opinion about, and a connection that decided them would be wrong for most groups most of the time.

What it does mean is that the value of this route is measured in what does not have to be built. A group with entities across four countries does not need four integration projects, four authentication models and four maintenance commitments; it needs one, plus a mapping table it would have written anyway. Where the closing produces postings that have to land back in a leading system, that write path is the same one used everywhere else, and what a partial response looks like when an entity's system omits a field is unified error handling.

One boundary matters because the category name invites the opposite reading: nothing here produces a consolidated balance sheet. It produces the same accounts and journalEntries from every entity in the group, in one shape, on a schedule you choose. The statement is built on top, in your product or in the tool the group already owns, and how it is hosted and secured on the way through is described on the security page. Closing a group month on entities that each keep their own ledger is the work of financial teams, not of the systems underneath them.

Company Consolidation FAQ

Common questions

Does Maesn consolidate the group accounts?

No, and the boundary decides what to build. There is no consolidation object, no elimination step and no group-chart mapping anywhere in the API. What arrives is each entity's own data in one shape; the group chart, the intercompany eliminations, the currency translation and the statutory result are produced by your product or by the consolidation tool the group already owns.

How many connections does a group with ten entities need?

One per entity and system pair. An account key identifies one entity in one target system, so ten entities on ten systems means ten keys, and ten entities on three systems still means ten keys unless several of them sit inside the same installation. Onboarding one is an authentication flow rather than an integration project, which is the part that makes this scale.

Some of our entities sit inside one accounting installation. Does that help?

Yes, and it is handled explicitly. Several systems hold more than one company behind a single login, and there the entity is a selection rather than another connection. Maesn can run that selection as part of the authentication and store it, so you do not pass a company identifier on every call. That is documented for nine systems today.

Why do our subsidiaries run different systems in the first place?

Mostly because of where they are. Sixteen connected systems are available in exactly one country, since statutory formats, tax rules and audit requirements are national. A group that operates in several markets ends up on several systems whatever it would prefer, and that is a permanent condition rather than a migration backlog.

What can we actually read from every entity, not just the best one?

Fewer objects than any single system suggests, because a group closing needs what is common to all of them. On a four-country group the intersection comes down to two: the chart of accounts and the postings. Those two are the honest foundation, and a consolidation built on them works everywhere. One built on trial balances works on two systems.

Can we get each entity's trial balance instead of its postings?

On two systems, and they do not return the same trial balance as each other. For a group that means the balance route is available for a minority of entities and never for all of them, so the postings are the route that generalises. Summing postings per account and per period reproduces the balance anyway, which is why the chart of accounts matters more here than the report does.

Does the chart of accounts arrive with its hierarchy?

Usually not, and this is the finding most likely to change a build plan. The field that says where an account sits in its own tree is documented on two of the nineteen systems whose account fields are published. On the rest the list arrives flat, so the hierarchy is something your mapping asserts rather than something you inherit. The account number, which is what most mappings key on, is on eleven.

How do we line up periods across entities with different fiscal years?

Not from the API on most systems. Fiscal years are readable on two of the twenty-nine connected systems, so for the rest the period boundary has to come from your own configuration, captured when the entity is onboarded. It is a small field on a setup form if you plan for it and a rework if you assume the API answers it.

Can we report by cost centre or segment across the group?

For named systems rather than in general. Reading the available segments as their own object is documented on three systems. Where a posting carries its segment inline, it comes with the posting instead, so a segmented group report is buildable entity by entity rather than as one guarantee across the group.

Is the data stored anywhere on the way through?

No. Requests pass through to each entity's system and the response is normalised on the way back, so there is no copy of any subsidiary's ledger held in between. For a group that matters twice over, because the data is both sensitive and spread across jurisdictions, and because a copy that goes stale is worse than no copy at all.

Build once on the Unified API.

See how company consolidation works for your integration, or dive into the technical reference.