maesn

Xero API Integration

Xero is a cloud accounting platform used by small businesses and accounting firms across the UK, Ireland, Australia, New Zealand, the USA and Canada. Connect it through Maesn and you reach it with the same REST API and the same data model as every other supported system.

YOUR PRODUCT+26
Trusted by winning software teams
HubSpotTipaltiPaywiseRallyQredNordhealthFindityFintoClockinHEROHolviLanes & PlanesAgicapHubSpotTipaltiPaywiseRallyQredNordhealthFindityFintoClockinHEROHolviLanes & PlanesAgicap
Why it is fast

A Xero integration in days

Xero is well documented and pleasant to work against. What costs a team time is the housekeeping it expects around every call and every connection. Here is what that is, and what Maesn takes off the table.

Xero: Every call needs a tenant ID

Resolved once, attached always

Xero identifies the connected organisation with a tenant ID that has to travel with every request. Maesn resolves it at authentication, stores it with the connection and adds it to each call, so nothing Xero-specific reaches your code.

Xero: Tokens expire after 30 minutes

The token never reaches your code

Xero access tokens are short lived and have to be rotated actively, per connected organisation. Maesn holds the credentials and does that rotation behind the account key, so no part of your product stores a Xero token or tracks when it expires.

Xero: Webhooks arrive app-wide

Delivered per customer instead

Xero notifies your app, not your customer: one subscription covers every connection at once and you sort out who the event belongs to. Maesn turns that into per-customer events, so each callback carries one customer's data.

What reaches your code is a REST call and an account key. Teams go live in days, and the system after Xero is a configuration step rather than a second project.

A short call is usually enough to tell whether Maesn fits your use case.

Customer voice
40.000
tradespeople on HERO Software's platform

HERO Software builds against clear docs and real sandboxes

HERO Software digitises the back office for craft businesses, from the quote through to the invoice.

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.
Ricardas Kauneckas
Full Stack Engineer, HERO Software
Why companies choose Maesn

Three reasons to reach the Xero API through Maesn

Connecting Xero directly is a project you can finish. Keeping it connected, and then adding the next system, is the part that decides your roadmap.

01

The Xero-specific work stays here

Tenant resolution, short-lived tokens that have to be rotated and app-wide webhook routing are what every Xero integration has to solve. They are solved once, here, for every customer you connect.

02

Events arrive per customer

Xero notifies your app rather than your customer: one subscription fires for every connected organisation at once, and working out whose event it was is your problem. Maesn splits that stream, so each callback carries one customer and reaches you in the shape every other system uses.

03

The next system costs nothing

Once Xero runs, every other supported accounting and ERP system answers on the same interface. Your second integration is a configuration step.

App Store and partnership

Certified, listed and on the right Xero tier

Most providers stop at the API. Maesn does the technical enablement and the relationship, and on Xero the second one decides how far the first one gets you: an uncertified app is one of only two a customer can connect at all.

Technical enablement

One integration against the Unified API and one data model, identical to every other system Maesn supports. Your engineers meet the same interface here as they will for the next system.

Partnership support

Maesn takes you through the Xero app partner process, from setting the app up to the assessment and the App Store listing, and helps you land on the tier your use case actually needs.

Five Xero Partner Hub tiers
  1. Starter
  2. Core
  3. Plus
  4. Advanced
  5. Enterprise

What decides your tier

Connection count and data egress volume, so the tier follows how many customers you connect and how much you read from them.

What starts at Advanced

Journal entry endpoints and multi-company authentication are available from the Advanced tier upwards, which is worth knowing before you design around them.

The app is registered under your company, so the listing runs under your brand. Your name is what the customer sees when they connect.

Maesn runs the Xero app partner process alongside your integration.

Authentication

Your app on the Xero consent screen, our work behind it

Xero authenticates with OAuth, and the app your customers authorise is yours rather than Maesn's. You register it once in the developer portal and hand the credentials over, and Maesn runs the flow for every customer you connect after that.

Auth method
OAuth
Your own Xero app

One app, every customer. Maesn holds the credentials and the rotation behind your account key.

What Maesn holds for you
Your app credentials
The client id and secret are submitted once and used for every connection. Xero shows the secret a single time, so copy it before you leave the page.
Tokens and tenant
Xero expires an access token after 30 minutes, and the rotation for each connected organisation happens here rather than in your code. The tenant ID is stored with the connection and added to each request.

How that account key reaches you is itself part of unified authentication: the standard redirect to your callback URL, a response body, or a signed webhook event, so the key never has to travel in a query string.

How your customer connects
  1. 1

    Your customer starts in your product

    You send them into the flow and Maesn opens Xero's consent screen. It carries your app name, because the app is registered under your company, so the connection reads as yours.

  2. 2

    Xero returns to Maesn

    The redirect URL on your app points at Maesn's callback, so the code exchange and the first token happen here instead of in your backend. Nothing about OAuth reaches your code.

  3. 3

    You work with one account key

    Maesn stores the connection and returns an account key. From there every request carries your API key plus that account key, the same two headers you already send for every other system in the catalogue.

