Connect Xero to AI

Built for a group running several Xero organisations, and useful for a single business too. Connect an organisation, then review proposed changes before they reach Xero.

Category AI tools By Invio

Connect a Xero organisation, add its connector URL to an MCP client, and review proposed writes before they reach Xero.

What you need before you start

An active 7-day free trial or a paid subscription to the Xero MCP connector - Starter, Pro or Growth (see pricing). The trial needs no card and covers up to 2 Xero organisations; nothing is charged unless you subscribe before it ends. Either way, this is a separate product from Invio's own invoicing plans, priced on how many Xero organisations you connect, not on invoicing features.
A Xero login with advisor-level, or standard-with-reports, access on every organisation you want to connect. You'll authorise through Xero's own sign-in screen, so this is about what YOUR Xero user can already see - Invio cannot grant you access to an organisation you don't already have it on.
An MCP-capable AI client - Claude, ChatGPT (drafting changes needs a Business, Enterprise or Edu workspace with Developer mode turned on; a personal Pro account can only read), or any other assistant that supports MCP as a remote connector.
A few minutes uninterrupted - the Xero sign-in step happens on a real Xero screen, not inside Invio, so you cannot do it half-way and come back later without starting that part again.

Connect Xero in 7 steps

Works the same on your phone or your computer.

1

Open Settings > AI connections

Sign in to Invio, go to Settings, then the MCP tab. You'll see three tabs - Invio, Xero, and MYOB (marked "Soon" - not clickable yet). This guide covers the middle one.

2

Choose your permissions, then click Connect Xero

Before you go anywhere near Xero, Invio's own picker lists every permission it can ask for - invoices, journals, reports, projects and your identity are ticked by default; recording payments and payroll are off unless you turn them on. Untick anything you do not want asked for. You can always come back and change this later from Settings > MCP > Xero, without losing your organisations or connector URLs. Clicking Connect takes you to Xero's own sign-in and consent screen at login.xero.com - not a page inside Invio - asking for exactly what you ticked, nothing more. If you're not already signed in to Xero, it asks you to sign in first.

3

Tick which organisation(s) to share

Xero lists every organisation your login can reach and lets you tick more than one before you continue - you do not need to repeat this whole flow once per entity. Xero also shows you, on its own screen, exactly what Invio is asking permission for (see the box below).

4

Land back on Settings, connected

Xero sends you straight back to Invio. The Xero card now lists every organisation you just authorised, each with its own "Connected" badge. Forgot one, or want to add a new entity later? Click Connect another organisation any time - it runs the same Xero screen again and adds to your list without touching what's already connected.

5

Generate your connector URL

Still on the Xero card, give it a label if you like (e.g. "My Claude") and click Generate connector URL. Read the next section before you do this - the URL it gives you is shown exactly once.

6

Add it to your AI client

Claude: click Open in Claude right after generating - it pre-fills the connector for you. ChatGPT (Developer mode): turn on Developer mode in Settings, then add the same URL as a custom connector. Any other MCP client: paste the URL wherever it asks for a custom/remote MCP server.

7

Ask a question first

Try something read-only, like "what's outstanding in [organisation name]?" - reads run straight through, no approval needed. Then try asking it to draft an invoice or change a contact, so you see the approval step (below) happen for real before you rely on it.

Settings > AI connections > Xero in Invio, before connecting - the tab strip with Invio, Xero and MYOB (marked Soon), and the explanation of what an MCP connector is and does

Settings → AI connections → Xero, before you have connected anything.

Run several Xero organisations?

You can tick more than one organisation on Xero's own screen the first time through (step 3 above) - there's no need to run the whole flow once per entity. Once you're back in Invio, the Xero card lists every organisation you authorised, each with its own badge.

Need to add another one later - a new entity, or one you skipped the first time? Click Connect another organisation on the Xero card any time. It runs Xero's consent screen again and adds to your list; it never touches or re-authorises what's already connected.

If you ever connect more organisations than your plan covers, the ones you connected earliest are the ones that stay usable - your AI assistant will tell you plainly if you ask about one that's currently over your plan's limit, rather than silently failing or guessing.

Your connector URL - shown once

When you click Generate connector URL, Invio creates a new, private link for this connection and shows it to you exactly once, in an amber box right on the Xero card. Copy it there and then - refresh the page, or navigate away, and it is gone for good (though your connection to Xero itself is unaffected - you would just need to generate a new URL).

