Connect Xero to your AI, with the product open
A real setup guide, not marketing copy - what to click, what Xero's screen asks for, where your connector URL comes from, and exactly how a proposed change gets held for your approval before it ever reaches Xero.
What you need before you start
- A subscription to the Xero MCP connector - Starter, Growth or Business (see pricing). 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 (Plus or Pro, with Developer mode turned on), 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.
Open Settings > MCP
Sign in to Invio, go to Settings, then the MCP tab. You'll see three cards - Invio, Xero, and MYOB (coming soon). This guide covers the middle one.
Click Connect Xero
This takes you to Xero's own sign-in and consent screen at login.xero.com - not a page inside Invio. If you're not already signed in to Xero, it asks you to sign in first.
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).
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.
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.
Add it to your AI client
Claude: click Open in Claude right after generating - it pre-fills the connector for you. ChatGPT (Plus/Pro): 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.
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.
What Xero's screen actually asks for
Xero shows you this list itself, on its own screen, before you approve anything - this is what it means in plain English.
Your identity
Your name and email from Xero - used only to identify who connected, never decoded or shown anywhere in Invio today.
Invoices, quotes, credit notes
Read AND write - the connector can read these and, once you approve a draft, create or change one. This is the permission approval exists to control.
Contacts
Read AND write, for the same reason as invoices - contact changes go through the same approval queue.
Profit & loss, balance sheet, journals
Read-only for reports; journal entries carry a separate permission Invio also requests. Nothing here ever changes a report.
Your organisation's settings
Read-only. Invio never changes a Xero organisation's own settings.
Projects
Read-only, and only if you use Xero Projects.
Invio never asks for anything to do with payments or bank transactions - this connector never touches either, so we don't ask a customer, or their accountant, to hand over more of their ledger than we actually use.
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.
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 (Plus/Pro)
Turn on Developer mode in Settings, then add the same URL as a custom connector.
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 also shows up in Claude Code, but it does not work there automatically - Claude Code authorises each connector separately. In a Claude Code session, run /mcp, pick the Xero connector from the list, and approve it there too. Until you do, the tools are listed but calling one is refused.
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 → MCP, 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.
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.
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.
Disconnecting Xero
Two levels, depending on what you actually want to stop:
Revoke one connector
Settings → MCP → 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 → MCP → 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.