Every system in the catalogue authenticates differently, and Xero is the case where the flow is standard but the housekeeping around it is not. Unified authentication is what keeps that off your side: the redirect, the token lifecycle and the way the account key is handed back to you are all configurable there, and identical no matter which system a customer connects.

Staying in sync

App-wide Xero events, delivered per connected customer

Xero supports native webhooks, and two resources with two event types are wired through Maesn today. Maesn subscribes per connected customer and normalises the payloads, so the shape you handle is identical to every other system you integrate.

Resources2 available
ContactsInvoices
Event types2 available
CreatedUpdated

The setup has two halves and only the first is one-time: you enable the resource inside your Xero app, which covers every user of that app, and Maesn then registers a subscription per authenticated customer so each callback carries only that customer's events. Xero sends no delete events and no date filter on them, so anything outside contacts and invoices stays a polling job.

Two resources and two event types is a narrow window, and the systems around Xero draw it differently again. What one event model gives you is a single shape to parse rather than a single delivery: an invoice event from Xero and a scheduled read from a system that pushes nothing arrive as the same record, and only the freshness question is answered differently.

Before you start

What Xero requires up front

Xero puts three things in front of an integration, and all of them are easier to plan for than to discover halfway through a build.

A Xero account with administrator rights
It exists to manage your app and, later, your partnership. A free trial account is enough, and it does not have to be an account you otherwise use.
Your own Xero app, registered by you
You create it in Xero's developer portal as a web app, under your product's name, which is the name your customers read on the consent screen. The redirect URL points at Maesn's callback. Then you generate the client secret, which Xero shows exactly once, and send the client id and secret to Maesn.
Two uncertified apps per customer
Xero lets each organisation or practice connect at most two uncertified apps at the same time, so until yours is certified it competes for one of those two slots at every customer you want to reach. Certification through the app partner process removes that, and Maesn runs the process with you.

We walk through the app setup and the certification path with you.

The data model

One shape for Xero, and for the system after it

Xero is the system most products start with, which makes the shape it arrives in the shape the rest of your catalogue has to match. That is decided here rather than per system.

Corrections are narrower than reads

More objects can be read than written, and updates in place are limited to contacts and expenses. If your product edits records rather than posting new ones, that is the line to check first.

No object deletes by default

No object has delete enabled. Accounting practice expects corrections and cancellations as new documents anyway, so plan them that way rather than around a delete you would have to request.

Anything else is a request, not a dead end

Objects marked on demand are not missing, they are simply not enabled by default. Tell us which ones your use case needs and they get added.

Whatever you read comes back in the shared common data model, so an invoice from Xero has the same shape as an invoice from any other supported system, and the code you write here is the code you reuse for the next one.

Tell us which objects your use case needs and we will confirm what is possible.

Xero FAQ

Xero API questions

What is Xero?

Xero is a cloud accounting platform for small businesses and accounting firms, widely used in the UK, Ireland, Australia, New Zealand, the USA and Canada. It covers invoicing, bookkeeping, bank reconciliation, expense tracking and multi-currency reporting.

Do I need my own Xero app?

Yes. You register the app in Xero's developer portal, which is what puts your product's name on the consent screen your customers see, and you submit the client id and secret to Maesn once. Maesn runs the flow for every customer from there.

What is the Xero tenant ID and do I have to handle it?

Every Xero request has to carry the tenant ID of the connected organisation. Maesn resolves it during authentication, stores it with the connection and adds it to each call, so there is no Xero-specific handling left in your code.

How does Maesn handle Xero's token rotation?

Xero access tokens expire after 30 minutes and have to be rotated actively, and the refresh token rotates with them. Maesn holds the credentials for each connected organisation and does that rotation behind your account key, so your product never stores a Xero token and never has to know when one expired.

Does Xero support webhooks?

Yes, for contacts and invoices, with created and updated events. Xero sends them app-wide, so a single subscription covers every connection at once. Maesn turns that into per-customer events with the same payload shape as every other system you integrate.

Does my Xero app have to be certified?

Not for a first connection, but it decides how far you get. Xero allows an organisation or practice two uncertified apps at a time, so a customer you approach may already have both slots filled. Certification through the Xero app partner process takes your app out of that pool, and it is the same process that leads to an App Store listing. Maesn runs it with you.

What are the Xero Partner Hub tiers?

The Partner Hub has five tiers: Starter, Core, Plus, Advanced and Enterprise. They differ in connection limits and data egress volume, and journal entry endpoints as well as multi-company authentication start at the Advanced tier. Maesn helps you pick the tier your use case needs rather than the one that sounds safe.

Which data can I read and write in Xero?

Accounts, invoices, invoice lines, customers, suppliers, contacts, expenses, journal entries, payments, tax rates and booking proposals are supported today, with reads covering more objects than writes. Objects marked on demand are available on request.

Why integrate Xero through Maesn instead of directly?

Because the work does not stop at Xero. Direct means owning the OAuth app, the tenant ID on every call, the 30-minute token expiry, app-wide webhook routing and every future breaking change, for one system. Through Maesn you build once against one data model, and every other supported accounting and ERP system is then reachable on the same interface.
Ship your ERP and accounting integrations. Connect once.
Book a demo