The trap: the URL is the key, not an id next to it

Generating a connector genuinely returns two different things - an internal id, and the connector URL. Only the URL is what you paste into Claude, ChatGPT or any other client; the URL's last segment IS the actual key. On the Settings screen you will only ever see the URL (never a bare id next to it, on purpose), so following the screen itself avoids this - but it's worth knowing, because this exact mix-up has caught someone holding full context before: they copied the id, not the URL, and nothing worked until they went back and copied the right field.

Treat the URL like a password - anyone who has it can act as this connection inside Invio's guardrails (reads, and drafts that still need your approval - see below). You can see every connector URL you've ever generated in the "Active connectors" list below the amber box (label and dates only, never the URL itself again), and revoke any one of them instantly.

The Connector URLs card in Invio, showing a freshly generated Xero connector URL in an amber one-time-reveal box, with Open in Claude and ChatGPT settings buttons below it

The amber box only ever shows the real, freshly generated URL - never a placeholder.

Add it to Claude, ChatGPT, or anything else

Claude
Click Open in Claude right after generating your URL - it pre-fills the "add custom connector" screen for you. Or add it yourself: Settings → Connectors → Add custom connector, paste the URL.
ChatGPT (Developer mode)
Turn on Developer mode in Settings → Security and login, then add the same URL as a custom connector. OpenAI currently limits full read-and-write MCP connectors to ChatGPT Business, Enterprise and Edu workspaces, turned on by a workspace admin. On a personal ChatGPT Pro account, Developer Mode allows read-only MCP use.
Any other MCP client
If it supports MCP as a remote connector, paste the URL wherever it asks for one. We say plainly if a particular client hasn't been tested yet rather than promise a guide that isn't ready.
Using Claude Code, not just claude.ai in a browser?

A connector you add in claude.ai shows up automatically in Claude Code only when Claude Code is signed in with that same claude.ai subscription account - not when it is running on an API key, a long-lived setup token, or a third-party provider like Amazon Bedrock or Google Cloud. If you are signed in that way, run /mcp in a Claude Code session, pick the Xero connector from the list, and approve it there too - until you do, the tools are listed but calling one is refused. If you are on an API key or another provider instead, you will need to configure the connector for Claude Code directly rather than relying on it to appear from claude.ai.

A second, dead entry in Claude's desktop app (Cowork)

If you added this connector to Claude's desktop app before the connector was actually live, that attempt is left behind as a stale entry that never connects, sitting next to the working one you added afterwards. It does not fix itself. Open Claude's connector settings, find the older, non-working Xero entry, and remove it - keep the one that actually connects.

How approving a write actually works

Reads - invoice lists, a single invoice, contacts, profit & loss, balance sheet, who owes you money - run straight through. There is nothing to approve for a question.

A write - your assistant drafting a new invoice, or proposing a contact change - is different by design. It does not reach Xero. Invio holds it as a pending change and it appears in Settings → AI connections, under the Xero card, showing the exact organisation, a plain-language summary, and the exact payload Invio would send. You choose Approve & send to Xero or Reject.

Invio's Pending changes card, showing a real drafted invoice waiting for approval - the organisation, a plain-language summary, the exact JSON payload that would be sent to Xero, and Approve/Reject buttons

A real pending change - the exact payload, not just a description of it.

Approving asks you to confirm a second time, because it is irreversible the moment it happens - once you approve, Invio sends it to Xero and tells you plainly whether it succeeded. Rejecting throws the proposal away with a lighter confirmation; it was never going to change anything either way. If you leave a proposal untouched, it expires 24 hours after your assistant drafted it, and nothing happens to your Xero organisation on its own.

For an invoice, your approval here is normally the only approval anyone gives: it arrives in Xero already approved and ready to send, with a due date filled in. If you would rather look it over in Xero first, ask for that and it arrives as a draft there instead. Either way, Invio never emails the invoice to your customer - sending it is a separate step you take in Xero yourself, and this connector has no way to do it for you.

About that due date: if you do not give one, Invio uses your own default payment terms from Xero, and the approval card tells you which terms it used and what date they produced, so you can catch a wrong one before you approve. If your organisation has no default payment terms set, your assistant asks you for a due date rather than leaving it blank - Xero will not let anyone approve an invoice that has none.

If a write ever fails to reach Xero, or is still in the middle of sending, it does not just vanish - it shows up in a separate "Needs your attention" section on the same screen until you've seen it.

Approving from the chat: your assistant can now say "approve that" (or "reject it") itself, right here in the conversation, instead of you opening Settings. But only once you have clearly said so, in your own words - it will not infer approval from context, and it will never approve or reject anything speculatively. It still writes to Xero through the exact same approval this screen already uses, the exact same row, whichever way you act on it - Settings → MCP → Xero is unaffected and always shows everything either way.

Why we do it this way: a ledger is not a chat window. Your assistant can be fast and useful at drafting - it should never be the thing that decides what actually lands in your books. Even when it approves for you, it is only ever relaying a decision you already made out loud, not making one of its own.

What you can ask once connected

Three real questions against Xero's own Demo Company (NZ) sample data - not a mockup.

In Demo Company (NZ), who owes me money and how much?
NZ$18,196.38 is outstanding across 12 invoices, and NZ$12,372.63 of that is overdue. The largest is Ridgeway University at NZ$6,187.50 - all of it overdue. City Limousines has four invoices overdue too, the oldest due back on 27 June.
Of those, which one has been overdue the longest, and what should I chase first?
City Limousines has been waiting longest - its oldest invoice was due 27 June, and three more have followed since. Ridgeway University is the single biggest amount, NZ$6,187.50, entirely overdue. If you can only chase one today, chase City Limousines - it's been waiting longest. If you have time for a second, Ridgeway University is worth the most.
Draft an invoice in Demo Company (NZ) for Bayside Club, NZ$450 plus GST, for a callout on 8 September.
I haven't sent anything to Xero - I've drafted a sales invoice for Bayside Club, NZ$450 (excl. tax; Xero adds GST once it's created), for the 8 September callout. It's now waiting in your Xero connector's approval queue in Invio, with the exact details for you to check before anything happens. If nobody approves or rejects it, it expires on its own in 24 hours - nothing reaches Xero unless you say so.

These are Xero's own Demo Company (NZ) sample figures - Xero publishes that organisation as fictional data, not a real customer's books. The first two answers were produced by the live connector on 10 September 2026; the third shows what the connector actually returns for a drafted invoice.

Name the organisation when you ask something new, the way the first and third questions above do. With only one organisation connected, Invio uses it automatically; with more than one, it asks which one rather than guessing. A follow-up that reasons over an answer already on screen, like the middle question above, does not need to repeat it.

Prefer to watch it? Watch a real session.

Disconnecting Xero

Two levels, depending on what you actually want to stop:

Revoke one connector

Settings → AI connections → Xero → find it under "Active connectors" → Revoke. That one AI client loses access immediately; your Xero connection and any other connector URLs you've generated are untouched.

Disconnect Xero entirely

Settings → AI connections → Xero → Disconnect Xero. Every connector loses access to every organisation immediately, and anything sitting in your approval queue is cancelled. Your Invio invoicing data - invoices, clients, quotes - is not affected either way.

Questions about setup

I generated a URL and didn't copy it in time - what now?
Go back to Settings > AI connections > Xero and click Generate connector URL again. This does not affect any connector URL you already created and are using - each one works independently, and you can see every one you've generated (minus the URL itself) in the "Active connectors" list, with its own Revoke button.
Do I need advisor access on every organisation, or just one?
Every organisation you want to connect - Xero's consent screen only offers you organisations your own login already has advisor-level, or standard-with-reports, access to. If one you expected is missing from the list, that's a Xero permissions question, not an Invio one.
What happens if I revoke a connector while my AI is mid-conversation?
It loses access on its very next call. Revoke any connector from Settings > AI connections at any time - there is no separate confirmation step or delay, and it does not touch your underlying Xero connection or any other connector URL you've generated.
Does disconnecting Xero affect my Invio invoicing?
No. Disconnecting Xero (Settings > AI connections > Xero > Disconnect Xero) removes every connector's access to your Xero organisations immediately and cancels anything waiting in your approval queue - it has no effect on your own Invio invoices, clients or quotes.

Related guides

Connect your AI
Voice to invoice
All guides →

Not subscribed yet?

Choose and buy a plan right on the Xero card in Settings - no need to open a second page. It shows all three plans with their prices and a checkout button on each; picking one takes you straight into Xero's sign-in screen from step 3 above.

Or Book a 30-min demo and we'll walk it through with you.Still choosing where to work with Xero? Compare Xero-native options and Invio using dated sources and explicit verification limits.

Set up the Xero MCP connector - step-by-step guide | Invio